From 96f39119815028073583e4fca3a9c5fe9141e998 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Thu, 3 Jan 2013 18:39:50 +0000
Subject: [PATCH] kernel: move regmap bloat out of the kernel image if it is
 only being used in modules

SVN-Revision: 34999
---
 package/kernel/modules/other.mk               |  9 +++--
 .../patches-3.3/270-regmap_dynamic.patch      | 21 ++++++++++
 .../patches-3.6/270-regmap_dynamic.patch      | 37 ++++++++++++++++++
 .../patches-3.7/259-regmap_dynamic.patch      | 39 +++++++++++++++++++
 4 files changed, 103 insertions(+), 3 deletions(-)
 create mode 100644 target/linux/generic/patches-3.3/270-regmap_dynamic.patch
 create mode 100644 target/linux/generic/patches-3.6/270-regmap_dynamic.patch
 create mode 100644 target/linux/generic/patches-3.7/259-regmap_dynamic.patch

diff --git a/package/kernel/modules/other.mk b/package/kernel/modules/other.mk
index ed72f521eb6..2374d191a98 100644
--- a/package/kernel/modules/other.mk
+++ b/package/kernel/modules/other.mk
@@ -698,12 +698,15 @@ $(eval $(call KernelPackage,acpi-button))
 define KernelPackage/regmap
   SUBMENU:=$(OTHER_MENU)
   TITLE:=Generic register map support
+  DEPENDS:=+kmod-lib-lzo
   KCONFIG:=CONFIG_REGMAP=y \
 	   CONFIG_REGMAP_SPI \
 	   CONFIG_REGMAP_I2C
-  FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko \
-	 $(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko
-  AUTOLOAD:=$(call AutoLoad,10,regmap-i2c regmap-spi)
+  FILES:= \
+	$(LINUX_DIR)/drivers/base/regmap/regmap.ko \
+	$(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko \
+	$(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko
+  AUTOLOAD:=$(call AutoLoad,10,regmap regmap-i2c regmap-spi)
 endef
 
 define KernelPackage/regmap/description
diff --git a/target/linux/generic/patches-3.3/270-regmap_dynamic.patch b/target/linux/generic/patches-3.3/270-regmap_dynamic.patch
new file mode 100644
index 00000000000..eaa6dbf367a
--- /dev/null
+++ b/target/linux/generic/patches-3.3/270-regmap_dynamic.patch
@@ -0,0 +1,21 @@
+--- a/drivers/base/regmap/Kconfig
++++ b/drivers/base/regmap/Kconfig
+@@ -3,15 +3,16 @@
+ # subsystems should select the appropriate symbols.
+ 
+ config REGMAP
+-	default y if (REGMAP_I2C || REGMAP_SPI)
+ 	select LZO_COMPRESS
+ 	select LZO_DECOMPRESS
+-	bool
++	tristate
+ 
+ config REGMAP_I2C
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_SPI
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_IRQ
diff --git a/target/linux/generic/patches-3.6/270-regmap_dynamic.patch b/target/linux/generic/patches-3.6/270-regmap_dynamic.patch
new file mode 100644
index 00000000000..d0c1a82b50a
--- /dev/null
+++ b/target/linux/generic/patches-3.6/270-regmap_dynamic.patch
@@ -0,0 +1,37 @@
+--- a/drivers/base/regmap/Kconfig
++++ b/drivers/base/regmap/Kconfig
+@@ -3,19 +3,21 @@
+ # subsystems should select the appropriate symbols.
+ 
+ config REGMAP
+-	default y if (REGMAP_I2C || REGMAP_SPI)
+ 	select LZO_COMPRESS
+ 	select LZO_DECOMPRESS
+ 	select IRQ_DOMAIN if REGMAP_IRQ
+-	bool
++	tristate
+ 
+ config REGMAP_I2C
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_SPI
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_MMIO
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_IRQ
+--- a/include/linux/regmap.h
++++ b/include/linux/regmap.h
+@@ -43,7 +43,7 @@ struct reg_default {
+ 	unsigned int def;
+ };
+ 
+-#ifdef CONFIG_REGMAP
++#if IS_ENABLED(CONFIG_REGMAP)
+ 
+ enum regmap_endian {
+ 	/* Unspecified -> 0 -> Backwards compatible default */
diff --git a/target/linux/generic/patches-3.7/259-regmap_dynamic.patch b/target/linux/generic/patches-3.7/259-regmap_dynamic.patch
new file mode 100644
index 00000000000..3c306520172
--- /dev/null
+++ b/target/linux/generic/patches-3.7/259-regmap_dynamic.patch
@@ -0,0 +1,39 @@
+--- a/drivers/base/regmap/Kconfig
++++ b/drivers/base/regmap/Kconfig
+@@ -3,20 +3,23 @@
+ # subsystems should select the appropriate symbols.
+ 
+ config REGMAP
+-	default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_MMIO || REGMAP_IRQ)
+ 	select LZO_COMPRESS
+ 	select LZO_DECOMPRESS
+ 	select IRQ_DOMAIN if REGMAP_IRQ
+-	bool
++	tristate
+ 
+ config REGMAP_I2C
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_SPI
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_MMIO
++	select REGMAP
+ 	tristate
+ 
+ config REGMAP_IRQ
++	select REGMAP
+ 	bool
+--- a/include/linux/regmap.h
++++ b/include/linux/regmap.h
+@@ -43,7 +43,7 @@ struct reg_default {
+ 	unsigned int def;
+ };
+ 
+-#ifdef CONFIG_REGMAP
++#if IS_ENABLED(CONFIG_REGMAP)
+ 
+ enum regmap_endian {
+ 	/* Unspecified -> 0 -> Backwards compatible default */
-- 
GitLab