From: Arnd Bergmann <[email protected]>

This driver was apparently never used, as it has has no devicetree
support and never had corresponding platform_data definitions.

Signed-off-by: Arnd Bergmann <[email protected]>
---
 drivers/mfd/Kconfig                   |  12 -
 drivers/mfd/Makefile                  |   1 -
 drivers/mfd/aat2870-core.c            | 458 --------------------------
 drivers/regulator/Kconfig             |   7 -
 drivers/regulator/Makefile            |   1 -
 drivers/regulator/aat2870-regulator.c | 201 -----------
 drivers/video/backlight/Kconfig       |   7 -
 drivers/video/backlight/Makefile      |   1 -
 drivers/video/backlight/aat2870_bl.c  | 206 ------------
 include/linux/mfd/aat2870.h           | 164 ---------
 10 files changed, 1058 deletions(-)
 delete mode 100644 drivers/mfd/aat2870-core.c
 delete mode 100644 drivers/regulator/aat2870-regulator.c
 delete mode 100644 drivers/video/backlight/aat2870_bl.c
 delete mode 100644 include/linux/mfd/aat2870.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 09e400e1f4b0..b0c7df448445 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -115,18 +115,6 @@ config MFD_AS3722
          controllers, 11 LDOs, RTC, automatic battery, temperature and
          over current monitoring, GPIOs, ADC and a watchdog.
 
-config MFD_AAT2870_CORE
-       bool "AnalogicTech AAT2870"
-       select MFD_CORE
-       depends on I2C=y
-       depends on GPIOLIB || COMPILE_TEST
-       depends on GPIOLIB_LEGACY
-       help
-         If you say yes here you get support for the AAT2870.
-         This driver provides common support for accessing the device,
-         additional drivers must be enabled in order to use the
-         functionality of the device.
-
 config MFD_AT91_USART
        tristate "AT91 USART Driver"
        select MFD_CORE
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index e3fe998c3513..cf3c70364538 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -206,7 +206,6 @@ obj-$(CONFIG_MFD_QCOM_RPM)  += qcom_rpm.o
 obj-$(CONFIG_MFD_SPMI_PMIC)    += qcom-spmi-pmic.o
 obj-$(CONFIG_TPS65911_COMPARATOR)      += tps65911-comparator.o
 obj-$(CONFIG_MFD_TPS65090)     += tps65090.o
-obj-$(CONFIG_MFD_AAT2870_CORE) += aat2870-core.o
 obj-$(CONFIG_MFD_AT91_USART)   += at91-usart.o
 obj-$(CONFIG_MFD_ATMEL_FLEXCOM)        += atmel-flexcom.o
 obj-$(CONFIG_MFD_ATMEL_HLCDC)  += atmel-hlcdc.o
