On 2018-08-23 14:10, Martin Schiller wrote:
On 2018-08-23 12:17, John Crispin wrote:
On 23/08/18 11:53, Martin Schiller wrote:
The mcp23s08 drivers was moved from gpio to pinctrl "subsystem" in linux-4.13.

As linux-4.9 is still used for some targets, how to proceed with this mcp23s08 driver? Create a new (second) CONFIG option (kmod-pinctrl-mcp23s08) coexisting to the kmod-gpio-mcp23s08?

Or is it possible to get this handled by the existing CONFIG option and depend on the kernel version?
Any hints are welcome.

...

add an ifdef guarded sections that check the kernel version inside the
module mk files ?
    John

So I tried this, but "CompareKernelPatchVer" seems not working here:

diff --git a/package/kernel/linux/modules/other.mk
b/package/kernel/linux/modules/other.mk
index c4cf74d98b..3befc9cba8 100644
--- a/package/kernel/linux/modules/other.mk
+++ b/package/kernel/linux/modules/other.mk
@@ -224,6 +224,23 @@ endef
 $(eval $(call KernelPackage,gpio-dev))


+ifeq ($(strip $(call CompareKernelPatchVer,$(KERNEL_PATCHVER),ge,4.13.0)),1)
+define KernelPackage/pinctrl-mcp23s08
+  SUBMENU:=$(OTHER_MENU)
+  TITLE:=Microchip MCP23xxx I/O expander
+  DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core
+  KCONFIG:=CONFIG_PINCTRL_MCP23S08
+  FILES:=$(LINUX_DIR)/drivers/pinctrl/pinctrl-mcp23s08.ko
+  AUTOLOAD:=$(call AutoLoad,40,pinctrl-mcp23s08)
+endef
+
+define KernelPackage/pinctrl-mcp23s08/description
+ Kernel module for Microchip MCP23xxx SPI/I2C I/O expander
+endef
+
+$(eval $(call KernelPackage,pinctrl-mcp23s08))
+
+else
 define KernelPackage/gpio-mcp23s08
   SUBMENU:=$(OTHER_MENU)
   TITLE:=Microchip MCP23xxx I/O expander
@@ -238,7 +255,7 @@ define KernelPackage/gpio-mcp23s08/description
 endef

 $(eval $(call KernelPackage,gpio-mcp23s08))
-
+endif

 define KernelPackage/gpio-nxp-74hc164
   SUBMENU:=$(OTHER_MENU)


OK, so my next approach is this:

diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
index c4cf74d98b..bc97376c87 100644
--- a/package/kernel/linux/modules/other.mk
+++ b/package/kernel/linux/modules/other.mk
@@ -228,9 +228,13 @@ define KernelPackage/gpio-mcp23s08
   SUBMENU:=$(OTHER_MENU)
   TITLE:=Microchip MCP23xxx I/O expander
   DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core
-  KCONFIG:=CONFIG_GPIO_MCP23S08
-  FILES:=$(LINUX_DIR)/drivers/gpio/gpio-mcp23s08.ko
-  AUTOLOAD:=$(call AutoLoad,40,gpio-mcp23s08)
+  KCONFIG:= \
+       CONFIG_GPIO_MCP23S08 \
+       CONFIG_PINCTRL_MCP23S08
+  FILES:= \
+       $(LINUX_DIR)/drivers/gpio/gpio-mcp23s08.ko@lt4.13 \
+       $(LINUX_DIR)/drivers/pinctrl/pinctrl-mcp23s08.ko@ge4.13
+ AUTOLOAD:=$(call AutoLoad,40,gpio-mcp23s08@lt4.13 pinctrl-mcp23s08@ge4.13)
 endef

 define KernelPackage/gpio-mcp23s08/description


I also tried to use the "@ge4.13 / @lt4.13" flags for KCONFIG, but doesn't work for me, although it is used elsewhere.

Advantage of this solution is, that the package name is not changed and anything works like before. On the other hand, the mcp23s08 isn't a gpio driver anymore, it's a pinctrl driver now (>4.13).

- Martin



_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to