mfd: sec: Merge separate core and irq modules
authorAndré Draszik <andre.draszik@linaro.org>
Wed, 9 Apr 2025 20:37:31 +0000 (21:37 +0100)
committerLee Jones <lee@kernel.org>
Fri, 23 May 2025 07:48:34 +0000 (08:48 +0100)
There is no reason to have these two kernel modules separate. Having
them merged into one kernel module also slightly reduces memory
consumption and module load times a little.

mapped size (lsmod):
         before:             after:
    sec_core   20480    sec_core   24576
    sec_irq    16384
    ----------------
    total      36864

Section sizes (size -A):
         before:             after:
    sec_core    6780    sec_core   13239
    sec_irq     8046
    ----------------
    Total      14826

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Link: https://lore.kernel.org/r/20250409-s2mpg10-v4-10-d66d5f39b6bf@linaro.org
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/Makefile
drivers/mfd/sec-common.c [new file with mode: 0644]
drivers/mfd/sec-core.c [deleted file]
drivers/mfd/sec-irq.c

index 6c35be5..79495f9 100644 (file)
@@ -229,7 +229,8 @@ obj-$(CONFIG_MFD_RK8XX)             += rk8xx-core.o
 obj-$(CONFIG_MFD_RK8XX_I2C)    += rk8xx-i2c.o
 obj-$(CONFIG_MFD_RK8XX_SPI)    += rk8xx-spi.o
 obj-$(CONFIG_MFD_RN5T618)      += rn5t618.o
-obj-$(CONFIG_MFD_SEC_CORE)     += sec-core.o sec-irq.o
+sec-core-objs                  := sec-common.o sec-irq.o
+obj-$(CONFIG_MFD_SEC_CORE)     += sec-core.o
 obj-$(CONFIG_MFD_SEC_ACPM)     += sec-acpm.o
 obj-$(CONFIG_MFD_SEC_I2C)      += sec-i2c.o
 obj-$(CONFIG_MFD_SYSCON)       += syscon.o
