All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver
@ 2018-01-31  2:36 Greg Gallagher
  2018-01-31  2:36 ` [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash Greg Gallagher
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Greg Gallagher @ 2018-01-31  2:36 UTC (permalink / raw)
  To: xenomai

---
 kernel/drivers/gpio/Kconfig       | 10 +++++++++-
 kernel/drivers/gpio/Makefile      |  3 ++-
 kernel/drivers/gpio/gpio-xilinx.c | 40 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 51 insertions(+), 2 deletions(-)
 create mode 100644 kernel/drivers/gpio/gpio-xilinx.c

diff --git a/kernel/drivers/gpio/Kconfig b/kernel/drivers/gpio/Kconfig
index 81fc442..b7efa54 100644
--- a/kernel/drivers/gpio/Kconfig
+++ b/kernel/drivers/gpio/Kconfig
@@ -6,7 +6,7 @@ config XENO_DRIVERS_GPIO
        help
 
        Real-time capable GPIO module.
-      
+
 if XENO_DRIVERS_GPIO
 
 config XENO_DRIVERS_GPIO_BCM2835
@@ -41,6 +41,14 @@ config XENO_DRIVERS_GPIO_ZYNQ7000
 	Enables support for the GPIO controller available from
 	Xilinx's Zynq7000 SoC.
 
+config XENO_DRIVERS_GPIO_XILINX
+	depends on ARCH_ZYNQ
+	bool "Support for Xilinx GPIOs"
+	help
+
+	Enables support for the GPIO controller available from
+	Xilinx's softcore IP.
+
 config XENO_DRIVERS_GPIO_DEBUG
        bool "Enable GPIO core debugging features"
 
diff --git a/kernel/drivers/gpio/Makefile b/kernel/drivers/gpio/Makefile
index 7f28403..3737330 100644
--- a/kernel/drivers/gpio/Makefile
+++ b/kernel/drivers/gpio/Makefile
@@ -1,4 +1,3 @@
-
 ccflags-$(CONFIG_XENO_DRIVERS_GPIO_DEBUG) := -DDEBUG
 
 obj-$(CONFIG_XENO_DRIVERS_GPIO) += xeno_gpio.o
@@ -9,3 +8,5 @@ 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
+
diff --git a/kernel/drivers/gpio/gpio-xilinx.c b/kernel/drivers/gpio/gpio-xilinx.c
new file mode 100644
index 0000000..72d4364
--- /dev/null
+++ b/kernel/drivers/gpio/gpio-xilinx.c
@@ -0,0 +1,40 @@
+/**
+ * @note Copyright (C) 2017 Greg Gallagher <greg@embeddedgreg.com>
+ *
+ * This driver controls the gpio that can be located on the PL
+ * of the Zynq SOC
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#include <linux/module.h>
+#include "gpio-core.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",
+                     RTDM_SUBCLASS_XILINX);
+}
+module_init(xilinx_gpio_init);
+
+static void __exit xilinx_gpio_exit(void)
+{
+	rtdm_gpiochip_remove_of(RTDM_SUBCLASS_XILINX);
+}
+module_exit(xilinx_gpio_exit);
+
+MODULE_LICENSE("GPL");
+
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash
  2018-01-31  2:36 [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Greg Gallagher
@ 2018-01-31  2:36 ` Greg Gallagher
  2018-02-01 10:29   ` Philippe Gerum
  2018-01-31  2:36 ` [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build Greg Gallagher
  2018-02-01 10:26 ` [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Philippe Gerum
  2 siblings, 1 reply; 9+ messages in thread
From: Greg Gallagher @ 2018-01-31  2:36 UTC (permalink / raw)
  To: xenomai

If the device name from the device tree starts with a forward slash (/) the
rtdm device stores it in the registry including the forward slash.  When we
go to use that device and do the registry lookup we use a relative path from
/dev/rtdm which doesn't contain the forward slash and fails to find a match.
Open won't return an error but IO calls will fail.  To fix this when we
register an RTDM device skip the first character if it's a forward slash.

In my case the path from the device tree is
        /amba_pl/gpio@41200000/gpio905
which gets stored in the registry. When we want to use the device and look up
the device path in the registry we use
        amba_pl/gpio@41200000/gpio905
which won't find a match in the registry.

Tested on Zynq7000 gpio drivers
---
 kernel/cobalt/rtdm/device.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/kernel/cobalt/rtdm/device.c b/kernel/cobalt/rtdm/device.c
index 4533dfb..89e0815 100644
--- a/kernel/cobalt/rtdm/device.c
+++ b/kernel/cobalt/rtdm/device.c
@@ -91,9 +91,12 @@ struct rtdm_device *__rtdm_get_namedev(const char *path)
 	if (strncmp(path, "rtdm/", 5) == 0)
 		path += 5;
 
+	printk(KERN_ERR "path to bind %s\n", path);
 	ret = xnregistry_bind(path, XN_NONBLOCK, XN_RELATIVE, &handle);
-	if (ret)
+	if (ret) {
+		printk(KERN_ERR "xnreg bind fail %d\n", ret);
 		return NULL;
+	}
 
 	mutex_lock(&register_lock);
 
@@ -394,6 +397,7 @@ int rtdm_dev_register(struct rtdm_device *dev)
 	int ret, major, minor;
 	xnkey_t id;
 	dev_t rdev;
+	const char *dev_name;
 
 	secondary_mode_only();
 
@@ -446,8 +450,12 @@ int rtdm_dev_register(struct rtdm_device *dev)
 			ret = -ENOMEM;
 			goto fail;
 		}
-
-		ret = xnregistry_enter(dev->name, dev,
+		if (dev->name[0] == '/') {
+			dev_name = dev->name+1;
+		} else {
+			dev_name = dev->name;
+		}
+		ret = xnregistry_enter(dev_name, dev,
 				       &dev->named.handle, NULL);
 		if (ret)
 			goto fail;
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build
  2018-01-31  2:36 [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Greg Gallagher
  2018-01-31  2:36 ` [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash Greg Gallagher
@ 2018-01-31  2:36 ` Greg Gallagher
  2018-02-01 10:30   ` Philippe Gerum
  2018-02-01 10:26 ` [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Philippe Gerum
  2 siblings, 1 reply; 9+ messages in thread
From: Greg Gallagher @ 2018-01-31  2:36 UTC (permalink / raw)
  To: xenomai

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
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);
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver
  2018-01-31  2:36 [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Greg Gallagher
  2018-01-31  2:36 ` [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash Greg Gallagher
  2018-01-31  2:36 ` [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build Greg Gallagher
@ 2018-02-01 10:26 ` Philippe Gerum
  2 siblings, 0 replies; 9+ messages in thread
From: Philippe Gerum @ 2018-02-01 10:26 UTC (permalink / raw)
  To: Greg Gallagher, xenomai

On 01/31/2018 03:36 AM, Greg Gallagher wrote:
> ---
>  kernel/drivers/gpio/Kconfig       | 10 +++++++++-
>  kernel/drivers/gpio/Makefile      |  3 ++-
>  kernel/drivers/gpio/gpio-xilinx.c | 40 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 51 insertions(+), 2 deletions(-)

[snip]

> diff --git a/kernel/drivers/gpio/gpio-xilinx.c b/kernel/drivers/gpio/gpio-xilinx.c
> new file mode 100644
> index 0000000..72d4364
> --- /dev/null
> +++ b/kernel/drivers/gpio/gpio-xilinx.c
> @@ -0,0 +1,40 @@
> +/**
> + * @note Copyright (C) 2017 Greg Gallagher <greg@embeddedgreg.com>
> + *
> + * This driver controls the gpio that can be located on the PL
> + * of the Zynq SOC
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of the
> + * License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
> + */
> +#include <linux/module.h>
> +#include "gpio-core.h"
> +

The change below is required for this driver to build since recently,
due to moving gpio-core.h to a public header containing the generic GPIO
bits some client drivers may need. Other than that, this looks ok.

diff --git a/kernel/drivers/gpio/gpio-xilinx.c
b/kernel/drivers/gpio/gpio-xilinx.c
index 72d436435..cae88b62f 100644
--- a/kernel/drivers/gpio/gpio-xilinx.c
+++ b/kernel/drivers/gpio/gpio-xilinx.c
@@ -19,7 +19,7 @@
  * 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

-- 
Philippe.


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash
  2018-01-31  2:36 ` [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash Greg Gallagher
@ 2018-02-01 10:29   ` Philippe Gerum
  2018-02-01 15:21     ` Greg Gallagher
  0 siblings, 1 reply; 9+ messages in thread
From: Philippe Gerum @ 2018-02-01 10:29 UTC (permalink / raw)
  To: Greg Gallagher, xenomai

On 01/31/2018 03:36 AM, Greg Gallagher wrote:
> If the device name from the device tree starts with a forward slash (/) the
> rtdm device stores it in the registry including the forward slash.  When we
> go to use that device and do the registry lookup we use a relative path from
> /dev/rtdm which doesn't contain the forward slash and fails to find a match.
> Open won't return an error but IO calls will fail.  To fix this when we
> register an RTDM device skip the first character if it's a forward slash.
> 
> In my case the path from the device tree is
>         /amba_pl/gpio@41200000/gpio905
> which gets stored in the registry. When we want to use the device and look up
> the device path in the registry we use
>         amba_pl/gpio@41200000/gpio905
> which won't find a match in the registry.
> 

Good catch, thanks.

> Tested on Zynq7000 gpio drivers
> ---
>  kernel/cobalt/rtdm/device.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/kernel/cobalt/rtdm/device.c b/kernel/cobalt/rtdm/device.c
> index 4533dfb..89e0815 100644
> --- a/kernel/cobalt/rtdm/device.c
> +++ b/kernel/cobalt/rtdm/device.c
> @@ -91,9 +91,12 @@ struct rtdm_device *__rtdm_get_namedev(const char *path)
>  	if (strncmp(path, "rtdm/", 5) == 0)
>  		path += 5;
>  
> +	printk(KERN_ERR "path to bind %s\n", path);

Debug stuff to remove before merging.

-- 
Philippe.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build
  2018-01-31  2:36 ` [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build Greg Gallagher
@ 2018-02-01 10:30   ` Philippe Gerum
  2018-02-01 15:20     ` Greg Gallagher
  0 siblings, 1 reply; 9+ messages in thread
From: Philippe Gerum @ 2018-02-01 10:30 UTC (permalink / raw)
  To: Greg Gallagher, xenomai

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.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build
  2018-02-01 10:30   ` Philippe Gerum
@ 2018-02-01 15:20     ` Greg Gallagher
  0 siblings, 0 replies; 9+ messages in thread
From: Greg Gallagher @ 2018-02-01 15:20 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: Xenomai@xenomai.org

Yes, will fix that

On Thu, Feb 1, 2018 at 5:30 AM, Philippe Gerum <rpm@xenomai.org> wrote:
> 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.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash
  2018-02-01 10:29   ` Philippe Gerum
@ 2018-02-01 15:21     ` Greg Gallagher
  0 siblings, 0 replies; 9+ messages in thread
From: Greg Gallagher @ 2018-02-01 15:21 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: Xenomai@xenomai.org

Yep, sorry I thought I removed that. Will update

On Thu, Feb 1, 2018 at 5:29 AM, Philippe Gerum <rpm@xenomai.org> wrote:
> On 01/31/2018 03:36 AM, Greg Gallagher wrote:
>> If the device name from the device tree starts with a forward slash (/) the
>> rtdm device stores it in the registry including the forward slash.  When we
>> go to use that device and do the registry lookup we use a relative path from
>> /dev/rtdm which doesn't contain the forward slash and fails to find a match.
>> Open won't return an error but IO calls will fail.  To fix this when we
>> register an RTDM device skip the first character if it's a forward slash.
>>
>> In my case the path from the device tree is
>>         /amba_pl/gpio@41200000/gpio905
>> which gets stored in the registry. When we want to use the device and look up
>> the device path in the registry we use
>>         amba_pl/gpio@41200000/gpio905
>> which won't find a match in the registry.
>>
>
> Good catch, thanks.
>
>> Tested on Zynq7000 gpio drivers
>> ---
>>  kernel/cobalt/rtdm/device.c | 14 +++++++++++---
>>  1 file changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/kernel/cobalt/rtdm/device.c b/kernel/cobalt/rtdm/device.c
>> index 4533dfb..89e0815 100644
>> --- a/kernel/cobalt/rtdm/device.c
>> +++ b/kernel/cobalt/rtdm/device.c
>> @@ -91,9 +91,12 @@ struct rtdm_device *__rtdm_get_namedev(const char *path)
>>       if (strncmp(path, "rtdm/", 5) == 0)
>>               path += 5;
>>
>> +     printk(KERN_ERR "path to bind %s\n", path);
>
> Debug stuff to remove before merging.
>
> --
> Philippe.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build
  2018-02-02  2:23 Greg Gallagher
@ 2018-02-02  2:23 ` Greg Gallagher
  0 siblings, 0 replies; 9+ messages in thread
From: Greg Gallagher @ 2018-02-02  2:23 UTC (permalink / raw)
  To: xenomai

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 ++++++++++++----------
 2 files changed, 18 insertions(+), 16 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
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-02-02  2:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-31  2:36 [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Greg Gallagher
2018-01-31  2:36 ` [Xenomai] [PATCH 2/3] Handle device paths from the device tree that start with a forward slash Greg Gallagher
2018-02-01 10:29   ` Philippe Gerum
2018-02-01 15:21     ` Greg Gallagher
2018-01-31  2:36 ` [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build Greg Gallagher
2018-02-01 10:30   ` Philippe Gerum
2018-02-01 15:20     ` Greg Gallagher
2018-02-01 10:26 ` [Xenomai] [PATCH 1/3] Add Xilinx AXI gpio driver Philippe Gerum
  -- strict thread matches above, loose matches on Subject: below --
2018-02-02  2:23 Greg Gallagher
2018-02-02  2:23 ` [Xenomai] [PATCH 3/3] Allow for more then one rt gpio driver to be built and loaded at the same build Greg Gallagher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.