From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Likely Subject: Re: [PATCH] mcspi: Add support for GPIO chip select lines Date: Thu, 23 Dec 2010 20:28:19 -0700 Message-ID: <20101224032819.GC2491@angua.secretlab.ca> References: <1b68c6791001272033q60dd31dbif4de285cd9bac83d@mail.gmail.com> <1292954195-20204-2-git-send-email-bgamari.foss@gmail.com> <871v58xf0k.fsf@gmail.com> <87y67fx5vb.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: beagleboard , linux-omap , David Brownell , Michael Hennerich , spi-devel-general , Eric Miao To: Ben Gamari Return-path: Content-Disposition: inline In-Reply-To: <87y67fx5vb.fsf@gmail.com> Sender: linux-omap-owner@vger.kernel.org List-Id: linux-spi.vger.kernel.org On Thu, Dec 23, 2010 at 09:27:20PM -0500, Ben Gamari wrote: > On Thu, 23 Dec 2010 17:37:12 -0700, Grant Likely wrote: > > On Thu, Dec 23, 2010 at 4:09 PM, Ben Gamari wrote: > > > The reason I left this up to the board is it's easy to foresee cases > > > where you want a non-trivial mapping between logical CS numbers and CS > > > pin states. In my case, I using a 2-to-4 multiplexer as the source of > > > chip select. > > > > Hi Ben, > > > > I understand and appreciate the motivation. However in practice, the > > gpio api is sufficient for pretty much any use case, even when the > > backing gpio controller driver ends up driving some oddball device > > with different constraints. The big downside to using a callback is > > that it forces all users to do the extra work of implementing the > > callback. With the gpio api, only the oddball cases have to do extra > > code (to adapt the custom device to the gpio api). > > I understand your concerns, but I'm not sure how to satisfy them without > crippling the design's ability to accomodate my use-case. I can't pass a > GPIO line per spi_board_info since in my case of a multiplexed CS > configuration a single pin's state does not uniquely determine the > desired CS. The only other option I can think of is that we somehow > provide a list of GPIOs for each bus and map the CS numbers to > permutations of GPIO states. Unfortunately, I don't know of any suitable > structure to put this GPIO list in. Perhaps I'm missing something obvious? Close, but not quite. Assign one gpio number to each cs state, and write a gpio controller driver that maps the linux-gpio number to the physical gpio state permutation. The mapping from gpio# to ss# is 1:1, but the driver behind the gpio# can do whatever you need it to do. g.