diff --git a/drivers/mfd/sec-common.c b/drivers/mfd/sec-common.c
new file mode 100644 (file)
index 0000000..782dec1
--- /dev/null
@@ -0,0 +1,314 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *                http://www.samsung.com
+ * Copyright 2025 Linaro Ltd.
+ *
+ * Samsung SxM core driver
+ */
+
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
+#include <linux/interrupt.h>
+#include <linux/mfd/core.h>
+#include <linux/mfd/samsung/core.h>
+#include <linux/mfd/samsung/irq.h>
+#include <linux/mfd/samsung/s2mps11.h>
+#include <linux/mfd/samsung/s2mps13.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/pm.h>
+#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
+#include "sec-core.h"
+
+static const struct mfd_cell s5m8767_devs[] = {
+       { .name = "s5m8767-pmic", },
+       { .name = "s5m-rtc", },
+       {
+               .name = "s5m8767-clk",
+               .of_compatible = "samsung,s5m8767-clk",
+       },
+};
+
+static const struct mfd_cell s2dos05_devs[] = {
+       { .name = "s2dos05-regulator", },
+};
+
+static const struct mfd_cell s2mpg10_devs[] = {
+       MFD_CELL_NAME("s2mpg10-meter"),
+       MFD_CELL_NAME("s2mpg10-regulator"),
+       MFD_CELL_NAME("s2mpg10-rtc"),
+       MFD_CELL_OF("s2mpg10-clk", NULL, NULL, 0, 0, "samsung,s2mpg10-clk"),
+       MFD_CELL_OF("s2mpg10-gpio", NULL, NULL, 0, 0, "samsung,s2mpg10-gpio"),
+};
+
+static const struct mfd_cell s2mps11_devs[] = {
+       { .name = "s2mps11-regulator", },
+       { .name = "s2mps14-rtc", },
+       {
+               .name = "s2mps11-clk",
+               .of_compatible = "samsung,s2mps11-clk",
+       },
+};
+
+static const struct mfd_cell s2mps13_devs[] = {
+       { .name = "s2mps13-regulator", },
+       { .name = "s2mps13-rtc", },
+       {
+               .name = "s2mps13-clk",
+               .of_compatible = "samsung,s2mps13-clk",
+       },
+};
+
+static const struct mfd_cell s2mps14_devs[] = {
+       { .name = "s2mps14-regulator", },
+       { .name = "s2mps14-rtc", },
+       {
+               .name = "s2mps14-clk",
+               .of_compatible = "samsung,s2mps14-clk",
+       },
+};
+
+static const struct mfd_cell s2mps15_devs[] = {
+       { .name = "s2mps15-regulator", },
+       { .name = "s2mps15-rtc", },
+       {
+               .name = "s2mps13-clk",
+               .of_compatible = "samsung,s2mps13-clk",
+       },
+};
+
+static const struct mfd_cell s2mpa01_devs[] = {
+       { .name = "s2mpa01-pmic", },
+       { .name = "s2mps14-rtc", },
+};
+
+static const struct mfd_cell s2mpu02_devs[] = {
+       { .name = "s2mpu02-regulator", },
+};
+
+static const struct mfd_cell s2mpu05_devs[] = {
+       { .name = "s2mpu05-regulator", },
+       { .name = "s2mps15-rtc", },
+};
+
+static void sec_pmic_dump_rev(struct sec_pmic_dev *sec_pmic)
+{
+       unsigned int val;
+
+       /* For s2mpg1x, the revision is in a different regmap */
+       if (sec_pmic->device_type == S2MPG10)
+               return;
+
+       /* For each device type, the REG_ID is always the first register */
+       if (!regmap_read(sec_pmic->regmap_pmic, S2MPS11_REG_ID, &val))
+               dev_dbg(sec_pmic->dev, "Revision: 0x%x\n", val);
+}
+
+static void sec_pmic_configure(struct sec_pmic_dev *sec_pmic)
+{
+       int err;
+
+       if (sec_pmic->device_type != S2MPS13X)
+               return;
+
+       if (sec_pmic->pdata->disable_wrstbi) {
+               /*
+                * If WRSTBI pin is pulled down this feature must be disabled
+                * because each Suspend to RAM will trigger buck voltage reset
+                * to default values.
+                */
+               err = regmap_update_bits(sec_pmic->regmap_pmic,
+                                        S2MPS13_REG_WRSTBI,
+                                        S2MPS13_REG_WRSTBI_MASK, 0x0);
+               if (err)
+                       dev_warn(sec_pmic->dev,
+                                "Cannot initialize WRSTBI config: %d\n",
+                                err);
+       }
+}
+
+/*
+ * Only the common platform data elements for s5m8767 are parsed here from the
+ * device tree. Other sub-modules of s5m8767 such as pmic, rtc , charger and
+ * others have to parse their own platform data elements from device tree.
+ *
+ * The s5m8767 platform data structure is instantiated here and the drivers for
+ * the sub-modules need not instantiate another instance while parsing their
+ * platform data.
+ */
+static struct sec_platform_data *
+sec_pmic_parse_dt_pdata(struct device *dev)
+{
+       struct sec_platform_data *pd;
+
+       pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
+       if (!pd)
+               return ERR_PTR(-ENOMEM);
+
+       pd->manual_poweroff = of_property_read_bool(dev->of_node,
+                                               "samsung,s2mps11-acokb-ground");
+       pd->disable_wrstbi = of_property_read_bool(dev->of_node,
+                                               "samsung,s2mps11-wrstbi-ground");
+       return pd;
+}
+
+int sec_pmic_probe(struct device *dev, unsigned long device_type,
+                  unsigned int irq, struct regmap *regmap,
+                  struct i2c_client *client)
+{
+       struct sec_platform_data *pdata;
+       const struct mfd_cell *sec_devs;
+       struct sec_pmic_dev *sec_pmic;
+       int ret, num_sec_devs;
+
+       sec_pmic = devm_kzalloc(dev, sizeof(struct sec_pmic_dev), GFP_KERNEL);
+       if (sec_pmic == NULL)
+               return -ENOMEM;
+
+       dev_set_drvdata(dev, sec_pmic);
+       sec_pmic->dev = dev;
+       sec_pmic->device_type = device_type;
+       sec_pmic->i2c = client;
+       sec_pmic->irq = irq;
+       sec_pmic->regmap_pmic = regmap;
+
+       pdata = sec_pmic_parse_dt_pdata(sec_pmic->dev);
+       if (IS_ERR(pdata)) {
+               ret = PTR_ERR(pdata);
+               return ret;
+       }
+
+       sec_pmic->pdata = pdata;
+
+       sec_irq_init(sec_pmic);
+
+       pm_runtime_set_active(sec_pmic->dev);
+
+       switch (sec_pmic->device_type) {
+       case S5M8767X:
+               sec_devs = s5m8767_devs;
+               num_sec_devs = ARRAY_SIZE(s5m8767_devs);
+               break;
+       case S2DOS05:
+               sec_devs = s2dos05_devs;
+               num_sec_devs = ARRAY_SIZE(s2dos05_devs);
+               break;
+       case S2MPA01:
+               sec_devs = s2mpa01_devs;
+               num_sec_devs = ARRAY_SIZE(s2mpa01_devs);
+               break;
+       case S2MPG10:
+               sec_devs = s2mpg10_devs;
+               num_sec_devs = ARRAY_SIZE(s2mpg10_devs);
+               break;
+       case S2MPS11X:
+               sec_devs = s2mps11_devs;
+               num_sec_devs = ARRAY_SIZE(s2mps11_devs);
+               break;
+       case S2MPS13X:
+               sec_devs = s2mps13_devs;
+               num_sec_devs = ARRAY_SIZE(s2mps13_devs);
+               break;
+       case S2MPS14X:
+               sec_devs = s2mps14_devs;
+               num_sec_devs = ARRAY_SIZE(s2mps14_devs);
+               break;
+       case S2MPS15X:
+               sec_devs = s2mps15_devs;
+               num_sec_devs = ARRAY_SIZE(s2mps15_devs);
+               break;
+       case S2MPU02:
+               sec_devs = s2mpu02_devs;
+               num_sec_devs = ARRAY_SIZE(s2mpu02_devs);
+               break;
+       case S2MPU05:
+               sec_devs = s2mpu05_devs;
+               num_sec_devs = ARRAY_SIZE(s2mpu05_devs);
+               break;
+       default:
+               dev_err(sec_pmic->dev, "Unsupported device type %lu\n",
+                       sec_pmic->device_type);
+               return -EINVAL;
+       }
+       ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs,
+                                  NULL, 0, NULL);
+       if (ret)
+               return ret;
+
+       sec_pmic_configure(sec_pmic);
+       sec_pmic_dump_rev(sec_pmic);
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(sec_pmic_probe);
+
+void sec_pmic_shutdown(struct device *dev)
+{
+       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
+       unsigned int reg, mask;
+
+       if (!sec_pmic->pdata->manual_poweroff)
+               return;
+
+       switch (sec_pmic->device_type) {
+       case S2MPS11X:
+               reg = S2MPS11_REG_CTRL1;
+               mask = S2MPS11_CTRL1_PWRHOLD_MASK;
+               break;
+       default:
+               /*
+                * Currently only one board with S2MPS11 needs this, so just
+                * ignore the rest.
+                */
+               dev_warn(sec_pmic->dev,
+                       "Unsupported device %lu for manual power off\n",
+                       sec_pmic->device_type);
+               return;
+       }
+
+       regmap_update_bits(sec_pmic->regmap_pmic, reg, mask, 0);
+}
+EXPORT_SYMBOL_GPL(sec_pmic_shutdown);
+
+static int sec_pmic_suspend(struct device *dev)
+{
+       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
+
+       if (device_may_wakeup(dev))
+               enable_irq_wake(sec_pmic->irq);
+       /*
+        * PMIC IRQ must be disabled during suspend for RTC alarm
+        * to work properly.
+        * When device is woken up from suspend, an
+        * interrupt occurs before resuming I2C bus controller.
+        * The interrupt is handled by regmap_irq_thread which tries
+        * to read RTC registers. This read fails (I2C is still
+        * suspended) and RTC Alarm interrupt is disabled.
+        */
+       disable_irq(sec_pmic->irq);
+
+       return 0;
+}
+
+static int sec_pmic_resume(struct device *dev)
+{
+       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
+
+       if (device_may_wakeup(dev))
+               disable_irq_wake(sec_pmic->irq);
+       enable_irq(sec_pmic->irq);
+
+       return 0;
+}
+
+DEFINE_SIMPLE_DEV_PM_OPS(sec_pmic_pm_ops, sec_pmic_suspend, sec_pmic_resume);
+EXPORT_SYMBOL_GPL(sec_pmic_pm_ops);
+
+MODULE_AUTHOR("Chanwoo Choi <cw00.choi@samsung.com>");
+MODULE_AUTHOR("Krzysztof Kozlowski <krzk@kernel.org>");
+MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>");
+MODULE_DESCRIPTION("Core driver for the Samsung S5M");
+MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
deleted file mode 100644 (file)
index c4b7abe..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *                http://www.samsung.com
- * Copyright 2025 Linaro Ltd.
- *
- * Samsung SxM core driver
- */
-
-#include <linux/device.h>
-#include <linux/err.h>
-#include <linux/export.h>
-#include <linux/interrupt.h>
-#include <linux/mfd/core.h>
-#include <linux/mfd/samsung/core.h>
-#include <linux/mfd/samsung/irq.h>
-#include <linux/mfd/samsung/s2mps11.h>
-#include <linux/mfd/samsung/s2mps13.h>
-#include <linux/module.h>
-#include <linux/of.h>
-#include <linux/pm.h>
-#include <linux/pm_runtime.h>
-#include <linux/regmap.h>
-#include "sec-core.h"
-
-static const struct mfd_cell s5m8767_devs[] = {
-       { .name = "s5m8767-pmic", },
-       { .name = "s5m-rtc", },
-       {
-               .name = "s5m8767-clk",
-               .of_compatible = "samsung,s5m8767-clk",
-       },
-};
-
-static const struct mfd_cell s2dos05_devs[] = {
-       { .name = "s2dos05-regulator", },
-};
-
-static const struct mfd_cell s2mpg10_devs[] = {
-       MFD_CELL_NAME("s2mpg10-meter"),
-       MFD_CELL_NAME("s2mpg10-regulator"),
-       MFD_CELL_NAME("s2mpg10-rtc"),
-       MFD_CELL_OF("s2mpg10-clk", NULL, NULL, 0, 0, "samsung,s2mpg10-clk"),
-       MFD_CELL_OF("s2mpg10-gpio", NULL, NULL, 0, 0, "samsung,s2mpg10-gpio"),
-};
-
-static const struct mfd_cell s2mps11_devs[] = {
-       { .name = "s2mps11-regulator", },
-       { .name = "s2mps14-rtc", },
-       {
-               .name = "s2mps11-clk",
-               .of_compatible = "samsung,s2mps11-clk",
-       },
-};
-
-static const struct mfd_cell s2mps13_devs[] = {
-       { .name = "s2mps13-regulator", },
-       { .name = "s2mps13-rtc", },
-       {
-               .name = "s2mps13-clk",
-               .of_compatible = "samsung,s2mps13-clk",
-       },
-};
-
-static const struct mfd_cell s2mps14_devs[] = {
-       { .name = "s2mps14-regulator", },
-       { .name = "s2mps14-rtc", },
-       {
-               .name = "s2mps14-clk",
-               .of_compatible = "samsung,s2mps14-clk",
-       },
-};
-
-static const struct mfd_cell s2mps15_devs[] = {
-       { .name = "s2mps15-regulator", },
-       { .name = "s2mps15-rtc", },
-       {
-               .name = "s2mps13-clk",
-               .of_compatible = "samsung,s2mps13-clk",
-       },
-};
-
-static const struct mfd_cell s2mpa01_devs[] = {
-       { .name = "s2mpa01-pmic", },
-       { .name = "s2mps14-rtc", },
-};
-
-static const struct mfd_cell s2mpu02_devs[] = {
-       { .name = "s2mpu02-regulator", },
-};
-
-static const struct mfd_cell s2mpu05_devs[] = {
-       { .name = "s2mpu05-regulator", },
-       { .name = "s2mps15-rtc", },
-};
-
-static void sec_pmic_dump_rev(struct sec_pmic_dev *sec_pmic)
-{
-       unsigned int val;
-
-       /* For s2mpg1x, the revision is in a different regmap */
-       if (sec_pmic->device_type == S2MPG10)
-               return;
-
-       /* For each device type, the REG_ID is always the first register */
-       if (!regmap_read(sec_pmic->regmap_pmic, S2MPS11_REG_ID, &val))
-               dev_dbg(sec_pmic->dev, "Revision: 0x%x\n", val);
-}
-
-static void sec_pmic_configure(struct sec_pmic_dev *sec_pmic)
-{
-       int err;
-
-       if (sec_pmic->device_type != S2MPS13X)
-               return;
-
-       if (sec_pmic->pdata->disable_wrstbi) {
-               /*
-                * If WRSTBI pin is pulled down this feature must be disabled
-                * because each Suspend to RAM will trigger buck voltage reset
-                * to default values.
-                */
-               err = regmap_update_bits(sec_pmic->regmap_pmic,
-                                        S2MPS13_REG_WRSTBI,
-                                        S2MPS13_REG_WRSTBI_MASK, 0x0);
-               if (err)
-                       dev_warn(sec_pmic->dev,
-                                "Cannot initialize WRSTBI config: %d\n",
-                                err);
-       }
-}
-
-/*
- * Only the common platform data elements for s5m8767 are parsed here from the
- * device tree. Other sub-modules of s5m8767 such as pmic, rtc , charger and
- * others have to parse their own platform data elements from device tree.
- *
- * The s5m8767 platform data structure is instantiated here and the drivers for
- * the sub-modules need not instantiate another instance while parsing their
- * platform data.
- */
-static struct sec_platform_data *
-sec_pmic_parse_dt_pdata(struct device *dev)
-{
-       struct sec_platform_data *pd;
-
-       pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL);
-       if (!pd)
-               return ERR_PTR(-ENOMEM);
-
-       pd->manual_poweroff = of_property_read_bool(dev->of_node,
-                                               "samsung,s2mps11-acokb-ground");
-       pd->disable_wrstbi = of_property_read_bool(dev->of_node,
-                                               "samsung,s2mps11-wrstbi-ground");
-       return pd;
-}
-
-int sec_pmic_probe(struct device *dev, unsigned long device_type,
-                  unsigned int irq, struct regmap *regmap,
-                  struct i2c_client *client)
-{
-       struct sec_platform_data *pdata;
-       const struct mfd_cell *sec_devs;
-       struct sec_pmic_dev *sec_pmic;
-       int ret, num_sec_devs;
-
-       sec_pmic = devm_kzalloc(dev, sizeof(struct sec_pmic_dev), GFP_KERNEL);
-       if (sec_pmic == NULL)
-               return -ENOMEM;
-
-       dev_set_drvdata(dev, sec_pmic);
-       sec_pmic->dev = dev;
-       sec_pmic->device_type = device_type;
-       sec_pmic->i2c = client;
-       sec_pmic->irq = irq;
-       sec_pmic->regmap_pmic = regmap;
-
-       pdata = sec_pmic_parse_dt_pdata(sec_pmic->dev);
-       if (IS_ERR(pdata)) {
-               ret = PTR_ERR(pdata);
-               return ret;
-       }
-
-       sec_pmic->pdata = pdata;
-
-       sec_irq_init(sec_pmic);
-
-       pm_runtime_set_active(sec_pmic->dev);
-
-       switch (sec_pmic->device_type) {
-       case S5M8767X:
-               sec_devs = s5m8767_devs;
-               num_sec_devs = ARRAY_SIZE(s5m8767_devs);
-               break;
-       case S2DOS05:
-               sec_devs = s2dos05_devs;
-               num_sec_devs = ARRAY_SIZE(s2dos05_devs);
-               break;
-       case S2MPA01:
-               sec_devs = s2mpa01_devs;
-               num_sec_devs = ARRAY_SIZE(s2mpa01_devs);
-               break;
-       case S2MPG10:
-               sec_devs = s2mpg10_devs;
-               num_sec_devs = ARRAY_SIZE(s2mpg10_devs);
-               break;
-       case S2MPS11X:
-               sec_devs = s2mps11_devs;
-               num_sec_devs = ARRAY_SIZE(s2mps11_devs);
-               break;
-       case S2MPS13X:
-               sec_devs = s2mps13_devs;
-               num_sec_devs = ARRAY_SIZE(s2mps13_devs);
-               break;
-       case S2MPS14X:
-               sec_devs = s2mps14_devs;
-               num_sec_devs = ARRAY_SIZE(s2mps14_devs);
-               break;
-       case S2MPS15X:
-               sec_devs = s2mps15_devs;
-               num_sec_devs = ARRAY_SIZE(s2mps15_devs);
-               break;
-       case S2MPU02:
-               sec_devs = s2mpu02_devs;
-               num_sec_devs = ARRAY_SIZE(s2mpu02_devs);
-               break;
-       case S2MPU05:
-               sec_devs = s2mpu05_devs;
-               num_sec_devs = ARRAY_SIZE(s2mpu05_devs);
-               break;
-       default:
-               dev_err(sec_pmic->dev, "Unsupported device type %lu\n",
-                       sec_pmic->device_type);
-               return -EINVAL;
-       }
-       ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs,
-                                  NULL, 0, NULL);
-       if (ret)
-               return ret;
-
-       sec_pmic_configure(sec_pmic);
-       sec_pmic_dump_rev(sec_pmic);
-
-       return ret;
-}
-EXPORT_SYMBOL_GPL(sec_pmic_probe);
-
-void sec_pmic_shutdown(struct device *dev)
-{
-       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
-       unsigned int reg, mask;
-
-       if (!sec_pmic->pdata->manual_poweroff)
-               return;
-
-       switch (sec_pmic->device_type) {
-       case S2MPS11X:
-               reg = S2MPS11_REG_CTRL1;
-               mask = S2MPS11_CTRL1_PWRHOLD_MASK;
-               break;
-       default:
-               /*
-                * Currently only one board with S2MPS11 needs this, so just
-                * ignore the rest.
-                */
-               dev_warn(sec_pmic->dev,
-                       "Unsupported device %lu for manual power off\n",
-                       sec_pmic->device_type);
-               return;
-       }
-
-       regmap_update_bits(sec_pmic->regmap_pmic, reg, mask, 0);
-}
-EXPORT_SYMBOL_GPL(sec_pmic_shutdown);
-
-static int sec_pmic_suspend(struct device *dev)
-{
-       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
-
-       if (device_may_wakeup(dev))
-               enable_irq_wake(sec_pmic->irq);
-       /*
-        * PMIC IRQ must be disabled during suspend for RTC alarm
-        * to work properly.
-        * When device is woken up from suspend, an
-        * interrupt occurs before resuming I2C bus controller.
-        * The interrupt is handled by regmap_irq_thread which tries
-        * to read RTC registers. This read fails (I2C is still
-        * suspended) and RTC Alarm interrupt is disabled.
-        */
-       disable_irq(sec_pmic->irq);
-
-       return 0;
-}
-
-static int sec_pmic_resume(struct device *dev)
-{
-       struct sec_pmic_dev *sec_pmic = dev_get_drvdata(dev);
-
-       if (device_may_wakeup(dev))
-               disable_irq_wake(sec_pmic->irq);
-       enable_irq(sec_pmic->irq);
-
-       return 0;
-}
-
-DEFINE_SIMPLE_DEV_PM_OPS(sec_pmic_pm_ops, sec_pmic_suspend, sec_pmic_resume);
-EXPORT_SYMBOL_GPL(sec_pmic_pm_ops);
-
-MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>");
-MODULE_DESCRIPTION("Core driver for the Samsung S5M");
-MODULE_LICENSE("GPL");
index e9beaa2..b75d7fe 100644 (file)
@@ -6,7 +6,6 @@
 #include <linux/array_size.h>
 #include <linux/build_bug.h>
 #include <linux/dev_printk.h>
-#include <linux/export.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/mfd/samsung/core.h>
@@ -17,7 +16,6 @@
 #include <linux/mfd/samsung/s2mpu02.h>
 #include <linux/mfd/samsung/s2mpu05.h>
 #include <linux/mfd/samsung/s5m8767.h>
-#include <linux/module.h>
 #include <linux/regmap.h>
 #include "sec-core.h"
 
@@ -510,10 +508,3 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
 
        return 0;
 }
-EXPORT_SYMBOL_GPL(sec_irq_init);
-
-MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>");
-MODULE_AUTHOR("Chanwoo Choi <cw00.choi@samsung.com>");
-MODULE_AUTHOR("Krzysztof Kozlowski <krzk@kernel.org>");
-MODULE_DESCRIPTION("Interrupt support for the S5M MFD");
-MODULE_LICENSE("GPL");