[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140114141523.GC11820@lee--X1>
Date: Tue, 14 Jan 2014 14:15:23 +0000
From: Lee Jones <lee.jones@...aro.org>
To: Dan Carpenter <dan.carpenter@...cle.com>
Cc: rogerable@...ltek.com, Samuel Ortiz <sameo@...ux.intel.com>,
Alex Dubov <oakad@...oo.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
driverdev-devel@...uxdriverproject.org, linux-mmc@...r.kernel.org,
linux-kernel@...r.kernel.org, wei_wang@...lsil.com.cn,
Chris Ball <cjb@...top.org>,
Maxim Levitsky <maximlevitsky@...il.com>
Subject: Re: [PATCH 1/3] mfd: Add realtek USB card reader driver
> [ Sorry, I am coming down with the flu today so I'm doing dorky things
> like reviewing review comments. I'm not sure how coherent I am. ]
Always welcome.
NB: I did this review in double-quick time, which may account for some
of the weird thought processes (or lack there of).
> > > +static void rtsx_usb_sg_timed_out(unsigned long data)
> > > +{
> > > + struct rtsx_ucr *ucr = (struct rtsx_ucr *)data;
> >
> > What's going to happen when your device runs 64bit?
> >
>
> I'm not sure I understand what you mean here. On linux sizeof(long) is
> always the same as sizeof(void *).
I had an odd moment where I thought we'd need long long for 64bit.
Nevermind.
> > > + if (cmd_len > IOBUF_SIZE)
> > > + return -EINVAL;
> > > +
> > > + if (cmd_len % 4)
> > > + cmd_len += (4 - cmd_len % 4);
> >
> > Please document in a comment.
>
> There is a kernel macro for this:
>
> cmd_len = ALIGN(cmd_len, 4);
>
> if (cmd_len > IOBUF_SIZE)
> return -EINVAL;
I had a feeling this was the intention, hence why I was asking for a
comment. But yes, if all this is doing is alignment then the kernel
macro is preferred.
> > > +
> > > +
> >
> > Extra '/n'
> >
>
> It weirds me out when you mix up '\n' and /n'.
Typos happen on occasion...
> > > +int rtsx_usb_ep0_write_register(struct rtsx_ucr *ucr, u16 addr,
> > > + u8 mask, u8 data)
> > > +{
> > > + u16 value = 0, index = 0;
> > > +
> > > + value |= 0x03 << 14;
> > > + value |= addr & 0x3FFF;
> > > + value = ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF);
> > > + index |= (u16)mask;
> > > + index |= (u16)data << 8;
> >
> > Lots of random numbers here, please #define for clarity and ease of
> > reading.
> >
>
> The only really random number is the 0x03, but yeah, it would help if
> that we a define.
See ---^
As I say, I just glossed over the code, thus didn't spend the time to
work out the arithmetic. Now I do, most of it is pretty self
explanatory. I would also like to see the SHIFT #defined, although
this may become superfluous once the 0x03 is clarified.
> addr |= 0x03 << 14;
>
> value = __swab16(addr);
> index = mask | (data << 8);
This is 100% better/clearer.
> > > +
> > > + dev_dbg(&intf->dev,
> > > + ": Realtek USB Card Reader found at bus %03d address %03d\n",
> > > + usb_dev->bus->busnum, usb_dev->devnum);
> > > +
> > > + ucr = kzalloc(sizeof(struct rtsx_ucr), GFP_KERNEL);
> >
> > s/struct rtsx_ucr/*ucr/
> >
> > Any reason for not using managed resources?
> >
> Roger, he means the devm_kzalloc().
That I do.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists