Hello, On Saturday, September 30, 2017 1:15:38 PM CEST Bernd Edlinger wrote: > Absolutely it looks and feels like a general-purpose I/O facility. > It can be used to control arbitrary logic functions. Hm, Is it possible to differenciate it from a "syscon" device? "System controller node represents a register region containing a set of miscellaneous registers. The registers are not cohesive enough to represent as any specific type of device. The typical use-case is for some other node's driver, or platform-specific code, to acquire a reference to the syscon node (e.g. by phandle, node path, or search using a specific compatible value), interrogate the node (or associated OS driver) to determine the location of the registers, and access the registers directly." <http://elixir.free-electrons.com/linux/latest/source/Documentation/devicetree/bindings/mfd/syscon.txt> > >> Instantiate this in the device tree as: > >> > >> gpio3: gpio@ff706010 { > >> #address-cells = <1>; > >> #size-cells = <0>; > >> compatible = "altr,fpgamgr-gpio"; > >> reg = <0xff706010 0x8>; > >> status = "okay"; > >> > >> portd: gpio-controller@0 { > >> compatible = "altr,fpgamgr-gpio-output"; > >> gpio-controller; > >> #gpio-cells = <2>; > >> reg = <0>; > >> }; > >> > >> porte: gpio-controller@1 { > >> compatible = "altr,fpgamgr-gpio-input"; > >> gpio-controller; > >> #gpio-cells = <2>; > >> reg = <1>; > >> }; > > > > So one port is output-only and one is input-only? > > > > Fair enough. The driver seemd fairly simple. So, You could actually get away with just adding the "altr,fpgamgr-gpio" compatible string to gpio-mmio.c's bgpio_of_match struct at [0] and change the dt to something like this: portd: gpio@ff706010 { compatible = "altr,fpgamgr-gpio"; reg = <0xff706010 0x4>; reg-names = "dat"; gpio-controller; #gpio-cells = <2>; } porte: gpio@ff706014 { compatible = "altr,fpgamgr-gpio"; reg = <0xff706014 0x4>; reg-names = "dat"; gpio-controller; #gpio-cells = <2>; no-output; } I added "no-output" property to the "porte" gpio definition. This property will force the direction of all of porte gpios to "in". (Which based on the "input", is what you want?) Note: If you need any insperation for the missing Device-tree binding document, you can look at: wd,mbl-gpio.txt [1] and ni,169445-nand-gpio.txt [2]. Regards, Christian [0] <https://github.com/torvalds/linux/blob/master/drivers/gpio/gpio-mmio.c#L575> [1] <https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/gpio/wd%2Cmbl-gpio.txt [2] <https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/gpio/ni%2C169445-nand-gpio.txt> -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html