diff --git a/drivers/mfd/aat2870-core.c b/drivers/mfd/aat2870-core.c
deleted file mode 100644
index 0d56cd6fbc6a..000000000000
--- a/drivers/mfd/aat2870-core.c
+++ /dev/null
@@ -1,458 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/mfd/aat2870-core.c
- *
- * Copyright (c) 2011, NVIDIA Corporation.
- * Author: Jin Park <[email protected]>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/debugfs.h>
-#include <linux/slab.h>
-#include <linux/uaccess.h>
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/gpio/legacy.h>
-#include <linux/mfd/core.h>
-#include <linux/mfd/aat2870.h>
-#include <linux/regulator/machine.h>
-
-static struct aat2870_register aat2870_regs[AAT2870_REG_NUM] = {
-       /* readable, writeable, value */
-       { 0, 1, 0x00 }, /* 0x00 AAT2870_BL_CH_EN */
-       { 0, 1, 0x16 }, /* 0x01 AAT2870_BLM */
-       { 0, 1, 0x16 }, /* 0x02 AAT2870_BLS */
-       { 0, 1, 0x56 }, /* 0x03 AAT2870_BL1 */
-       { 0, 1, 0x56 }, /* 0x04 AAT2870_BL2 */
-       { 0, 1, 0x56 }, /* 0x05 AAT2870_BL3 */
-       { 0, 1, 0x56 }, /* 0x06 AAT2870_BL4 */
-       { 0, 1, 0x56 }, /* 0x07 AAT2870_BL5 */
-       { 0, 1, 0x56 }, /* 0x08 AAT2870_BL6 */
-       { 0, 1, 0x56 }, /* 0x09 AAT2870_BL7 */
-       { 0, 1, 0x56 }, /* 0x0A AAT2870_BL8 */
-       { 0, 1, 0x00 }, /* 0x0B AAT2870_FLR */
-       { 0, 1, 0x03 }, /* 0x0C AAT2870_FM */
-       { 0, 1, 0x03 }, /* 0x0D AAT2870_FS */
-       { 0, 1, 0x10 }, /* 0x0E AAT2870_ALS_CFG0 */
-       { 0, 1, 0x06 }, /* 0x0F AAT2870_ALS_CFG1 */
-       { 0, 1, 0x00 }, /* 0x10 AAT2870_ALS_CFG2 */
-       { 1, 0, 0x00 }, /* 0x11 AAT2870_AMB */
-       { 0, 1, 0x00 }, /* 0x12 AAT2870_ALS0 */
-       { 0, 1, 0x00 }, /* 0x13 AAT2870_ALS1 */
-       { 0, 1, 0x00 }, /* 0x14 AAT2870_ALS2 */
-       { 0, 1, 0x00 }, /* 0x15 AAT2870_ALS3 */
-       { 0, 1, 0x00 }, /* 0x16 AAT2870_ALS4 */
-       { 0, 1, 0x00 }, /* 0x17 AAT2870_ALS5 */
-       { 0, 1, 0x00 }, /* 0x18 AAT2870_ALS6 */
-       { 0, 1, 0x00 }, /* 0x19 AAT2870_ALS7 */
-       { 0, 1, 0x00 }, /* 0x1A AAT2870_ALS8 */
-       { 0, 1, 0x00 }, /* 0x1B AAT2870_ALS9 */
-       { 0, 1, 0x00 }, /* 0x1C AAT2870_ALSA */
-       { 0, 1, 0x00 }, /* 0x1D AAT2870_ALSB */
-       { 0, 1, 0x00 }, /* 0x1E AAT2870_ALSC */
-       { 0, 1, 0x00 }, /* 0x1F AAT2870_ALSD */
-       { 0, 1, 0x00 }, /* 0x20 AAT2870_ALSE */
-       { 0, 1, 0x00 }, /* 0x21 AAT2870_ALSF */
-       { 0, 1, 0x00 }, /* 0x22 AAT2870_SUB_SET */
-       { 0, 1, 0x00 }, /* 0x23 AAT2870_SUB_CTRL */
-       { 0, 1, 0x00 }, /* 0x24 AAT2870_LDO_AB */
-       { 0, 1, 0x00 }, /* 0x25 AAT2870_LDO_CD */
-       { 0, 1, 0x00 }, /* 0x26 AAT2870_LDO_EN */
-};
-
-static struct mfd_cell aat2870_devs[] = {
-       {
-               .name = "aat2870-backlight",
-               .id = AAT2870_ID_BL,
-               .pdata_size = sizeof(struct aat2870_bl_platform_data),
-       },
-       {
-               .name = "aat2870-regulator",
-               .id = AAT2870_ID_LDOA,
-               .pdata_size = sizeof(struct regulator_init_data),
-       },
-       {
-               .name = "aat2870-regulator",
-               .id = AAT2870_ID_LDOB,
-               .pdata_size = sizeof(struct regulator_init_data),
-       },
-       {
-               .name = "aat2870-regulator",
-               .id = AAT2870_ID_LDOC,
-               .pdata_size = sizeof(struct regulator_init_data),
-       },
-       {
-               .name = "aat2870-regulator",
-               .id = AAT2870_ID_LDOD,
-               .pdata_size = sizeof(struct regulator_init_data),
-       },
-};
-
-static int __aat2870_read(struct aat2870_data *aat2870, u8 addr, u8 *val)
-{
-       int ret;
-
-       if (addr >= AAT2870_REG_NUM) {
-               dev_err(aat2870->dev, "Invalid address, 0x%02x\n", addr);
-               return -EINVAL;
-       }
-
-       if (!aat2870->reg_cache[addr].readable) {
-               *val = aat2870->reg_cache[addr].value;
-               goto out;
-       }
-
-       ret = i2c_master_send(aat2870->client, &addr, 1);
-       if (ret < 0)
-               return ret;
-       if (ret != 1)
-               return -EIO;
-
-       ret = i2c_master_recv(aat2870->client, val, 1);
-       if (ret < 0)
-               return ret;
-       if (ret != 1)
-               return -EIO;
-
-out:
-       dev_dbg(aat2870->dev, "read: addr=0x%02x, val=0x%02x\n", addr, *val);
-       return 0;
-}
-
-static int __aat2870_write(struct aat2870_data *aat2870, u8 addr, u8 val)
-{
-       u8 msg[2];
-       int ret;
-
-       if (addr >= AAT2870_REG_NUM) {
-               dev_err(aat2870->dev, "Invalid address, 0x%02x\n", addr);
-               return -EINVAL;
-       }
-
-       if (!aat2870->reg_cache[addr].writeable) {
-               dev_err(aat2870->dev, "Address 0x%02x is not writeable\n",
-                       addr);
-               return -EINVAL;
-       }
-
-       msg[0] = addr;
-       msg[1] = val;
-       ret = i2c_master_send(aat2870->client, msg, 2);
-       if (ret < 0)
-               return ret;
-       if (ret != 2)
-               return -EIO;
-
-       aat2870->reg_cache[addr].value = val;
-
-       dev_dbg(aat2870->dev, "write: addr=0x%02x, val=0x%02x\n", addr, val);
-       return 0;
-}
-
-static int aat2870_read(struct aat2870_data *aat2870, u8 addr, u8 *val)
-{
-       int ret;
-
-       mutex_lock(&aat2870->io_lock);
-       ret = __aat2870_read(aat2870, addr, val);
-       mutex_unlock(&aat2870->io_lock);
-
-       return ret;
-}
-
-static int aat2870_write(struct aat2870_data *aat2870, u8 addr, u8 val)
-{
-       int ret;
-
-       mutex_lock(&aat2870->io_lock);
-       ret = __aat2870_write(aat2870, addr, val);
-       mutex_unlock(&aat2870->io_lock);
-
-       return ret;
-}
-
-static int aat2870_update(struct aat2870_data *aat2870, u8 addr, u8 mask,
-                         u8 val)
-{
-       int change;
-       u8 old_val, new_val;
-       int ret;
-
-       mutex_lock(&aat2870->io_lock);
-
-       ret = __aat2870_read(aat2870, addr, &old_val);
-       if (ret)
-               goto out_unlock;
-
-       new_val = (old_val & ~mask) | (val & mask);
-       change = old_val != new_val;
-       if (change)
-               ret = __aat2870_write(aat2870, addr, new_val);
-
-out_unlock:
-       mutex_unlock(&aat2870->io_lock);
-
-       return ret;
-}
-
-static inline void aat2870_enable(struct aat2870_data *aat2870)
-{
-       if (aat2870->en_pin >= 0)
-               gpio_set_value(aat2870->en_pin, 1);
-
-       aat2870->is_enable = 1;
-}
-
-static inline void aat2870_disable(struct aat2870_data *aat2870)
-{
-       if (aat2870->en_pin >= 0)
-               gpio_set_value(aat2870->en_pin, 0);
-
-       aat2870->is_enable = 0;
-}
-
-#ifdef CONFIG_DEBUG_FS
-static ssize_t aat2870_dump_reg(struct aat2870_data *aat2870, char *buf)
-{
-       u8 addr, val;
-       ssize_t count = 0;
-       int ret;
-
-       count += sprintf(buf, "aat2870 registers\n");
-       for (addr = 0; addr < AAT2870_REG_NUM; addr++) {
-               count += snprintf(buf + count, PAGE_SIZE - count, "0x%02x: ", 
addr);
-               if (count >= PAGE_SIZE - 1)
-                       break;
-
-               ret = aat2870->read(aat2870, addr, &val);
-               if (ret == 0)
-                       count += snprintf(buf + count, PAGE_SIZE - count,
-                                         "0x%02x", val);
-               else
-                       count += snprintf(buf + count, PAGE_SIZE - count,
-                                         "<read fail: %d>", ret);
-
-               if (count >= PAGE_SIZE - 1)
-                       break;
-
-               count += snprintf(buf + count, PAGE_SIZE - count, "\n");
-               if (count >= PAGE_SIZE - 1)
-                       break;
-       }
-
-       /* Truncate count; min() would cause a warning */
-       if (count >= PAGE_SIZE)
-               count = PAGE_SIZE - 1;
-
-       return count;
-}
-
-static ssize_t aat2870_reg_read_file(struct file *file, char __user *user_buf,
-                                    size_t count, loff_t *ppos)
-{
-       struct aat2870_data *aat2870 = file->private_data;
-       char *buf;
-       ssize_t ret;
-
-       buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
-       if (!buf)
-               return -ENOMEM;
-
-       ret = aat2870_dump_reg(aat2870, buf);
-       if (ret >= 0)
-               ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
-
-       kfree(buf);
-
-       return ret;
-}
-
-static ssize_t aat2870_reg_write_file(struct file *file,
-                                     const char __user *user_buf, size_t count,
-                                     loff_t *ppos)
-{
-       struct aat2870_data *aat2870 = file->private_data;
-       char buf[32];
-       ssize_t buf_size;
-       char *start = buf;
-       unsigned long addr, val;
-       int ret;
-
-       buf_size = min(count, (size_t)(sizeof(buf)-1));
-       if (copy_from_user(buf, user_buf, buf_size)) {
-               dev_err(aat2870->dev, "Failed to copy from user\n");
-               return -EFAULT;
-       }
-       buf[buf_size] = 0;
-
-       while (*start == ' ')
-               start++;
-
-       ret = kstrtoul(start, 16, &addr);
-       if (ret)
-               return ret;
-
-       if (addr >= AAT2870_REG_NUM) {
-               dev_err(aat2870->dev, "Invalid address, 0x%lx\n", addr);
-               return -EINVAL;
-       }
-
-       while (*start == ' ')
-               start++;
-
-       ret = kstrtoul(start, 16, &val);
-       if (ret)
-               return ret;
-
-       ret = aat2870->write(aat2870, (u8)addr, (u8)val);
-       if (ret)
-               return ret;
-
-       return buf_size;
-}
-
-static const struct file_operations aat2870_reg_fops = {
-       .open = simple_open,
-       .read = aat2870_reg_read_file,
-       .write = aat2870_reg_write_file,
-};
-
-static void aat2870_init_debugfs(struct aat2870_data *aat2870)
-{
-       debugfs_create_file("regs", 0644, aat2870->client->debugfs, aat2870,
-                           &aat2870_reg_fops);
-}
-
-#else
-static inline void aat2870_init_debugfs(struct aat2870_data *aat2870)
-{
-}
-#endif /* CONFIG_DEBUG_FS */
-
-static int aat2870_i2c_probe(struct i2c_client *client)
-{
-       struct aat2870_platform_data *pdata = dev_get_platdata(&client->dev);
-       struct aat2870_data *aat2870;
-       int i, j;
-       int ret = 0;
-
-       aat2870 = devm_kzalloc(&client->dev, sizeof(struct aat2870_data),
-                               GFP_KERNEL);
-       if (!aat2870)
-               return -ENOMEM;
-
-       aat2870->dev = &client->dev;
-       aat2870->client = client;
-       i2c_set_clientdata(client, aat2870);
-
-       aat2870->reg_cache = aat2870_regs;
-
-       if (pdata->en_pin < 0)
-               aat2870->en_pin = -1;
-       else
-               aat2870->en_pin = pdata->en_pin;
-
-       aat2870->init = pdata->init;
-       aat2870->uninit = pdata->uninit;
-       aat2870->read = aat2870_read;
-       aat2870->write = aat2870_write;
-       aat2870->update = aat2870_update;
-
-       mutex_init(&aat2870->io_lock);
-
-       if (aat2870->init)
-               aat2870->init(aat2870);
-
-       if (aat2870->en_pin >= 0) {
-               ret = devm_gpio_request_one(&client->dev, aat2870->en_pin,
-                                       GPIOF_OUT_INIT_HIGH, "aat2870-en");
-               if (ret < 0) {
-                       dev_err(&client->dev,
-                               "Failed to request GPIO %d\n", aat2870->en_pin);
-                       return ret;
-               }
-       }
-
-       aat2870_enable(aat2870);
-
-       for (i = 0; i < pdata->num_subdevs; i++) {
-               for (j = 0; j < ARRAY_SIZE(aat2870_devs); j++) {
-                       if ((pdata->subdevs[i].id == aat2870_devs[j].id) &&
-                                       !strcmp(pdata->subdevs[i].name,
-                                               aat2870_devs[j].name)) {
-                               aat2870_devs[j].platform_data =
-                                       pdata->subdevs[i].platform_data;
-                               break;
-                       }
-               }
-       }
-
-       ret = mfd_add_devices(aat2870->dev, 0, aat2870_devs,
-                             ARRAY_SIZE(aat2870_devs), NULL, 0, NULL);
-       if (ret != 0) {
-               dev_err(aat2870->dev, "Failed to add subdev: %d\n", ret);
-               goto out_disable;
-       }
-
-       aat2870_init_debugfs(aat2870);
-
-       return 0;
-
-out_disable:
-       aat2870_disable(aat2870);
-       return ret;
-}
-
-static int aat2870_i2c_suspend(struct device *dev)
-{
-       struct i2c_client *client = to_i2c_client(dev);
-       struct aat2870_data *aat2870 = i2c_get_clientdata(client);
-
-       aat2870_disable(aat2870);
-
-       return 0;
-}
-
-static int aat2870_i2c_resume(struct device *dev)
-{
-       struct i2c_client *client = to_i2c_client(dev);
-       struct aat2870_data *aat2870 = i2c_get_clientdata(client);
-       struct aat2870_register *reg = NULL;
-       int i;
-
-       aat2870_enable(aat2870);
-
-       /* restore registers */
-       for (i = 0; i < AAT2870_REG_NUM; i++) {
-               reg = &aat2870->reg_cache[i];
-               if (reg->writeable)
-                       aat2870->write(aat2870, i, reg->value);
-       }
-
-       return 0;
-}
-
-static DEFINE_SIMPLE_DEV_PM_OPS(aat2870_pm_ops, aat2870_i2c_suspend,
-                               aat2870_i2c_resume);
-
-static const struct i2c_device_id aat2870_i2c_id_table[] = {
-       { "aat2870" },
-       { }
-};
-
-static struct i2c_driver aat2870_i2c_driver = {
-       .driver = {
-               .name                   = "aat2870",
-               .pm                     = pm_sleep_ptr(&aat2870_pm_ops),
-               .suppress_bind_attrs    = true,
-       },
-       .probe          = aat2870_i2c_probe,
-       .id_table       = aat2870_i2c_id_table,
-};
-
-static int __init aat2870_init(void)
-{
-       return i2c_add_driver(&aat2870_i2c_driver);
-}
-subsys_initcall(aat2870_init);
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 4b90d1cb045c..12d883e729bc 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -132,13 +132,6 @@ config REGULATOR_ANATOP
          regulators. It is recommended that this option be
          enabled on i.MX6 platform.
 
