|
|
@@ -0,0 +1,69 @@
|
|
|
+From de88e9b0354c2e3ff8eae3f97afe43a34f5ed239 Mon Sep 17 00:00:00 2001
|
|
|
+From: Jonas Gorski <[email protected]>
|
|
|
+Date: Sat, 13 May 2017 13:03:21 +0200
|
|
|
+Subject: [PATCH] regmap: make LZO cache optional
|
|
|
+
|
|
|
+Commit 2cbbb579bcbe3 ("regmap: Add the LZO cache support") added support
|
|
|
+for LZO compression in regcache, but there were never any users added
|
|
|
+afterwards. Since LZO support itself has its own size, it currently is
|
|
|
+rather a deoptimization.
|
|
|
+
|
|
|
+So make it optional by introducing a symbol that can be selected by
|
|
|
+drivers wanting to make use of it.
|
|
|
+
|
|
|
+Saves e.g. ~46 kB on MIPS (size of LZO support + regcache LZO code).
|
|
|
+
|
|
|
+Signed-off-by: Jonas Gorski <[email protected]>
|
|
|
+---
|
|
|
+I tried using google to find any users (even out-of-tree ones), but at
|
|
|
+best I found a single driver submission that was switched to RBTREE in
|
|
|
+subsequent resubmissions (MFD_SMSC).
|
|
|
+
|
|
|
+One could maybe also just drop the code because of no users for 5 years,
|
|
|
+but that would be up to the maintainer(s) to decide.
|
|
|
+
|
|
|
+ drivers/base/regmap/Kconfig | 5 ++++-
|
|
|
+ drivers/base/regmap/Makefile | 3 ++-
|
|
|
+ drivers/base/regmap/regcache.c | 2 ++
|
|
|
+ 3 files changed, 8 insertions(+), 2 deletions(-)
|
|
|
+
|
|
|
+--- a/drivers/base/regmap/Kconfig
|
|
|
++++ b/drivers/base/regmap/Kconfig
|
|
|
+@@ -4,9 +4,12 @@
|
|
|
+
|
|
|
+ config REGMAP
|
|
|
+ default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ)
|
|
|
++ select IRQ_DOMAIN if REGMAP_IRQ
|
|
|
++ bool
|
|
|
++
|
|
|
++config REGCACHE_COMPRESSED
|
|
|
+ select LZO_COMPRESS
|
|
|
+ select LZO_DECOMPRESS
|
|
|
+- select IRQ_DOMAIN if REGMAP_IRQ
|
|
|
+ bool
|
|
|
+
|
|
|
+ config REGMAP_AC97
|
|
|
+--- a/drivers/base/regmap/Makefile
|
|
|
++++ b/drivers/base/regmap/Makefile
|
|
|
+@@ -2,7 +2,8 @@
|
|
|
+ CFLAGS_regmap.o := -I$(src)
|
|
|
+
|
|
|
+ obj-$(CONFIG_REGMAP) += regmap.o regcache.o
|
|
|
+-obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-lzo.o regcache-flat.o
|
|
|
++obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-flat.o
|
|
|
++obj-$(CONFIG_REGCACHE_COMPRESSED) += regcache-lzo.o
|
|
|
+ obj-$(CONFIG_DEBUG_FS) += regmap-debugfs.o
|
|
|
+ obj-$(CONFIG_REGMAP_AC97) += regmap-ac97.o
|
|
|
+ obj-$(CONFIG_REGMAP_I2C) += regmap-i2c.o
|
|
|
+--- a/drivers/base/regmap/regcache.c
|
|
|
++++ b/drivers/base/regmap/regcache.c
|
|
|
+@@ -21,7 +21,9 @@
|
|
|
+
|
|
|
+ static const struct regcache_ops *cache_types[] = {
|
|
|
+ ®cache_rbtree_ops,
|
|
|
++#if IS_ENABLED(CONFIG_REGCACHE_COMPRESSED)
|
|
|
+ ®cache_lzo_ops,
|
|
|
++#endif
|
|
|
+ ®cache_flat_ops,
|
|
|
+ };
|
|
|
+
|