mfd: intel-soc-pmic: Allow module build
intel-soc-pmic driver can run as a module, too, when user carefully
loads it in the right order at the right moment. No need to restrict
to be only for built-in.
Along with this change, pwm and gpiod lookup add/remove calls have to
be exported.
Also, the dedicated Kconfig entry for intel_soc_pmic_bxtwc driver was
created since the bxtwc driver has its own platform_driver module
entry, and it's basically independent from intel-soc-pmic.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index a07ae9e..8660c66 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -3008,6 +3008,7 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
mutex_unlock(&gpio_lookup_lock);
}
+EXPORT_SYMBOL_GPL(gpiod_add_lookup_table);
/**
* gpiod_remove_lookup_table() - unregister GPIO device consumers
@@ -3021,6 +3022,7 @@ void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
mutex_unlock(&gpio_lookup_lock);
}
+EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table);
static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev)
{
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 066fea0..9b0cfc9 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -424,9 +424,9 @@
System Management Bus and General Purpose I/O.
config INTEL_SOC_PMIC
- bool "Support for Intel Atom SoC PMIC"
+ tristate "Support for Intel Atom SoC PMIC"
depends on GPIOLIB
- depends on I2C=y
+ depends on I2C
select MFD_CORE
select REGMAP_I2C
select REGMAP_IRQ
@@ -447,6 +447,17 @@
Select this option for supporting Dollar Cove TI PMIC device that is
found on Intel Cherrytrail SoC.
+config INTEL_SOC_PMIC_BXTWC
+ tristate "Support for Intel Broxton Whiskey Cove PMIC"
+ depends on GPIOLIB
+ depends on I2C
+ depends on INTEL_PMC_IPC
+ select MFD_CORE
+ select REGMAP_I2C
+ select REGMAP_IRQ
+ help
+ Say Y for supporting Intel Broxton Whiskey Cove PMIC device.
+
config MFD_INTEL_LPSS
tristate
select COMMON_CLK
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index d1491fb..2e9407f 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -206,9 +206,9 @@
obj-$(CONFIG_MFD_SKY81452) += sky81452.o
intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o
-intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o
obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o
obj-$(CONFIG_INTEL_SOC_PMIC_DC_TI) += intel-soc-pmic-dc-ti.o
+obj-$(CONFIG_INTEL_SOC_PMIC_BXTWC) += intel_soc_pmic_bxtwc.o
obj-$(CONFIG_MFD_MT6397) += mt6397-core.o
obj-$(CONFIG_MFD_ALTERA_A10SR) += altera-a10sr.o
diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
index 172ef82..1214d19 100644
--- a/drivers/pwm/core.c
+++ b/drivers/pwm/core.c
@@ -722,6 +722,7 @@ void pwm_add_table(struct pwm_lookup *table, size_t num)
mutex_unlock(&pwm_lookup_lock);
}
+EXPORT_SYMBOL_GPL(pwm_add_table);
/**
* pwm_remove_table() - unregister PWM device consumers
@@ -739,6 +740,7 @@ void pwm_remove_table(struct pwm_lookup *table, size_t num)
mutex_unlock(&pwm_lookup_lock);
}
+EXPORT_SYMBOL_GPL(pwm_remove_table);
/**
* pwm_get() - look up and request a PWM device