On Tue, Apr 09, 2024 at 09:03:30PM +0300, Andy Shevchenko wrote: > On Tue, Apr 09, 2024 at 02:21:24PM +0100, Charles Keepax wrote: > > SPI devices can specify a cs-gpios property to enumerate their > > chip selects. Under device tree, a zero entry in this property can > > be used to specify that a particular chip select is using the SPI > > controllers native chip select, for example: > > > > cs-gpios = <&gpio1 0 0>, <0>; > > > > Here the second chip select is native. However, when using swnodes > > there is currently no way to specify a native chip select. The > > proposal here is to register a swnode_gpio_undefined software node, > > that can be specified to allow the indication of a native chip > > select. For example: > > > > static const struct software_node_ref_args device_cs_refs[] = { > > { > > .node = &device_gpiochip_swnode, > > .nargs = 2, > > .args = { 0, GPIO_ACTIVE_LOW }, > > }, > > { > > .node = &swnode_gpio_undefined, > > .nargs = 0, > > }, > > }; > > > > Register the swnode as the gpiolib is initialised and > > check in swnode_get_gpio_device if the returned node matches > > swnode_get_gpio_device() > sorry yeah will fix that up. > > swnode_gpio_undefined and return -ENOENT, which matches the behaviour > > of the device tree system when it encounters a 0 phandle. > > ... > > > +config GPIO_SWNODE_UNDEFINED > > + bool "Undefined swnode GPIOs" > > Why is this user visible? > Yeah a good shout no reason for it to be. > > + help > > + This adds a special place holder for software nodes to contain an > > + undefined GPIO reference, this is primarily used by SPI to allow a > > + list of GPIO chip selects to mark a certain chip select as being > > + controlled the SPI device's internal chip select mechanism and not > > + a GPIO. > > How are drivers supposed to work in case this is not selected? > > ... Well they don't :-) Thanks, Charles