* [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(®ister_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 1/3] Add Xilinx AXI gpio driver
@ 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
---
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..e982f5f
--- /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 <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",
+ 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
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
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.