lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 4 Apr 2011 20:48:38 -0600
From:	Grant Likely <grant.likely@...retlab.ca>
To:	Jamie Iles <jamie@...ieiles.com>
Cc:	Anton Vorontsov <cbouatmailru@...il.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	LKML <linux-kernel@...r.kernel.org>,
	Russell King <linux@....linux.org.uk>,
	Arnd Bergmann <arnd@...db.de>, Nicolas Pitre <nico@...xnic.net>
Subject: Re: [PATCH] gpio: support for Synopsys DesignWare APB GPIO

On Sun, Apr 03, 2011 at 04:22:44PM +0100, Jamie Iles wrote:
> Hi Grant,
> 
> On Sun, Apr 03, 2011 at 08:47:25AM -0600, Grant Likely wrote:
> > On Sun, Apr 3, 2011 at 8:07 AM, Jamie Iles <jamie@...ieiles.com> wrote:
> > > My first idea would be to have something like:
> > >
> > > struct mmio_gpio_bank {
> > >        unsigned int            ngpio;
> > >        unsigned long           set_offs;
> > >        unsigned long           clr_offs;
> > >        unsigned long           dout_offs;
> > >        unsigned long           din_offs;
> > >        unsigned long           dir_offs;
> > > };
> > >
> > > struct mmio_gpio_pdata {
> > >        size_t                  bus_width_bits;
> > >        int                     gpio_base;
> > >        unsigned int            nr_banks;
> > >        struct mmio_gpio_bank   banks[];
> > > };
> > 
> > As discussed earlier in the thread, you probably don't need to support
> > multiple banks with this driver.  Instead, create a separate device
> > instance for each bank.
> 
> The reason I proposed this was for controllers where the registers 
> aren't grouped together for each bank.  For example, the Synopsys block 
> has:
> 
> 	0x00-0x08 bank A control registers
> 	0x0c-0x14 bank B control registers
> 	...
> 	0x50	  bank A input register
> 	0x54	  bank B input register.
> 
> So when you mentioned before using a single register resource with 
> offsets I understood it to be something like what I've proposed 
> otherwise multiple banks would have overlapping resources (or the 
> resource would just be used to indicate the start address rather than 
> start + end).

That may be a problem for request_mem_region() which would indeed
prevent the driver from specifying the full register range with
offsets inside it.  I suspect that the platform_bus_type will inhibit
two platform_devices with overlapping regions from getting registered.
Fair enough, that is a pretty strong argument for Anton's model.  I
don't think it would be a good idea to try and work around it by
making the resource only include the start address.

It does mean some gymnastics for a device tree binding to figure out
which registers are present, but the appropriate behaviour could be
selected by a set of compatible values for each kind of register
interface.

> 
> Also, it's not clear here but this would create one gpio_chip per bank.

And that's bad why?  :-)

g.

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