[06/10,V2] spi: Add SPI driver for mx233/mx28
Guenter Roeck
linux at roeck-us.net
Wed Aug 1 02:56:50 EDT 2012
On Wed, Aug 01, 2012 at 08:45:19AM +0200, Marek Vasut wrote:
> Dear Guenter Roeck,
>
> > On Wed, Aug 01, 2012 at 08:10:37AM +0200, Marek Vasut wrote:
> > > Dear Shawn Guo,
> > >
> > > > On Tue, Jul 31, 2012 at 10:42:28PM -0700, Guenter Roeck wrote:
> > > > > On Wed, Aug 01, 2012 at 01:58:56PM +0800, Shawn Guo wrote:
> > > > > > On Tue, Jul 31, 2012 at 10:29:47PM -0700, Guenter Roeck wrote:
> > > > > > > Anyone up for writing some patches ? If not, I'll do it.
> > > > > >
> > > > > > Go ahead.
> > > > >
> > > > > Ok, will do. It isn't that simple, actually, since at least some of
> > > > > the drivers also call spi_master_get(), and thus need two calls to
> > > > > spi_master_put() (or a call to spi_master_put and a call to kfree).
> > > >
> > > > Hmm, are you saying that there must be a spi_master_put call matching
> > > > spi_alloc_master? I think we only need to have spi_master_get and
> > > > spi_master_put matched.
> > >
> > > Naw, spi_master_get() does refcounting, spi_alloc_master() doesnt. You
> > > don't need to match spi_alloc_master() with spi_master_put()
> >
> > I must be missing something. Why do almost all spi drivers call it in the
> > error path, even if there is no call to spi_master_get ?
>
> To push the refcounting to 0, to deallocate the device, I'd say ...
>
Guess we are in violent agreement. The sequence would then either be
master = spi_alloc_device();
...
spi_master_put(master);
or
master = spi_alloc_device();
...
kfree(master);
which makes sense to me. Question still is why most drivers neither call kfree()
nor spi_master_put() in the remove function.
Thanks,
Guenter
More information about the linux-arm-kernel
mailing list