]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00230923 Revert " input: FSL MPR121 capacitive touch button."
authorZhang Jiejing <jiejing.zhang@freescale.com>
Wed, 24 Oct 2012 04:49:23 +0000 (12:49 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:13:17 +0000 (14:13 +0200)
There was a mpr121_touchkey.c driver already upstream,
the orignall driver by 2.6.35 kernel development
should be removed to avoid duplicate.

This reverts commit 3d6df22ad54a14bc8cebb7753c36f7b3cd811665.

Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
drivers/input/keyboard/Kconfig
drivers/input/keyboard/Makefile
drivers/input/keyboard/mpr121.c [deleted file]
include/linux/i2c/mpr.h [deleted file]

index b9474aa7f0435e1500facb35b3273b594cfcc073..b4dee9d5a0555ff76dabb1b85b7e23c92db63222 100644 (file)
@@ -563,41 +563,4 @@ config KEYBOARD_W90P910
          To compile this driver as a module, choose M here: the
          module will be called w90p910_keypad.
 
-config KEYBOARD_MXC
-       tristate "MXC Keypad Driver"
-       depends on ARCH_MXC
-       help
-         This is the Keypad driver for the Freescale MXC application
-         processors.
-
-config KEYBOARD_MXS
-       tristate "MXS keyboard"
-       depends on ARCH_MXS
-       help
-         This is the Keypad driver for the Freescale mxs soc
-
-
-config KEYBOARD_MC9S08DZ60
-       tristate "mc9s08dz60 keyboard"
-       depends on MXC_PMIC_MC9S08DZ60
-       help
-        -to be written-
-
-config KEYBOARD_MPR084
-       tristate "Freescale MPR084 Touch Keypad Driver"
-       depends on ARCH_MX37
-       help
-         This is the Keypad driver for the Freescale Proximity Capacitive
-         Touch Sensor controller chip.
-
-config KEYBOARD_MPR121
-       tristate "Freescale MPR121 Touch Keypad Driver"
-       depends on I2C
-       help
-         Say Y here if you have the  touchkey Freescale Proximity Capacitive
-         Touch Sensor controller chip in your system.
-
-         If unsure, say N.
-
-         To compile this driver as a module, choose M here
 endif
index 6791e8b45289498c00b2e39aca1020113258ee53..ddde0fd476f744c2aa2cd250362f809c4469310b 100644 (file)
@@ -51,9 +51,3 @@ obj-$(CONFIG_KEYBOARD_TNETV107X)      += tnetv107x-keypad.o
 obj-$(CONFIG_KEYBOARD_TWL4030)         += twl4030_keypad.o
 obj-$(CONFIG_KEYBOARD_XTKBD)           += xtkbd.o
 obj-$(CONFIG_KEYBOARD_W90P910)         += w90p910_keypad.o
-obj-$(CONFIG_KEYBOARD_MXC)             += mxc_keyb.o
-obj-$(CONFIG_KEYBOARD_MXC)             += mxc_pwrkey.o
-obj-$(CONFIG_KEYBOARD_MPR084)          += mpr084.o
-obj-$(CONFIG_KEYBOARD_MXS)             += mxs-kbd.o
-obj-$(CONFIG_KEYBOARD_MC9S08DZ60)      += mc9s08dz60_keyb.o
-obj-$(CONFIG_KEYBOARD_MPR121)          += mpr121.o
diff --git a/drivers/input/keyboard/mpr121.c b/drivers/input/keyboard/mpr121.c
deleted file mode 100644 (file)
index 7aae302..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2010-2011 Freescale Semiconductor, Inc. All Rights Reserved.
- */
-
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * mpr121.c - Touchkey driver for Freescale MPR121 Capacitive Touch
- * Sensor Controllor
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-#include <linux/i2c/mpr.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/irq.h>
-#include <linux/slab.h>
-#include <linux/delay.h>
-#include <linux/bitops.h>
-
-
-struct mpr121_touchkey_data {
-       struct i2c_client       *client;
-       struct input_dev        *input_dev;
-       unsigned int            key_val;
-       int                     statusbits;
-       int                     keycount;
-       u16                     keycodes[MPR121_MAX_KEY_COUNT];
-};
-
-struct mpr121_init_register {
-       int addr;
-       u8 val;
-};
-
-static struct mpr121_init_register init_reg_table[] = {
-       {MHD_RISING_ADDR,       0x1},
-       {NHD_RISING_ADDR,       0x1},
-       {NCL_RISING_ADDR,       0x0},
-       {FDL_RISING_ADDR,       0x0},
-       {MHD_FALLING_ADDR,      0x1},
-       {NHD_FALLING_ADDR,      0x1},
-       {NCL_FALLING_ADDR,      0xff},
-       {FDL_FALLING_ADDR,      0x02},
-       {FILTER_CONF_ADDR,      0x04},
-       {AFE_CONF_ADDR,         0x0b},
-       {AUTO_CONFIG_CTRL_ADDR, 0x0b},
-};
-
-static irqreturn_t mpr_touchkey_interrupt(int irq, void *dev_id)
-{
-       struct mpr121_touchkey_data *data = dev_id;
-       struct i2c_client *client = data->client;
-       struct input_dev *input = data->input_dev;
-       unsigned int key_num, pressed;
-       int reg;
-
-       reg = i2c_smbus_read_byte_data(client, ELE_TOUCH_STATUS_1_ADDR);
-       if (reg < 0) {
-               dev_err(&client->dev, "i2c read error [%d]\n", reg);
-               goto out;
-       }
-
-       reg <<= 8;
-       reg |= i2c_smbus_read_byte_data(client, ELE_TOUCH_STATUS_0_ADDR);
-       if (reg < 0) {
-               dev_err(&client->dev, "i2c read error [%d]\n", reg);
-               goto out;
-       }
-
-       reg &= TOUCH_STATUS_MASK;
-       /* use old press bit to figure out which bit changed */
-       key_num = ffs(reg ^ data->statusbits) - 1;
-       /* use the bit check the press status */
-       pressed = (reg & (1 << (key_num))) >> key_num;
-       data->statusbits = reg;
-       data->key_val = data->keycodes[key_num];
-
-       input_event(input, EV_MSC, MSC_SCAN, data->key_val);
-       input_report_key(input, data->key_val, pressed);
-       input_sync(input);
-
-       dev_dbg(&client->dev, "key %d %d %s\n", key_num, data->key_val,
-               pressed ? "pressed" : "released");
-
-out:
-       return IRQ_HANDLED;
-}
-
-static int mpr121_phys_init(struct mpr121_platform_data *pdata,
-                           struct mpr121_touchkey_data *data,
-                           struct i2c_client *client)
-{
-       struct mpr121_init_register *reg;
-       unsigned char usl, lsl, tl;
-       int i, t, vdd, ret;
-
-       /* setup touch/release threshold for ele0-ele11 */
-       for (i = 0; i <= MPR121_MAX_KEY_COUNT; i++) {
-               t = ELE0_TOUCH_THRESHOLD_ADDR + (i * 2);
-               ret = i2c_smbus_write_byte_data(client, t, TOUCH_THRESHOLD);
-               if (ret < 0)
-                       goto err_i2c_write;
-               ret = i2c_smbus_write_byte_data(client, t + 1,
-                                               RELEASE_THRESHOLD);
-               if (ret < 0)
-                       goto err_i2c_write;
-       }
-       /* setup init register */
-       for (i = 0; i < ARRAY_SIZE(init_reg_table); i++) {
-               reg = &init_reg_table[i];
-               ret = i2c_smbus_write_byte_data(client, reg->addr, reg->val);
-               if (ret < 0)
-                       goto err_i2c_write;
-       }
-       /* setup auto-register by vdd,the formula please ref:AN3889 */
-       vdd = pdata->vdd_uv / 1000;
-       usl = ((vdd - 700) * 256) / vdd;
-       lsl = (usl * 65) / 100;
-       tl = (usl * 90) / 100;
-       ret = i2c_smbus_write_byte_data(client, AUTO_CONFIG_USL_ADDR, usl);
-       if (ret < 0)
-               goto err_i2c_write;
-       ret = i2c_smbus_write_byte_data(client, AUTO_CONFIG_LSL_ADDR, lsl);
-       if (ret < 0)
-               goto err_i2c_write;
-       ret = i2c_smbus_write_byte_data(client, AUTO_CONFIG_TL_ADDR, tl);
-       if (ret < 0)
-               goto err_i2c_write;
-       ret = i2c_smbus_write_byte_data(client, ELECTRODE_CONF_ADDR,
-                                       data->keycount);
-       if (ret < 0)
-               goto err_i2c_write;
-
-       dev_info(&client->dev, "mpr121: config as enable %x of electrode.\n",
-                data->keycount);
-
-       return 0;
-
-err_i2c_write:
-       dev_err(&client->dev, "i2c write error[%d]\n", ret);
-       return ret;
-}
-
-static int __devinit mpr_touchkey_probe(struct i2c_client *client,
-                                       const struct i2c_device_id *id)
-{
-       struct mpr121_platform_data *pdata;
-       struct mpr121_touchkey_data *data;
-       struct input_dev *input_dev;
-       int error;
-       int i;
-
-       pdata = client->dev.platform_data;
-       if (!pdata) {
-               dev_err(&client->dev, "no platform data defined\n");
-               return -EINVAL;
-       }
-
-       data = kzalloc(sizeof(struct mpr121_touchkey_data), GFP_KERNEL);
-       input_dev = input_allocate_device();
-       if (!data || !input_dev) {
-               dev_err(&client->dev, "Falied to allocate memory\n");
-               error = -ENOMEM;
-               goto err_free_mem;
-       }
-
-       data->client = client;
-       data->input_dev = input_dev;
-       data->keycount = pdata->keycount;
-
-       if (data->keycount > MPR121_MAX_KEY_COUNT) {
-               dev_err(&client->dev, "Too many key defined\n");
-               error = -EINVAL;
-               goto err_free_mem;
-       }
-
-       error = mpr121_phys_init(pdata, data, client);
-       if (error < 0) {
-               dev_err(&client->dev, "Failed to init register\n");
-               goto err_free_mem;
-       }
-
-       i2c_set_clientdata(client, data);
-
-       input_dev->name = "FSL MPR121 Touchkey";
-       input_dev->id.bustype = BUS_I2C;
-       input_dev->dev.parent = &client->dev;
-       input_dev->keycode = pdata->matrix;
-       input_dev->keycodesize = sizeof(pdata->matrix[0]);
-       input_dev->keycodemax = data->keycount;
-
-       for (i = 0; i < input_dev->keycodemax; i++) {
-               __set_bit(pdata->matrix[i], input_dev->keybit);
-               data->keycodes[i] = pdata->matrix[i];
-       }
-
-       input_set_capability(input_dev, EV_MSC, MSC_SCAN);
-       input_set_drvdata(input_dev, data);
-
-       error = request_threaded_irq(client->irq, NULL,
-                                    mpr_touchkey_interrupt,
-                                    IRQF_TRIGGER_FALLING,
-                                    client->dev.driver->name, data);
-       if (error) {
-               dev_err(&client->dev, "Failed to register interrupt\n");
-               goto err_free_mem;
-       }
-
-       error = input_register_device(input_dev);
-       if (error)
-               goto err_free_irq;
-       i2c_set_clientdata(client, data);
-       device_init_wakeup(&client->dev, pdata->wakeup);
-       dev_info(&client->dev, "Mpr121 touch keyboard init success.\n");
-       return 0;
-
-err_free_irq:
-       free_irq(client->irq, data);
-err_free_mem:
-       input_free_device(input_dev);
-       kfree(data);
-       return error;
-}
-
-static int __devexit mpr_touchkey_remove(struct i2c_client *client)
-{
-       struct mpr121_touchkey_data *data = i2c_get_clientdata(client);
-
-       free_irq(client->irq, data);
-       input_unregister_device(data->input_dev);
-       kfree(data);
-
-       return 0;
-}
-
-#ifdef CONFIG_PM
-static int mpr_suspend(struct i2c_client *client, pm_message_t mesg)
-{
-       if (device_may_wakeup(&client->dev))
-               enable_irq_wake(client->irq);
-
-       i2c_smbus_write_byte_data(client, ELECTRODE_CONF_ADDR, 0x00);
-
-       return 0;
-}
-
-static int mpr_resume(struct i2c_client *client)
-{
-       struct mpr121_touchkey_data *data = i2c_get_clientdata(client);
-
-       if (device_may_wakeup(&client->dev))
-               disable_irq_wake(client->irq);
-
-       i2c_smbus_write_byte_data(client, ELECTRODE_CONF_ADDR, data->keycount);
-
-       return 0;
-}
-#else
-static int mpr_suspend(struct i2c_client *client, pm_message_t mesg) {}
-static int mpr_resume(struct i2c_client *client) {}
-#endif
-
-static const struct i2c_device_id mpr121_id[] = {
-       {"mpr121_touchkey", 0},
-       { }
-};
-
-static struct i2c_driver mpr_touchkey_driver = {
-       .driver = {
-               .name = "mpr121",
-               .owner = THIS_MODULE,
-       },
-       .id_table = mpr121_id,
-       .probe  = mpr_touchkey_probe,
-       .remove = __devexit_p(mpr_touchkey_remove),
-       .suspend = mpr_suspend,
-       .resume = mpr_resume,
-};
-
-static int __init mpr_touchkey_init(void)
-{
-       return i2c_add_driver(&mpr_touchkey_driver);
-}
-
-static void __exit mpr_touchkey_exit(void)
-{
-       i2c_del_driver(&mpr_touchkey_driver);
-}
-
-module_init(mpr_touchkey_init);
-module_exit(mpr_touchkey_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Freescale Semiconductor, Inc.");
-MODULE_DESCRIPTION("Touch Key driver for FSL MPR121 Chip");
diff --git a/include/linux/i2c/mpr.h b/include/linux/i2c/mpr.h
deleted file mode 100644 (file)
index ded00db..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2010-2011 Freescale Semiconductor, Inc. All Rights Reserved.
- */
-
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/* mpr.h - Header file for Freescale MPR121 Capacitive Touch Sensor Controllor */
-
-#ifndef MPR_H
-#define MPR_H
-
-/* Register definitions */
-#define ELE_TOUCH_STATUS_0_ADDR        0x0
-#define ELE_TOUCH_STATUS_1_ADDR        0X1
-#define MHD_RISING_ADDR                0x2b
-#define NHD_RISING_ADDR                0x2c
-#define NCL_RISING_ADDR                0x2d
-#define FDL_RISING_ADDR                0x2e
-#define MHD_FALLING_ADDR       0x2f
-#define NHD_FALLING_ADDR       0x30
-#define NCL_FALLING_ADDR       0x31
-#define FDL_FALLING_ADDR       0x32
-#define ELE0_TOUCH_THRESHOLD_ADDR      0x41
-#define ELE0_RELEASE_THRESHOLD_ADDR    0x42
-/* ELE0...ELE11's threshold will set in a loop */
-#define AFE_CONF_ADDR                  0x5c
-#define FILTER_CONF_ADDR               0x5d
-
-/* ELECTRODE_CONF: this register is most important register, it
- * control how many of electrode is enabled. If you set this register
- * to 0x0, it make the sensor going to suspend mode. Other value(low
- * bit is non-zero) will make the sensor into Run mode.  This register
- * should be write at last.
- */
-#define ELECTRODE_CONF_ADDR            0x5e
-#define AUTO_CONFIG_CTRL_ADDR          0x7b
-/* AUTO_CONFIG_USL: Upper Limit for auto baseline search, this
- * register is related to VDD supplied on your board, the value of
- * this register is calc by EQ: `((VDD-0.7)/VDD) * 256`.
- * AUTO_CONFIG_LSL: Low Limit of auto baseline search. This is 65% of
- * USL AUTO_CONFIG_TL: The Traget Level of auto baseline search, This
- * is 90% of USL  */
-#define AUTO_CONFIG_USL_ADDR           0x7d
-#define AUTO_CONFIG_LSL_ADDR           0x7e
-#define AUTO_CONFIG_TL_ADDR            0x7f
-
-/* Threshold of touch/release trigger */
-#define TOUCH_THRESHOLD                        0x0f
-#define RELEASE_THRESHOLD              0x0a
-/* Mask Button bits of STATUS_0 & STATUS_1 register */
-#define TOUCH_STATUS_MASK              0xfff
-/* MPR121 have 12 electrodes */
-#define MPR121_MAX_KEY_COUNT           12
-
-
-/**
- * @keycount: how many key maped
- * @vdd_uv: voltage of vdd supply the chip in uV
- * @matrix: maxtrix of keys
- * @wakeup: can key wake up system.
- */
-struct mpr121_platform_data {
-       u16 keycount;
-       u16 *matrix;
-       int wakeup;
-       int vdd_uv;
-};
-
-#endif