-config REGULATOR_AAT2870
-       tristate "AnalogicTech AAT2870 Regulators"
-       depends on MFD_AAT2870_CORE
-       help
-         If you have a AnalogicTech AAT2870 say Y to enable the
-         regulator driver.
-
 config REGULATOR_AB8500
        bool "ST-Ericsson AB8500 Power Regulators"
        depends on AB8500_CORE
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
index fe0f099c217b..321c6ea73ee0 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -16,7 +16,6 @@ obj-$(CONFIG_REGULATOR_88PM8607) += 88pm8607.o
 obj-$(CONFIG_REGULATOR_88PM886) += 88pm886-regulator.o
 obj-$(CONFIG_REGULATOR_CROS_EC) += cros-ec-regulator.o
 obj-$(CONFIG_REGULATOR_CPCAP) += cpcap-regulator.o
-obj-$(CONFIG_REGULATOR_AAT2870) += aat2870-regulator.o
 obj-$(CONFIG_REGULATOR_AB8500) += ab8500-ext.o ab8500.o
 obj-$(CONFIG_REGULATOR_ACT8865) += act8865-regulator.o
 obj-$(CONFIG_REGULATOR_ACT8945A) += act8945a-regulator.o
diff --git a/drivers/regulator/aat2870-regulator.c 
b/drivers/regulator/aat2870-regulator.c
deleted file mode 100644
index 970d86f2bbb8..000000000000
--- a/drivers/regulator/aat2870-regulator.c
+++ /dev/null
@@ -1,201 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/regulator/aat2870-regulator.c
- *
- * Copyright (c) 2011, NVIDIA Corporation.
- * Author: Jin Park <[email protected]>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/err.h>
-#include <linux/module.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/machine.h>
-#include <linux/mfd/aat2870.h>
-
-struct aat2870_regulator {
-       struct aat2870_data *aat2870;
-       struct regulator_desc desc;
-
-       u8 enable_addr;
-       u8 enable_shift;
-       u8 enable_mask;
-
-       u8 voltage_addr;
-       u8 voltage_shift;
-       u8 voltage_mask;
-};
-
-static int aat2870_ldo_set_voltage_sel(struct regulator_dev *rdev,
-                                      unsigned selector)
-{
-       struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = ri->aat2870;
-
-       return aat2870->update(aat2870, ri->voltage_addr, ri->voltage_mask,
-                              selector << ri->voltage_shift);
-}
-
-static int aat2870_ldo_get_voltage_sel(struct regulator_dev *rdev)
-{
-       struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = ri->aat2870;
-       u8 val;
-       int ret;
-
-       ret = aat2870->read(aat2870, ri->voltage_addr, &val);
-       if (ret)
-               return ret;
-
-       return (val & ri->voltage_mask) >> ri->voltage_shift;
-}
-
-static int aat2870_ldo_enable(struct regulator_dev *rdev)
-{
-       struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = ri->aat2870;
-
-       return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask,
-                              ri->enable_mask);
-}
-
-static int aat2870_ldo_disable(struct regulator_dev *rdev)
-{
-       struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = ri->aat2870;
-
-       return aat2870->update(aat2870, ri->enable_addr, ri->enable_mask, 0);
-}
-
-static int aat2870_ldo_is_enabled(struct regulator_dev *rdev)
-{
-       struct aat2870_regulator *ri = rdev_get_drvdata(rdev);
-       struct aat2870_data *aat2870 = ri->aat2870;
-       u8 val;
-       int ret;
-
-       ret = aat2870->read(aat2870, ri->enable_addr, &val);
-       if (ret)
-               return ret;
-
-       return val & ri->enable_mask ? 1 : 0;
-}
-
-static const struct regulator_ops aat2870_ldo_ops = {
-       .list_voltage = regulator_list_voltage_table,
-       .map_voltage = regulator_map_voltage_ascend,
-       .set_voltage_sel = aat2870_ldo_set_voltage_sel,
-       .get_voltage_sel = aat2870_ldo_get_voltage_sel,
-       .enable = aat2870_ldo_enable,
-       .disable = aat2870_ldo_disable,
-       .is_enabled = aat2870_ldo_is_enabled,
-};
-
-static const unsigned int aat2870_ldo_voltages[] = {
-       1200000, 1300000, 1500000, 1600000,
-       1800000, 2000000, 2200000, 2500000,
-       2600000, 2700000, 2800000, 2900000,
-       3000000, 3100000, 3200000, 3300000,
-};
-
-#define AAT2870_LDO(ids)                               \
-       {                                               \
-               .desc = {                               \
-                       .name = #ids,                   \
-                       .id = AAT2870_ID_##ids,         \
-                       .n_voltages = ARRAY_SIZE(aat2870_ldo_voltages), \
-                       .volt_table = aat2870_ldo_voltages, \
-                       .ops = &aat2870_ldo_ops,        \
-                       .type = REGULATOR_VOLTAGE,      \
-                       .owner = THIS_MODULE,           \
-               },                                      \
-       }
-
-static struct aat2870_regulator aat2870_regulators[] = {
-       AAT2870_LDO(LDOA),
-       AAT2870_LDO(LDOB),
-       AAT2870_LDO(LDOC),
-       AAT2870_LDO(LDOD),
-};
-
-static struct aat2870_regulator *aat2870_get_regulator(int id)
-{
-       struct aat2870_regulator *ri = NULL;
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(aat2870_regulators); i++) {
-               ri = &aat2870_regulators[i];
-               if (ri->desc.id == id)
-                       break;
-       }
-
-       if (i == ARRAY_SIZE(aat2870_regulators))
-               return NULL;
-
-       ri->enable_addr = AAT2870_LDO_EN;
-       ri->enable_shift = id - AAT2870_ID_LDOA;
-       ri->enable_mask = 0x1 << ri->enable_shift;
-
-       ri->voltage_addr = (id - AAT2870_ID_LDOA) / 2 ?
-                          AAT2870_LDO_CD : AAT2870_LDO_AB;
-       ri->voltage_shift = (id - AAT2870_ID_LDOA) % 2 ? 0 : 4;
-       ri->voltage_mask = 0xF << ri->voltage_shift;
-
-       return ri;
-}
-
-static int aat2870_regulator_probe(struct platform_device *pdev)
-{
-       struct aat2870_regulator *ri;
-       struct regulator_config config = { };
-       struct regulator_dev *rdev;
-
-       ri = aat2870_get_regulator(pdev->id);
-       if (!ri) {
-               dev_err(&pdev->dev, "Invalid device ID, %d\n", pdev->id);
-               return -EINVAL;
-       }
-       ri->aat2870 = dev_get_drvdata(pdev->dev.parent);
-
-       config.dev = &pdev->dev;
-       config.driver_data = ri;
-       config.init_data = dev_get_platdata(&pdev->dev);
-
-       rdev = devm_regulator_register(&pdev->dev, &ri->desc, &config);
-       if (IS_ERR(rdev)) {
-               dev_err(&pdev->dev, "Failed to register regulator %s\n",
-                       ri->desc.name);
-               return PTR_ERR(rdev);
-       }
-       platform_set_drvdata(pdev, rdev);
-
-       return 0;
-}
-
-static struct platform_driver aat2870_regulator_driver = {
-       .driver = {
-               .name   = "aat2870-regulator",
-               .probe_type = PROBE_PREFER_ASYNCHRONOUS,
-       },
-       .probe  = aat2870_regulator_probe,
-};
-
-static int __init aat2870_regulator_init(void)
-{
-       return platform_driver_register(&aat2870_regulator_driver);
-}
-subsys_initcall(aat2870_regulator_init);
-
-static void __exit aat2870_regulator_exit(void)
-{
-       platform_driver_unregister(&aat2870_regulator_driver);
-}
-module_exit(aat2870_regulator_exit);
-
-MODULE_DESCRIPTION("AnalogicTech AAT2870 Regulator");
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Jin Park <[email protected]>");
-MODULE_ALIAS("platform:aat2870-regulator");
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
index 2c206d2713e3..4acbac1bbb9e 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -388,13 +388,6 @@ config BACKLIGHT_88PM860X
        help
          Say Y to enable the backlight driver for Marvell 88PM8606.
 
