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

Nathan Whitehorn nwhitehorn at freebsd.org
Mon Feb 2 20:20:50 UTC 2015


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

> -- 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-all mailing list