svn commit: r278108 - head/sys/dev/gpio

Warner Losh imp at bsdimp.com
Wed Feb 4 00:22:50 UTC 2015


> On Feb 2, 2015, at 1:18 PM, Nathan Whitehorn <nwhitehorn at freebsd.org> wrote:
> 
> On 02/02/15 12:08, Ian Lepore wrote:
>> On Mon, 2015-02-02 at 11:24 -0800, Nathan Whitehorn wrote:
>>> Please don't condition things like this on FDT. They are useful on Open
>>> Firmware systems too.
>>> -Nathan
>>> 
>> 
>> Is there something defined for OFW?  The gpio code needs to work on
>> hint-based (not-FDT and not-OFW) mips systems too.
> 
> There isn't right now, so far as I'm aware, but there should be.
> -Nathan

It’s a one-liner in sys/conf/options to have DEV_OFWBUS defined
whenever ofwbus is in the kernel.

Warner


>> -- Ian
>> 
>> 
>>> On 02/02/15 11:22, Luiz Otavio O Souza wrote:
>>>> Author: loos
>>>> Date: Mon Feb  2 19:22:34 2015
>>>> New Revision: 278108
>>>> URL: https://svnweb.freebsd.org/changeset/base/278108
>>>> 
>>>> Log:
>>>>    Register the GPIO controller device reference on xref table for FDT systems.
>>>> 
>>>> Modified:
>>>>    head/sys/dev/gpio/gpiobus.c
>>>>    head/sys/dev/gpio/gpiobusvar.h
>>>>    head/sys/dev/gpio/ofw_gpiobus.c
>>>> 
>>>> Modified: head/sys/dev/gpio/gpiobus.c
>>>> ==============================================================================
>>>> --- head/sys/dev/gpio/gpiobus.c	Mon Feb  2 19:00:18 2015	(r278107)
>>>> +++ head/sys/dev/gpio/gpiobus.c	Mon Feb  2 19:22:34 2015	(r278108)
>>>> @@ -143,6 +143,9 @@ gpiobus_attach_bus(device_t dev)
>>>>   		device_delete_child(dev, busdev);
>>>>   		return (NULL);
>>>>   	}
>>>> +#ifdef FDT
>>>> +	ofw_gpiobus_register_provider(dev);
>>>> +#endif
>>>>   	bus_generic_attach(dev);
>>>> 
>>>>   	return (busdev);
>>>> @@ -152,6 +155,10 @@ int
>>>>   gpiobus_detach_bus(device_t dev)
>>>>   {
>>>> 
>>>> +#ifdef FDT
>>>> +	ofw_gpiobus_unregister_provider(dev);
>>>> +#endif
>>>> +
>>>>   	return (bus_generic_detach(dev));
>>>>   }
>>>> 
>>>> 
>>>> Modified: head/sys/dev/gpio/gpiobusvar.h
>>>> ==============================================================================
>>>> --- head/sys/dev/gpio/gpiobusvar.h	Mon Feb  2 19:00:18 2015	(r278107)
>>>> +++ head/sys/dev/gpio/gpiobusvar.h	Mon Feb  2 19:22:34 2015	(r278108)
>>>> @@ -93,6 +93,8 @@ gpio_map_gpios(device_t bus, phandle_t d
>>>>   }
>>>> 
>>>>   device_t ofw_gpiobus_add_fdt_child(device_t, phandle_t);
>>>> +void ofw_gpiobus_register_provider(device_t);
>>>> +void ofw_gpiobus_unregister_provider(device_t);
>>>>   #endif
>>>>   int gpio_check_flags(uint32_t, uint32_t);
>>>>   device_t gpiobus_attach_bus(device_t);
>>>> 
>>>> Modified: head/sys/dev/gpio/ofw_gpiobus.c
>>>> ==============================================================================
>>>> --- head/sys/dev/gpio/ofw_gpiobus.c	Mon Feb  2 19:00:18 2015	(r278107)
>>>> +++ head/sys/dev/gpio/ofw_gpiobus.c	Mon Feb  2 19:22:34 2015	(r278108)
>>>> @@ -217,6 +217,24 @@ ofw_gpiobus_parse_gpios(struct gpiobus_s
>>>>   	return (0);
>>>>   }
>>>> 
>>>> +void
>>>> +ofw_gpiobus_register_provider(device_t provider)
>>>> +{
>>>> +	phandle_t node;
>>>> +
>>>> +	node = ofw_bus_get_node(provider);
>>>> +	OF_device_register_xref(OF_xref_from_node(node), provider);
>>>> +}
>>>> +
>>>> +void
>>>> +ofw_gpiobus_unregister_provider(device_t provider)
>>>> +{
>>>> +	phandle_t node;
>>>> +
>>>> +	node = ofw_bus_get_node(provider);
>>>> +	OF_device_register_xref(OF_xref_from_node(node), NULL);
>>>> +}
>>>> +
>>>>   static struct ofw_gpiobus_devinfo *
>>>>   ofw_gpiobus_setup_devinfo(device_t dev, phandle_t node)
>>>>   {
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 



More information about the svn-src-head mailing list