-config BACKLIGHT_AAT2870
-       tristate "AnalogicTech AAT2870 Backlight"
-       depends on MFD_AAT2870_CORE
-       help
-         If you have a AnalogicTech AAT2870 say Y to enable the
-         backlight driver.
-
 config BACKLIGHT_LM3509
        tristate "Backlight Driver for LM3509"
        depends on I2C
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
index 0497eaa639cd..e11175bdd500 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
@@ -18,7 +18,6 @@ obj-$(CONFIG_LCD_TDO24M)              += tdo24m.o
 obj-$(CONFIG_LCD_VGG2432A4)            += vgg2432a4.o
 
 obj-$(CONFIG_BACKLIGHT_88PM860X)       += 88pm860x_bl.o
-obj-$(CONFIG_BACKLIGHT_AAT2870)                += aat2870_bl.o
 obj-$(CONFIG_BACKLIGHT_ADP8860)                += adp8860_bl.o
 obj-$(CONFIG_BACKLIGHT_ADP8870)                += adp8870_bl.o
 obj-$(CONFIG_BACKLIGHT_APPLE)          += apple_bl.o
diff --git a/drivers/video/backlight/aat2870_bl.c 
b/drivers/video/backlight/aat2870_bl.c
deleted file mode 100644
index 8b790df1e842..000000000000
--- a/drivers/video/backlight/aat2870_bl.c
+++ /dev/null
@@ -1,206 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/video/backlight/aat2870_bl.c
- *
- * Copyright (c) 2011, NVIDIA Corporation.
- * Author: Jin Park <[email protected]>
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mutex.h>
-#include <linux/delay.h>
-#include <linux/backlight.h>
-#include <linux/mfd/aat2870.h>
-
-struct aat2870_bl_driver_data {
-       struct platform_device *pdev;
-       struct backlight_device *bd;
-
-       int channels;
-       int max_current;
-       int brightness; /* current brightness */
-};
-
-static inline int aat2870_brightness(struct aat2870_bl_driver_data *aat2870_bl,
-                                    int brightness)
-{
-       struct backlight_device *bd = aat2870_bl->bd;
-       int val;
-
-       val = brightness * (aat2870_bl->max_current - 1);
-       val /= bd->props.max_brightness;
-
-       return val;
-}
-
-static inline int aat2870_bl_enable(struct aat2870_bl_driver_data *aat2870_bl)
-{
-       struct aat2870_data *aat2870
-                       = dev_get_drvdata(aat2870_bl->pdev->dev.parent);
-
-       return aat2870->write(aat2870, AAT2870_BL_CH_EN,
-                             (u8)aat2870_bl->channels);
-}
-
-static inline int aat2870_bl_disable(struct aat2870_bl_driver_data *aat2870_bl)
-{
-       struct aat2870_data *aat2870
-                       = dev_get_drvdata(aat2870_bl->pdev->dev.parent);
-
-       return aat2870->write(aat2870, AAT2870_BL_CH_EN, 0x0);
-}
-
-static int aat2870_bl_update_status(struct backlight_device *bd)
-{
-       struct aat2870_bl_driver_data *aat2870_bl = bl_get_data(bd);
-       struct aat2870_data *aat2870 =
-                       dev_get_drvdata(aat2870_bl->pdev->dev.parent);
-       int brightness = backlight_get_brightness(bd);
-       int ret;
-
-       if ((brightness < 0) || (bd->props.max_brightness < brightness)) {
-               dev_err(&bd->dev, "invalid brightness, %d\n", brightness);
-               return -EINVAL;
-       }
-
-       dev_dbg(&bd->dev, "brightness=%d, power=%d, state=%d\n",
-                bd->props.brightness, bd->props.power, bd->props.state);
-
-       ret = aat2870->write(aat2870, AAT2870_BLM,
-                            (u8)aat2870_brightness(aat2870_bl, brightness));
-       if (ret < 0)
-               return ret;
-
-       if (brightness == 0) {
-               ret = aat2870_bl_disable(aat2870_bl);
-               if (ret < 0)
-                       return ret;
-       } else if (aat2870_bl->brightness == 0) {
-               ret = aat2870_bl_enable(aat2870_bl);
-               if (ret < 0)
-                       return ret;
-       }
-
-       aat2870_bl->brightness = brightness;
-
-       return 0;
-}
-
-static const struct backlight_ops aat2870_bl_ops = {
-       .options = BL_CORE_SUSPENDRESUME,
-       .update_status = aat2870_bl_update_status,
-};
-
-static int aat2870_bl_probe(struct platform_device *pdev)
-{
-       struct aat2870_bl_platform_data *pdata = dev_get_platdata(&pdev->dev);
-       struct aat2870_bl_driver_data *aat2870_bl;
-       struct backlight_device *bd;
-       struct backlight_properties props;
-       int ret = 0;
-
-       if (!pdata) {
-               dev_err(&pdev->dev, "No platform data\n");
-               ret = -ENXIO;
-               goto out;
-       }
-
-       if (pdev->id != AAT2870_ID_BL) {
-               dev_err(&pdev->dev, "Invalid device ID, %d\n", pdev->id);
-               ret = -EINVAL;
-               goto out;
-       }
-
-       aat2870_bl = devm_kzalloc(&pdev->dev,
-                                 sizeof(struct aat2870_bl_driver_data),
-                                 GFP_KERNEL);
-       if (!aat2870_bl) {
-               ret = -ENOMEM;
-               goto out;
-       }
-
-       memset(&props, 0, sizeof(struct backlight_properties));
-
-       props.type = BACKLIGHT_RAW;
-       bd = devm_backlight_device_register(&pdev->dev, "aat2870-backlight",
-                                       &pdev->dev, aat2870_bl, &aat2870_bl_ops,
-                                       &props);
-       if (IS_ERR(bd)) {
-               dev_err(&pdev->dev,
-                       "Failed allocate memory for backlight device\n");
-               ret = PTR_ERR(bd);
-               goto out;
-       }
-
-       aat2870_bl->pdev = pdev;
-       platform_set_drvdata(pdev, aat2870_bl);
-
-       aat2870_bl->bd = bd;
-
-       if (pdata->channels > 0)
-               aat2870_bl->channels = pdata->channels;
-       else
-               aat2870_bl->channels = AAT2870_BL_CH_ALL;
-
-       if (pdata->max_current > 0)
-               aat2870_bl->max_current = pdata->max_current;
-       else
-               aat2870_bl->max_current = AAT2870_CURRENT_27_9;
-
-       if (pdata->max_brightness > 0)
-               bd->props.max_brightness = pdata->max_brightness;
-       else
-               bd->props.max_brightness = 255;
-
-       aat2870_bl->brightness = 0;
-       bd->props.power = BACKLIGHT_POWER_ON;
-       bd->props.brightness = bd->props.max_brightness;
-
-       ret = aat2870_bl_update_status(bd);
-       if (ret < 0) {
-               dev_err(&pdev->dev, "Failed to initialize\n");
-               return ret;
-       }
-
-       return 0;
-
-out:
-       return ret;
-}
-
-static void aat2870_bl_remove(struct platform_device *pdev)
-{
-       struct aat2870_bl_driver_data *aat2870_bl = platform_get_drvdata(pdev);
-       struct backlight_device *bd = aat2870_bl->bd;
-
-       bd->props.power = BACKLIGHT_POWER_OFF;
-       bd->props.brightness = 0;
-       backlight_update_status(bd);
-}
-
-static struct platform_driver aat2870_bl_driver = {
-       .driver = {
-               .name   = "aat2870-backlight",
-       },
-       .probe          = aat2870_bl_probe,
-       .remove         = aat2870_bl_remove,
-};
-
-static int __init aat2870_bl_init(void)
-{
-       return platform_driver_register(&aat2870_bl_driver);
-}
-subsys_initcall(aat2870_bl_init);
-
-static void __exit aat2870_bl_exit(void)
-{
-       platform_driver_unregister(&aat2870_bl_driver);
-}
-module_exit(aat2870_bl_exit);
-
-MODULE_DESCRIPTION("AnalogicTech AAT2870 Backlight");
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Jin Park <[email protected]>");
diff --git a/include/linux/mfd/aat2870.h b/include/linux/mfd/aat2870.h
deleted file mode 100644
index c7a3c53eba68..000000000000
--- a/include/linux/mfd/aat2870.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * linux/include/linux/mfd/aat2870.h
- *
- * Copyright (c) 2011, NVIDIA Corporation.
- * Author: Jin Park <[email protected]>
- */
-
-#ifndef __LINUX_MFD_AAT2870_H
-#define __LINUX_MFD_AAT2870_H
-
-#include <linux/debugfs.h>
-#include <linux/i2c.h>
-
-/* Register offsets */
-#define AAT2870_BL_CH_EN       0x00
-#define AAT2870_BLM            0x01
-#define AAT2870_BLS            0x02
-#define AAT2870_BL1            0x03
-#define AAT2870_BL2            0x04
-#define AAT2870_BL3            0x05
-#define AAT2870_BL4            0x06
-#define AAT2870_BL5            0x07
-#define AAT2870_BL6            0x08
-#define AAT2870_BL7            0x09
-#define AAT2870_BL8            0x0A
-#define AAT2870_FLR            0x0B
-#define AAT2870_FM             0x0C
-#define AAT2870_FS             0x0D
-#define AAT2870_ALS_CFG0       0x0E
-#define AAT2870_ALS_CFG1       0x0F
-#define AAT2870_ALS_CFG2       0x10
-#define AAT2870_AMB            0x11
-#define AAT2870_ALS0           0x12
-#define AAT2870_ALS1           0x13
-#define AAT2870_ALS2           0x14
-#define AAT2870_ALS3           0x15
-#define AAT2870_ALS4           0x16
-#define AAT2870_ALS5           0x17
-#define AAT2870_ALS6           0x18
-#define AAT2870_ALS7           0x19
-#define AAT2870_ALS8           0x1A
-#define AAT2870_ALS9           0x1B
-#define AAT2870_ALSA           0x1C
-#define AAT2870_ALSB           0x1D
-#define AAT2870_ALSC           0x1E
-#define AAT2870_ALSD           0x1F
-#define AAT2870_ALSE           0x20
-#define AAT2870_ALSF           0x21
-#define AAT2870_SUB_SET                0x22
-#define AAT2870_SUB_CTRL       0x23
-#define AAT2870_LDO_AB         0x24
-#define AAT2870_LDO_CD         0x25
-#define AAT2870_LDO_EN         0x26
-#define AAT2870_REG_NUM                0x27
-
-/* Device IDs */
-enum aat2870_id {
-       AAT2870_ID_BL,
-       AAT2870_ID_LDOA,
-       AAT2870_ID_LDOB,
-       AAT2870_ID_LDOC,
-       AAT2870_ID_LDOD
-};
-
-/* Backlight channels */
-#define AAT2870_BL_CH1         0x01
-#define AAT2870_BL_CH2         0x02
-#define AAT2870_BL_CH3         0x04
-#define AAT2870_BL_CH4         0x08
-#define AAT2870_BL_CH5         0x10
-#define AAT2870_BL_CH6         0x20
-#define AAT2870_BL_CH7         0x40
-#define AAT2870_BL_CH8         0x80
-#define AAT2870_BL_CH_ALL      0xFF
-
-/* Backlight current magnitude (mA) */
-enum aat2870_current {
-       AAT2870_CURRENT_0_45 = 1,
-       AAT2870_CURRENT_0_90,
-       AAT2870_CURRENT_1_80,
-       AAT2870_CURRENT_2_70,
-       AAT2870_CURRENT_3_60,
-       AAT2870_CURRENT_4_50,
-       AAT2870_CURRENT_5_40,
-       AAT2870_CURRENT_6_30,
-       AAT2870_CURRENT_7_20,
-       AAT2870_CURRENT_8_10,
-       AAT2870_CURRENT_9_00,
-       AAT2870_CURRENT_9_90,
-       AAT2870_CURRENT_10_8,
-       AAT2870_CURRENT_11_7,
-       AAT2870_CURRENT_12_6,
-       AAT2870_CURRENT_13_5,
-       AAT2870_CURRENT_14_4,
-       AAT2870_CURRENT_15_3,
-       AAT2870_CURRENT_16_2,
-       AAT2870_CURRENT_17_1,
-       AAT2870_CURRENT_18_0,
-       AAT2870_CURRENT_18_9,
-       AAT2870_CURRENT_19_8,
-       AAT2870_CURRENT_20_7,
-       AAT2870_CURRENT_21_6,
-       AAT2870_CURRENT_22_5,
-       AAT2870_CURRENT_23_4,
-       AAT2870_CURRENT_24_3,
-       AAT2870_CURRENT_25_2,
-       AAT2870_CURRENT_26_1,
-       AAT2870_CURRENT_27_0,
-       AAT2870_CURRENT_27_9
-};
-
-struct aat2870_register {
-       bool readable;
-       bool writeable;
-       u8 value;
-};
-
-struct aat2870_data {
-       struct device *dev;
-       struct i2c_client *client;
-
-       struct mutex io_lock;
-       struct aat2870_register *reg_cache; /* register cache */
-       int en_pin; /* enable GPIO pin (if < 0, ignore this value) */
-       bool is_enable;
-
-       /* init and uninit for platform specified */
-       int (*init)(struct aat2870_data *aat2870);
-       void (*uninit)(struct aat2870_data *aat2870);
-
-       /* i2c io funcntions */
-       int (*read)(struct aat2870_data *aat2870, u8 addr, u8 *val);
-       int (*write)(struct aat2870_data *aat2870, u8 addr, u8 val);
-       int (*update)(struct aat2870_data *aat2870, u8 addr, u8 mask, u8 val);
-};
-
-struct aat2870_subdev_info {
-       int id;
-       const char *name;
-       void *platform_data;
-};
-
-struct aat2870_platform_data {
-       int en_pin; /* enable GPIO pin (if < 0, ignore this value) */
-
-       struct aat2870_subdev_info *subdevs;
-       int num_subdevs;
-
-       /* init and uninit for platform specified */
-       int (*init)(struct aat2870_data *aat2870);
-       void (*uninit)(struct aat2870_data *aat2870);
-};
-
-struct aat2870_bl_platform_data {
-       /* backlight channels, default is AAT2870_BL_CH_ALL */
-       int channels;
-       /* backlight current magnitude, default is AAT2870_CURRENT_27_9 */
-       int max_current;
-       /* maximum brightness, default is 255 */
-       int max_brightness;
-};
-
-#endif /* __LINUX_MFD_AAT2870_H */
-- 
2.53.0


Reply via email to