[Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build

Philippe Gerum rpm at xenomai.org
Thu Feb 1 11:30:48 CET 2018


On 01/31/2018 03:36 AM, Greg Gallagher wrote:
> Some SOCs will have two GPIO chips that require two independent drivers.  In my
> case I was working with the Zynq SOC and needed a driver for the gpios on the
> FPGA and a driver for the gpios available on the ARM core. This change allows
> for two rt gpio drivers to be built and loaded at the same time.
> The rt gpio driver will be renamed from xeno-gpio to the following:
> 
> xeno-gpio-bcm2835.ko
> xeno-gpio-mxc.ko
> xeno-gpio-sun8i-h3.ko
> xeno-gpio-zynq7000.ko
> 
> This also moves the gpio-core logic into the kernel image.
> ---
>  kernel/drivers/gpio/Kconfig       | 12 ++++++------
>  kernel/drivers/gpio/Makefile      | 22 ++++++++++++----------
>  kernel/drivers/gpio/gpio-xilinx.c |  4 ++--
>  3 files changed, 20 insertions(+), 18 deletions(-)
> 
> diff --git a/kernel/drivers/gpio/Kconfig b/kernel/drivers/gpio/Kconfig
> index b7efa54..48475f2 100644
> --- a/kernel/drivers/gpio/Kconfig
> +++ b/kernel/drivers/gpio/Kconfig
> @@ -1,7 +1,7 @@
>  menu "Real-time GPIO drivers"
>  
>  config XENO_DRIVERS_GPIO
> -       tristate "GPIO controller"
> +       bool "GPIO controller"
>         depends on GPIOLIB
>         help
>  
> @@ -11,7 +11,7 @@ if XENO_DRIVERS_GPIO
>  
>  config XENO_DRIVERS_GPIO_BCM2835
>  	depends on MACH_BCM2708 || ARCH_BCM2835
> -	bool "Support for BCM2835 GPIOs"
> +	tristate "Support for BCM2835 GPIOs"
>  	help
>  
>  	Enables support for the GPIO controller available from
> @@ -19,7 +19,7 @@ config XENO_DRIVERS_GPIO_BCM2835
>  
>  config XENO_DRIVERS_GPIO_MXC
>  	depends on GPIO_MXC
> -	bool "Support for MXC GPIOs"
> +	tristate "Support for MXC GPIOs"
>  	help
>  
>  	Suitable for the GPIO controller available from
> @@ -27,7 +27,7 @@ config XENO_DRIVERS_GPIO_MXC
>  
>  config XENO_DRIVERS_GPIO_SUN8I_H3
>  	depends on MACH_SUN8I && PINCTRL_SUN8I_H3
> -	bool "Support for SUN8I H3 GPIOs"
> +	tristate "Support for SUN8I H3 GPIOs"
>  	help
>  
>  	Suitable for the GPIO controller available from Allwinner's H3
> @@ -35,7 +35,7 @@ config XENO_DRIVERS_GPIO_SUN8I_H3
>  
>  config XENO_DRIVERS_GPIO_ZYNQ7000
>  	depends on ARCH_ZYNQ
> -	bool "Support for Zynq7000 GPIOs"
> +	tristate "Support for Zynq7000 GPIOs"
>  	help
>  
>  	Enables support for the GPIO controller available from
> @@ -43,7 +43,7 @@ config XENO_DRIVERS_GPIO_ZYNQ7000
>  
>  config XENO_DRIVERS_GPIO_XILINX
>  	depends on ARCH_ZYNQ
> -	bool "Support for Xilinx GPIOs"
> +	tristate "Support for Xilinx GPIOs"
>  	help
>  
>  	Enables support for the GPIO controller available from
> diff --git a/kernel/drivers/gpio/Makefile b/kernel/drivers/gpio/Makefile
> index 3737330..8648fcc 100644
> --- a/kernel/drivers/gpio/Makefile
> +++ b/kernel/drivers/gpio/Makefile
> @@ -1,12 +1,14 @@
>  ccflags-$(CONFIG_XENO_DRIVERS_GPIO_DEBUG) := -DDEBUG
>  
> -obj-$(CONFIG_XENO_DRIVERS_GPIO) += xeno_gpio.o
> -
> -xeno_gpio-y := gpio-core.o
> -
> -xeno_gpio-$(CONFIG_XENO_DRIVERS_GPIO_BCM2835) += gpio-bcm2835.o
> -xeno_gpio-$(CONFIG_XENO_DRIVERS_GPIO_MXC) += gpio-mxc.o
> -xeno_gpio-$(CONFIG_XENO_DRIVERS_GPIO_SUN8I_H3) += gpio-sun8i-h3.o
> -xeno_gpio-$(CONFIG_XENO_DRIVERS_GPIO_ZYNQ7000) += gpio-zynq7000.o
> -xeno_gpio-$(CONFIG_XENO_DRIVERS_GPIO_XILINX) += gpio-xilinx.o
> -
> +obj-$(CONFIG_XENO_DRIVERS_GPIO_BCM2835) += xeno-gpio-bcm2835.o
> +obj-$(CONFIG_XENO_DRIVERS_GPIO_MXC) += xeno-gpio-mxc.o
> +obj-$(CONFIG_XENO_DRIVERS_GPIO_SUN8I_H3) += xeno-gpio-sun8i-h3.o
> +obj-$(CONFIG_XENO_DRIVERS_GPIO_ZYNQ7000) += xeno-gpio-zynq7000.o
> +obj-$(CONFIG_XENO_DRIVERS_GPIO_XILINX) += xeno-gpio-xilinx.o
> +obj-$(CONFIG_XENO_DRIVERS_GPIO) += gpio-core.o
> +
> +xeno-gpio-bcm2835-y := gpio-bcm2835.o
> +xeno-gpio-mxc-y := gpio-mxc.o
> +xeno-gpio-sun8i-h3-y := gpio-sun8i-h3.o
> +xeno-gpio-zynq7000-y := gpio-zynq7000.o
> +xeno-gpio-xilinx-y := gpio-xilinx.o

Ok.

> diff --git a/kernel/drivers/gpio/gpio-xilinx.c b/kernel/drivers/gpio/gpio-xilinx.c
> index 72d4364..e982f5f 100644
> --- a/kernel/drivers/gpio/gpio-xilinx.c
> +++ b/kernel/drivers/gpio/gpio-xilinx.c
> @@ -19,13 +19,13 @@
>   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
>   */
>  #include <linux/module.h>
> -#include "gpio-core.h"
> +#include <rtdm/gpio.h>
>  
>  #define RTDM_SUBCLASS_XILINX  5
>  
>  static int __init xilinx_gpio_init(void)
>  {
> - 	return rtdm_gpiochip_scan_of(NULL, "xlnx,xps-gpio-1.00.a",
> +	return rtdm_gpiochip_scan_of(NULL, "xlnx,xps-gpio-1.00.a",
>                       RTDM_SUBCLASS_XILINX);
>  }
>  module_init(xilinx_gpio_init);
> 

Left over from patch #1?

-- 
Philippe.



More information about the Xenomai mailing list