summaryrefslogtreecommitdiff
path: root/drivers/misc
diff options
context:
space:
mode:
authorDavide Garberi <dade.garberi@gmail.com>2018-09-22 14:21:47 +0200
committerDavide Garberi <dade.garberi@gmail.com>2022-07-27 18:59:05 +0200
commit0c189352071aa8314bee354d9d962212ebf8e705 (patch)
treef6949b1a5f35f66dd86a35924d3f1d3102ea6877 /drivers/misc
parent297ade96c39b112ce592d548530d9422cb4cc8eb (diff)
cclogic: Remove unused files
* These files are completely unused and not build by any device * Probably not even ZUK knows why these files were here Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/cclogic/Kconfig21
-rw-r--r--drivers/misc/cclogic/Makefile3
-rw-r--r--drivers/misc/cclogic/pi5usb30216.c543
-rw-r--r--drivers/misc/cclogic/ptn5150h.c398
-rw-r--r--drivers/misc/cclogic/tusb320.c423
5 files changed, 0 insertions, 1388 deletions
diff --git a/drivers/misc/cclogic/Kconfig b/drivers/misc/cclogic/Kconfig
index 445243f08079..dfe6b585a41c 100644
--- a/drivers/misc/cclogic/Kconfig
+++ b/drivers/misc/cclogic/Kconfig
@@ -9,14 +9,6 @@ menuconfig CCLOGIC
if CCLOGIC
-
-config TYPEC_CCLOGIC_PI5USB
- depends on I2C
- tristate "Pericom Pi5usb30216 Support"
- ---help---
- The Pericom pi5usb30216 chip is used as cc-logic of TYPEC
- interface.
-
config TYPEC_CCLOGIC_PI5USBD
depends on I2C
tristate "Pericom Pi5usb30216d Support"
@@ -24,23 +16,10 @@ config TYPEC_CCLOGIC_PI5USBD
The Pericom pi5usb30216d chip is used as cc-logic of TYPEC
interface.
-config TYPEC_CCLOGIC_TUSB320
- depends on I2C
- tristate "TI TUSB320 Support"
- ---help---
- The TI tusb320 chip is used as cc-logic of TYPEC
- interface.
-
config TYPEC_CCLOGIC_TUSB320HAI
depends on I2C
tristate "TI TUSB320Hai Support"
---help---
The TI tusb320hai chip is used as cc-logic of TYPEC
-config TYPEC_CCLOGIC_PTN5150H
- depends on I2C
- tristate "NXP ptn5150h Support"
- ---help---
- The NXP ptn5150h chip is used as cc-logic of TYPEC
-
endif # CCLOGIC
diff --git a/drivers/misc/cclogic/Makefile b/drivers/misc/cclogic/Makefile
index 5a15aeb0d038..b0256a428144 100644
--- a/drivers/misc/cclogic/Makefile
+++ b/drivers/misc/cclogic/Makefile
@@ -4,9 +4,6 @@
obj-$(CONFIG_CCLOGIC) += cclogic-core.o
obj-$(CONFIG_CCLOGIC) += cclogic-class.o
-obj-$(CONFIG_TYPEC_CCLOGIC_PI5USB) += pi5usb30216.o
-obj-$(CONFIG_TYPEC_CCLOGIC_TUSB320) += tusb320.o
obj-$(CONFIG_TYPEC_CCLOGIC_TUSB320HAI) += tusb320hai.o
-obj-$(CONFIG_TYPEC_CCLOGIC_PTN5150H) += ptn5150h.o
obj-$(CONFIG_TYPEC_CCLOGIC_PI5USBD) += pi5usb30216d.o
diff --git a/drivers/misc/cclogic/pi5usb30216.c b/drivers/misc/cclogic/pi5usb30216.c
deleted file mode 100644
index d4f6ecf63258..000000000000
--- a/drivers/misc/cclogic/pi5usb30216.c
+++ /dev/null
@@ -1,543 +0,0 @@
-//
-// pi5usb30216.c
-//
-// Drivers for usb type-C interface's CC-Logic chip of Pericom
-//
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/io.h>
-#include <asm/uaccess.h>
-#include <linux/fs.h>
-#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-#include <linux/i2c-dev.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/miscdevice.h>
-#include <linux/regulator/consumer.h>
-#include <linux/of_gpio.h>
-#include <linux/wakelock.h>
-#include "cclogic-core.h"
-
-
-#define DRIVER_NAME "pericom,pi5usb30216"
-
-
-#define MAX_RETRIES_FOR_PLUGIN_SLOW 4 //about 2 seconds
-
-#define REG_BASE 1
-#define MAX_REG_NUM 4
-
-#define REG_ID (0x01-REG_BASE)
-#define VERSION_ID (0x00<<3)
-#define VENDOR_ID (0x00<<0)
-#define PIUSB30216_DEVID (VERSION_ID|VENDOR_ID)
-
-#define REG_CONTROL (0x02-REG_BASE)
-#define POWERSAVING_MODE (0x01<<7)
-#define PORT_SETTING_INTERRUPT_NOMASK (0x00)
-#define CHARGING_CURRENT_MODE_DEFAULT (0x00<<3)
-#define CHARGING_CURRENT_MODE_MEDIUM (0x01<<3)
-#define CHARGING_CURRENT_MODE_HIGH (0x02<<3)
-#define PORT_SETTING_DEVICE (0x00<<1)
-#define PORT_SETTING_HOST (0x01<<1)
-#define PORT_SETTING_DUALROLE (0x02<<1)
-#define PORT_SETTING_INTERRUPT_MASK (0x01)
-#define PORT_SETTING_INTERRUPT_NOMASK (0x00)
-
-#define REG_INTERRUPT (0x03-REG_BASE)
-#define INTERRUPT_STATE_ATTACHED_BIT (0x01)
-#define INTERRUPT_STATE_DETACHED_BIT (0x02)
-
-#define REG_CC_STATE (0x04-REG_BASE)
-#define CCSTATUS_VBUS_BIT (0x01<<7)
-#define CCSTATUS_CHARGING_CURRENT_BIT (0x03<<5)
-#define CCSTATUS_CHARGING_CURRENT_STANDBY (0x00<<5)
-#define CCSTATUS_CHARGING_CURRENT_DEFAULT (0x01<<5)
-#define CCSTATUS_CHARGING_CURRENT_MEDIUM (0x02<<5)
-#define CCSTATUS_CHARGING_CURRENT_HIGH (0x03<<5)
-
-#define CCSTATUS_ATTACHED_PORT_STATUS_BIT (0x07<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_STANDBY (0x00<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_DEVICE (0x01<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_HOST (0x02<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_AUDIO (0x03<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_DEBUG (0x04<<2)
-#define CCSTATUS_ATTACHED_PORT_STATUS_VBUS_CC1_CC2 (0x05<<2)
-
-#define CCSTATUS_PLUG_POLARITY_BIT (0x03)
-#define CCSTATUS_PLUG_POLARITY_STANDBY (0x00)
-#define CCSTATUS_PLUG_POLARITY_CC1 (0x01)
-#define CCSTATUS_PLUG_POLARITY_CC2 (0x02)
-#define CCSTATUS_PLUG_POLARITY_CC1_CC2 (0x03)
-
-
-
-/**
- * pi5usb30216_write_i2c()
- */
-static int pi5usb30216_write_i2c(struct i2c_client *client, u8 reg, u8 data)
-{
- int ret = 0;
- char val[MAX_REG_NUM] = {0};
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- val[reg] = data;
-
- ret = i2c_master_send(client, val, 2);
- if (ret < 0) {
- dev_err(&client->dev,"cclogic:%s-->i2c send error\n",__func__);
- return ret;
- }
-
- return 0;
-
-}
-/**
- * pi5usb30216_parse_cclogic_state()
- */
-static void pi5usb30216_parse_cclogic_state(int reg3, int reg4,
- struct cclogic_state *result)
-{
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- result->vbus = false;
- result->cc = CCLOGIC_CC_UNKNOWN;
- result->evt = CCLOGIC_EVENT_NONE;
- result->device = CCLOGIC_DEVICE_UNKNOWN;
- result->charger = CCLOGIC_CURRENT_NONE;
-
- if((reg3&INTERRUPT_STATE_DETACHED_BIT) &&
- (reg3&INTERRUPT_STATE_ATTACHED_BIT)){
- pr_err("cclogic:%s-->detach and attach in the same time\n",
- __func__);
- }else{
- if(reg3&INTERRUPT_STATE_DETACHED_BIT){
- result->evt = CCLOGIC_EVENT_DETACHED;
- }
- if(reg3&INTERRUPT_STATE_ATTACHED_BIT){
- result->evt = CCLOGIC_EVENT_ATTACHED;
- }
- }
-
- if(reg4&CCSTATUS_VBUS_BIT){
- result->vbus = true;
- }
-
- switch(reg4&CCSTATUS_CHARGING_CURRENT_BIT){
- case CCSTATUS_CHARGING_CURRENT_STANDBY:
- result->charger = CCLOGIC_CURRENT_NONE;
- break;
- case CCSTATUS_CHARGING_CURRENT_DEFAULT:
- result->charger = CCLOGIC_CURRENT_DEFAULT;
- break;
- case CCSTATUS_CHARGING_CURRENT_MEDIUM:
- result->charger = CCLOGIC_CURRENT_MEDIUM;
- break;
- case CCSTATUS_CHARGING_CURRENT_HIGH:
- result->charger = CCLOGIC_CURRENT_HIGH;
- break;
- }
-
- switch(reg4&CCSTATUS_PLUG_POLARITY_BIT){
- case CCSTATUS_PLUG_POLARITY_CC1:
- result->cc = CCLOGIC_CC1;
- break;
- case CCSTATUS_PLUG_POLARITY_CC2:
- result->cc = CCLOGIC_CC2;
- break;
- case CCSTATUS_PLUG_POLARITY_STANDBY:
- case CCSTATUS_PLUG_POLARITY_CC1_CC2:
- default:
- break;
- }
-
- switch(reg4&CCSTATUS_ATTACHED_PORT_STATUS_BIT){
- case CCSTATUS_ATTACHED_PORT_STATUS_STANDBY:
- result->device = CCLOGIC_NO_DEVICE;
- break;
- case CCSTATUS_ATTACHED_PORT_STATUS_DEVICE:
- result->device = CCLOGIC_USB_DEVICE;
- break;
- case CCSTATUS_ATTACHED_PORT_STATUS_HOST:
- result->device = CCLOGIC_USB_HOST;
- break;
- case CCSTATUS_ATTACHED_PORT_STATUS_DEBUG:
- result->device = CCLOGIC_DEBUG_DEVICE;
- break;
- case CCSTATUS_ATTACHED_PORT_STATUS_AUDIO://mode audio
- result->device = CCLOGIC_AUDIO_DEVICE;
- break;
- default:
- result->device = CCLOGIC_DEVICE_UNKNOWN;
- break;
- }
-
-}
-
-/**
- * pi5usb30216_get_state()
- */
-static int pi5usb30216_get_state(struct i2c_client *client,
- struct cclogic_state *state)
-{
- char reg[MAX_REG_NUM] = {0};
- static int reg3,reg4;
- static int repeat_times = 0;
- static int audio_accessory_flag = 0;
- static int debug_accessory_flag = 0;
- int ret = 0;
-
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- state->vbus = false;
- state->cc = CCLOGIC_CC_UNKNOWN;
- state->evt = CCLOGIC_EVENT_DETACHED;
- state->device = CCLOGIC_DEVICE_UNKNOWN;
- state->charger = CCLOGIC_CURRENT_NONE;
-
- mdelay(10);
-
- ret = i2c_master_recv(client, reg, MAX_REG_NUM);
- if (ret < 0) {
- dev_err(&client->dev,"cclogic:%s-->i2c recv error\n", __func__);
- return ret;
- }
- pr_debug("cclogic:%s-->i2c reg value: 0x%02x 0x%02x 0x%02x 0x%02x\n",
- __func__,reg[0],reg[1],reg[2],reg[3]);
-
- reg3 = reg[REG_INTERRUPT];
- reg4 = reg[REG_CC_STATE];
-
- if(repeat_times > 3){
- repeat_times = 0;
- }
-
- switch(reg3){
- case 0x01:
- switch(reg4){
- case 0x00:
- repeat_times = 0;
- audio_accessory_flag = 0;
- debug_accessory_flag = 0;
- ret = 0;
- break;
- case 0x05:
- case 0x06:
- if(repeat_times>=2){
- repeat_times = 0;
- mdelay(50);
- //Device Plug in
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- }else{
- repeat_times++;
- mdelay(240);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,
- PORT_SETTING_INTERRUPT_MASK);//0x01
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- mdelay(100);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,\
- CHARGING_CURRENT_MODE_DEFAULT|\
- PORT_SETTING_DUALROLE|\
- PORT_SETTING_INTERRUPT_NOMASK);//0x04
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- ret = -1;
- }
- break;
- case 0x13:
- if(repeat_times >= 1){
- repeat_times = 0;
- mdelay(50);
- debug_accessory_flag = 1;
- //Debug Plug in
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- }else{
- repeat_times++;
- //p2_3 = 0;
- debug_accessory_flag = 0;
- mdelay(240);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,
- PORT_SETTING_INTERRUPT_MASK);//0x01
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- mdelay(100);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,\
- CHARGING_CURRENT_MODE_DEFAULT|\
- PORT_SETTING_DUALROLE|\
- PORT_SETTING_INTERRUPT_NOMASK);//0x04
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- ret = 0;
- }
- break;
- case 0xa8:
- ret = 0;
- break;
- case 0x0f:
- audio_accessory_flag=1;
- mdelay(50);
- //Audio Plug in
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0x93:
- if(debug_accessory_flag){
- reg4 &= 0x7f;
- }
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0x8f:
- if(audio_accessory_flag){
- reg4 &= 0x7f;
- }
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0xa9:
- case 0xaa:
- case 0xc9:
- case 0xca:
- case 0xe9:
- case 0xea:
- //Host plug in
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- default:
- ret = -1;
- break;
- }
- break;
- case 0x00:
- switch(reg4){
- case 0x00:
- repeat_times = 0;
- audio_accessory_flag = 0;
- debug_accessory_flag = 0;
- ret = 0;
- break;
- case 0x97:
- if(debug_accessory_flag || audio_accessory_flag){
- mdelay(100);
- ret = 0;
- }else if(repeat_times>=3){
- repeat_times = 0;
- ret = 0;
- }else{
- repeat_times++;
- mdelay(240);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,
- PORT_SETTING_INTERRUPT_MASK);//0x01
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- mdelay(100);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,\
- CHARGING_CURRENT_MODE_DEFAULT|\
- PORT_SETTING_DUALROLE|\
- PORT_SETTING_INTERRUPT_NOMASK);//0x04
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",
- __func__);
- return ret;
- }
- ret = 0;
- }
- break;
- case 0x93:
- if(debug_accessory_flag){
- reg4 &= 0x7f;
- }
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0x8f:
- if(audio_accessory_flag){
- reg4 &= 0x7f;
- }
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0xa9:
- case 0xaa:
- case 0xc9:
- case 0xca:
- case 0xe9:
- case 0xea:
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- case 0x04:
- case 0x05:
- case 0x06:
- default:
- ret = -1;
- break;
- }
- break;
- case 0x02:
- audio_accessory_flag = 0;
- debug_accessory_flag = 0;
- repeat_times=0;
- pi5usb30216_parse_cclogic_state(reg3,reg4,state);
- ret = 0;
- break;
- default:
- audio_accessory_flag = 0;
- debug_accessory_flag = 0;
- repeat_times=0;
- ret = 0;
- break;
- }
-
- return ret;
-}
-
-/**
- * pi5usb30216_check_chip()
- */
-static int pi5usb30216_check_chip(struct i2c_client *client)
-{
- int ret;
- char reg_test_w[MAX_REG_NUM] = {0};
- char reg_test_r[MAX_REG_NUM] = {0};
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- /* ID check */
- ret = i2c_master_recv(client, reg_test_r, 2);
- if(ret<0){
- dev_err(&client->dev,"cclogic:%s: i2c read error\n", __func__);
- return ret;
- }
-
- if(reg_test_r[REG_ID] != PIUSB30216_DEVID){
- dev_err(&client->dev,"cclogic:%s: devid mismatch"
- " (0x%02x!=0x%02x)\n", __func__,reg_test_r[REG_ID],
- PIUSB30216_DEVID);
- return -ENODEV;
- }
-
- /* i2c R/W test */
- reg_test_w[REG_CONTROL] = 0x55;
- ret = i2c_master_send(client, reg_test_w, 2);
- if (ret < 0) {
- dev_err(&client->dev,"cclogic:%s:i2c write error\n", __func__);
- return ret;
- }
-
- ret = i2c_master_recv(client, reg_test_r, 2);
- if (ret < 0) {
- dev_err(&client->dev,"cclogic:%s:i2c read error\n", __func__);
- return ret;
- }
- if(reg_test_r[REG_CONTROL]!=0x55){
- dev_err(&client->dev,"cclogic:%s:i2c reg r/w test failed\n",
- __func__);
- return -ENODEV;
- }
-
- return 0;
-
-}
-
-/**
- * pi5usb30216_reset_chip()
- */
-static int pi5usb30216_reset_chip(struct i2c_client *client)
-{
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- return 0;
-}
-
-/**
- * pi5usb30216_config_chip()
- */
-static int pi5usb30216_config_chip(struct i2c_client *client)
-{
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- ret = pi5usb30216_write_i2c(client,REG_CONTROL,
- CHARGING_CURRENT_MODE_DEFAULT|PORT_SETTING_DUALROLE|\
- PORT_SETTING_INTERRUPT_NOMASK);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
-
- return 0;
-}
-
-static struct cclogic_chip pi5usb30216_chip = {
- .chip_name = DRIVER_NAME,
- .get_state = pi5usb30216_get_state,
- .ack_irq = NULL,
- .chip_config = pi5usb30216_config_chip,
- .chip_reset = pi5usb30216_reset_chip,
- .chip_check = pi5usb30216_check_chip,
- .typec_version = 10,//spec 1.0
- .support = 0,
-};
-
-/**
- * pi5usb30216_init()
- */
-static int __init pi5usb30216_init(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- return cclogic_register(&pi5usb30216_chip);
-}
-
-/**
- * pi5usb30216_exit()
- */
-static void __exit pi5usb30216_exit(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- cclogic_unregister(&pi5usb30216_chip);
- return;
-}
-
-late_initcall(pi5usb30216_init);
-module_exit(pi5usb30216_exit);
-
-MODULE_LICENSE("Dual BSD/GPL");
-MODULE_AUTHOR("Yang ShaoYing <yangsy2@lenovo.com>");
-MODULE_DESCRIPTION("Drivers for Type-C CC-Logic chip of Pericom Pi5usb30216");
-MODULE_ALIAS("platform:cc-logic");
diff --git a/drivers/misc/cclogic/ptn5150h.c b/drivers/misc/cclogic/ptn5150h.c
deleted file mode 100644
index f073afa56790..000000000000
--- a/drivers/misc/cclogic/ptn5150h.c
+++ /dev/null
@@ -1,398 +0,0 @@
-//
-// ptn5150.c
-//
-// Drivers for usb type-C interface's CC-Logic chip of TI
-//
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/io.h>
-#include <asm/uaccess.h>
-#include <linux/fs.h>
-#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-#include <linux/i2c-dev.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/miscdevice.h>
-#include <linux/regulator/consumer.h>
-#include <linux/of_gpio.h>
-#include <linux/wakelock.h>
-#include "cclogic-core.h"
-
-
-#define DRIVER_NAME "nxp,ptn5150h"
-
-#define PTN5150_DEVID 0xb
-
-/**
- * ptn5150_read_i2c()
- */
-static int ptn5150_read_i2c(struct i2c_client *client, u8 reg)
-{
- struct i2c_msg msg[2];
- int data=0;
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- msg[0].addr = client->addr;
- msg[0].flags = 0;
- msg[0].buf = &reg;
- msg[0].len = sizeof(reg);
- msg[1].addr = client->addr;
- msg[1].flags = I2C_M_RD;
- msg[1].buf = (char *)&data;
- msg[1].len = 1;
-
-
- ret = i2c_transfer(client->adapter, msg, 2);
- if (ret != 2){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return data;
-}
-
-/**
- * ptn5150_recv_i2c()
- */
-static int ptn5150_recv_i2c(struct i2c_client *client, char baseaddr,
- char * buf, int len)
-{
- struct i2c_msg msg[2];
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- msg[0].addr = client->addr;
- msg[0].flags = 0;
- msg[0].buf = &baseaddr;
- msg[0].len = 1;
- msg[1].addr = client->addr;
- msg[1].flags = I2C_M_RD;
- msg[1].buf = buf;
- msg[1].len = len;
-
-
- ret = i2c_transfer(client->adapter, msg, 2);
- if (ret != 2){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return 0;
-}
-/**
- * ptn5150_write_i2c()
- */
-static int ptn5150_write_i2c(struct i2c_client *client, u8 reg, u8 data)
-{
- int ret = 0;
- struct i2c_msg msg;
- u8 buf[2];
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- buf[0] = reg;
- buf[1] = data;
- msg.addr = client->addr;
- msg.flags = 0;
- msg.buf = buf;
- msg.len = sizeof(buf);
-
- ret = i2c_transfer(client->adapter, &msg, 1);
- if (ret != 1){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return 0;
-
-}
-
-/**
- * ptn5150_parse_cclogic_state()
- */
-static void ptn5150_parse_cclogic_state(int reg3, int reg4, int reg19,
- struct cclogic_state *result)
-{
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- result->vbus = false;
- result->cc = CCLOGIC_CC_UNKNOWN;
- result->evt = CCLOGIC_EVENT_NONE;
- result->device = CCLOGIC_NO_DEVICE;
- result->charger = CCLOGIC_CURRENT_NONE;
-
- if(reg3&0x2){//No interrupt
- result->evt = CCLOGIC_EVENT_DETACHED;
- }else if(reg3&0x1){
- result->evt = CCLOGIC_EVENT_ATTACHED;
- }else
- result->evt = CCLOGIC_EVENT_NONE;
-
- switch(reg4&0x3){
- case 0x0:
- result->cc = CCLOGIC_CC_UNKNOWN;break;
- case 0x1:
- result->cc = CCLOGIC_CC1;break;
- case 0x2:
- result->cc = CCLOGIC_CC2;break;
- case 0x3:
- result->cc = CCLOGIC_CC1_CC2;break;
- }
-
- switch(reg4&0x60){
- case 0x00:
- result->charger = CCLOGIC_CURRENT_NONE;
- break;
- case 0x20:
- result->charger = CCLOGIC_CURRENT_DEFAULT;
- break;
- case 0x40:
- result->charger = CCLOGIC_CURRENT_MEDIUM;
- break;
- case 0x60:
- result->charger = CCLOGIC_CURRENT_HIGH;
- break;
- }
-
- if(reg4&0x80)
- result->vbus = true;
-
- switch(reg4&0x1C){
- case 0x00:
- result->device = CCLOGIC_NO_DEVICE;break;
- case 0x04:
- result->device = CCLOGIC_USB_HOST;break;
- case 0x08:
- result->device = CCLOGIC_USB_DEVICE;break;
- case 0x0C:
- result->device = CCLOGIC_AUDIO_DEVICE;break;
- case 0x10:
- result->device = CCLOGIC_DEBUG_DEVICE;break;
- }
-}
-
-/**
- * ptn5150_reset_chip()
- */
-static int ptn5150_reset_chip(struct i2c_client *client)
-{
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- ret = ptn5150_write_i2c(client,0x10,0x1);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
-
- mdelay(20);
-
- return ret;
-}
-
-#if 0
-/**
- * ptn5150_trymode()
- */
-static int ptn5150_trymode(struct i2c_client *client, int mode)
-{
- int ret;
- int regval;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- regval = ptn5150_read_i2c(client,0xa);
- if(regval<0){
- dev_err(&client->dev,"cclogic:%s: i2c read error\n",
- __func__);
- return regval;
- }
-
- if(mode == CCLOGIC_MODE_UFP){
- regval = (regval&0xf9) | 0x02;
- }else{
- regval = (regval&0xf9) | 0x06;
- }
- ret = ptn5150_write_i2c(client,0xa,regval);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
-
- return ret;
-
-}
-#endif
-
-
-/**
- * ptn5150_config_chip()
- */
-static int ptn5150_config_chip(struct i2c_client *client)
-{
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- ret = ptn5150_write_i2c(client,0x09,0x1);//disable con_det output
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
- ret = ptn5150_write_i2c(client,0x43,0x40);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
- ret = ptn5150_write_i2c(client,0x4c,0x34);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
- ret = ptn5150_write_i2c(client,0x2,0x4);//charger:default unmask interrupt
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
- ret = ptn5150_write_i2c(client,0x18,0x00);//unmask interrupt
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
-
- return ret;
-
-}
-
-/**
- * ptn5150_check_chip()
- */
-static int ptn5150_check_chip(struct i2c_client *client)
-{
- char buf;
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- /* ID check */
- ret = ptn5150_recv_i2c(client, 1, &buf, 1);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c recv error\n", __func__);
- return -ENODEV;
- }
-
- if(buf != PTN5150_DEVID){
- dev_err(&client->dev,"cclogic:%s: device version mismatch (%x != %x)\n",
- __func__,buf,PTN5150_DEVID);
- return -ENODEV;
- }
-
- return 0;
-}
-
-/**
- * ptn5150_get_state()
- */
-static int ptn5150_get_state(struct i2c_client *client,
- struct cclogic_state *state)
-{
- int reg3,reg4,reg19;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- reg3 = ptn5150_read_i2c(client,0x3);
- if(reg3<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error,reg3=%d\n",
- __func__,reg3);
- return reg3;
- }
-
- reg4 = ptn5150_read_i2c(client,0x4);
- if(reg4<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error,reg4=%d\n",
- __func__,reg4);
- return reg4;
- }
-
- reg19 = ptn5150_read_i2c(client,0x19);
- if(reg19<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error,reg19=%d\n",
- __func__,reg19);
- return reg19;
- }
-
-
- pr_debug("cclogic:%s-->i2c register value: reg3=0x%02x reg4=0x%02x reg19=0x%02x\n",
- __func__,reg3,reg4,reg19);
-
- ptn5150_parse_cclogic_state(reg3,reg4,reg19,state);
-
- return 0;
-}
-
-
-static struct cclogic_chip ptn5150_chip = {
- .chip_name = DRIVER_NAME,
- .get_state = ptn5150_get_state,
- .ack_irq = NULL,
- .chip_config = ptn5150_config_chip,
- .chip_reset = ptn5150_reset_chip,
- .chip_check = ptn5150_check_chip,
-#if 0
- .chip_trymode = ptn5150_trymode,
- .typec_version = 11,//spec 1.1
- .support = CCLOGIC_SUPPORT_MODE_DUAL,
-#else
- .typec_version = 10,//spec 1.0
-#endif
-};
-
-/**
- * ptn5150_init()
- */
-static int __init ptn5150_init(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- return cclogic_register(&ptn5150_chip);
-}
-
-/**
- * ptn5150_exit()
- */
-static void __exit ptn5150_exit(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- cclogic_unregister(&ptn5150_chip);
- return;
-}
-
-late_initcall(ptn5150_init);
-module_exit(ptn5150_exit);
-
-
-MODULE_LICENSE("Dual BSD/GPL");
-MODULE_AUTHOR("Yang ShaoYing <yangsy2@lenovo.com>");
-MODULE_DESCRIPTION("Drivers for usb type-C CC-Logic chip of NXP5150H");
-MODULE_ALIAS("platform:cc-logic");
diff --git a/drivers/misc/cclogic/tusb320.c b/drivers/misc/cclogic/tusb320.c
deleted file mode 100644
index e6fd1715c36c..000000000000
--- a/drivers/misc/cclogic/tusb320.c
+++ /dev/null
@@ -1,423 +0,0 @@
-//
-// tusb320.c
-//
-// Drivers for usb type-C interface's CC-Logic chip of TI
-//
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/io.h>
-#include <asm/uaccess.h>
-#include <linux/fs.h>
-#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-#include <linux/i2c-dev.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/miscdevice.h>
-#include <linux/regulator/consumer.h>
-#include <linux/of_gpio.h>
-#include <linux/wakelock.h>
-#include "cclogic-core.h"
-
-
-#define DRIVER_NAME "ti,tusb320"
-
-#define MAX_REG_NUM 11
-
-#define TUSB320_DEVID "023BSUT"
-
-/**
- * tusb320_read_i2c()
- */
-static int tusb320_read_i2c(struct i2c_client *client, u8 reg)
-{
- struct i2c_msg msg[2];
- int data=0;
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- msg[0].addr = client->addr;
- msg[0].flags = 0;
- msg[0].buf = &reg;
- msg[0].len = sizeof(reg);
- msg[1].addr = client->addr;
- msg[1].flags = I2C_M_RD;
- msg[1].buf = (char *)&data;
- msg[1].len = 1;
-
-
- ret = i2c_transfer(client->adapter, msg, 2);
- if (ret != 2){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return data;
-}
-
-/**
- * tusb320_recv_i2c()
- */
-static int tusb320_recv_i2c(struct i2c_client *client, char baseaddr,
- char * buf, int len)
-{
- struct i2c_msg msg[2];
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- msg[0].addr = client->addr;
- msg[0].flags = 0;
- msg[0].buf = &baseaddr;
- msg[0].len = 1;
- msg[1].addr = client->addr;
- msg[1].flags = I2C_M_RD;
- msg[1].buf = buf;
- msg[1].len = len;
-
-
- ret = i2c_transfer(client->adapter, msg, 2);
- if (ret != 2){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return 0;
-}
-/**
- * tusb320_write_i2c()
- */
-static int tusb320_write_i2c(struct i2c_client *client, u8 reg, u8 data)
-{
- int ret = 0;
- struct i2c_msg msg;
- u8 buf[2];
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- if (!client->adapter)
- return -ENODEV;
-
- buf[0] = reg;
- buf[1] = data;
- msg.addr = client->addr;
- msg.flags = 0;
- msg.buf = buf;
- msg.len = sizeof(buf);
-
- ret = i2c_transfer(client->adapter, &msg, 1);
- if (ret != 1){
- dev_err(&client->dev,"cclogic:%s-->i2c_transfer error\n",
- __func__);
- return ret;
- }
-
- return 0;
-
-}
-
-/**
- * tusb320_parse_cclogic_state()
- */
-static void tusb320_parse_cclogic_state(int reg8, int reg9,
- struct cclogic_state *result)
-{
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- result->vbus = false;
- result->cc = CCLOGIC_CC_UNKNOWN;
- result->evt = CCLOGIC_EVENT_NONE;
- result->device = CCLOGIC_NO_DEVICE;
- result->charger = CCLOGIC_CURRENT_NONE;
-
- if(!(reg9&0x10)){//No interrupt
- result->evt = CCLOGIC_EVENT_NONE;
- }else{
- result->evt = CCLOGIC_EVENT_ATTACHED;
- }
-
- if(reg9&0x20){
- result->cc = CCLOGIC_CC2;
- }else{
- result->cc = CCLOGIC_CC1;
- }
-
- switch(reg9&0xc0){
- case 0x00://nothing attached
- if(reg9&0x10){
- result->evt = CCLOGIC_EVENT_DETACHED;
- }
- result->vbus = false;
- result->device = CCLOGIC_NO_DEVICE;
- break;
- case 0x40:
- result->device = CCLOGIC_USB_DEVICE;
- result->vbus = false;
- break;
- case 0x80:
- result->device = CCLOGIC_USB_HOST;
- result->vbus = true;
- break;
- case 0xC0://accessory
- switch(reg8&0x0e){
- case 0x00: //No Accessory attached
- if(reg9&0x10){
- result->evt = CCLOGIC_EVENT_DETACHED;
- }
- result->vbus = false;
- result->device = CCLOGIC_NO_DEVICE;
- break;
- case 0x08: //Audio Accessory DFP
- result->vbus = false;
- result->device = CCLOGIC_AUDIO_DEVICE;
- break;
- case 0x0a: //Audio Accessory UFP
- result->vbus = true;
- result->device = CCLOGIC_AUDIO_DEVICE;
- break;
- case 0x0e:// Debug Accessory UFP
- result->vbus = true;
- result->device = CCLOGIC_DEBUG_DEVICE;
- break;
- case 0x0c:// Debug Accessory DFP set to Hi-Z
- result->vbus = false;
- result->device = CCLOGIC_DEBUG_DEVICE;
- break;
- default://Reserve
- result->vbus = false;
- result->device = CCLOGIC_NO_DEVICE;
- break;
- }
-
- break;
- }
-
-
- switch(reg8&0x30){
- case 0x00:
- result->charger = CCLOGIC_CURRENT_DEFAULT;
- break;
- case 0x10:
- result->charger = CCLOGIC_CURRENT_MEDIUM;
- break;
- case 0x20:
- result->charger = CCLOGIC_CURRENT_ACCESSORY;
- //result->vbus = false;
- break;
- case 0x30:
- result->charger = CCLOGIC_CURRENT_HIGH;
- break;
- }
-
-}
-
-/**
- * tusb320_reset_chip()
- */
-static int tusb320_reset_chip(struct i2c_client *client)
-{
- int retries = 10;
- int regval;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- regval = tusb320_write_i2c(client,0xa,0x8);
- if(regval){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return regval;
- }
-
- while(retries--){
- regval = tusb320_read_i2c(client,0xa);
- if(regval<0){
- dev_err(&client->dev,"cclogic:%s: i2c read error\n",
- __func__);
- return regval;
- }
- if(!(regval&0x08)){
- return 0;
- }
- mdelay(100);
- }
- if(regval&0x08){
- return -1;
- }
- return 0;
-
-}
-
-/**
- * tusb320_config_chip()
- */
-static int tusb320_config_chip(struct i2c_client *client)
-{
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- ret = tusb320_write_i2c(client,0x8,0);//charger:default
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
- ret = tusb320_write_i2c(client,0xa,0x30);//DRP
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c write error\n", __func__);
- return ret;
- }
-
- return ret;
-
-}
-
-/**
- * tusb320_check_chip()
- */
-static int tusb320_check_chip(struct i2c_client *client)
-{
- char buf[8];
- int ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- /* ID check */
- ret = tusb320_recv_i2c(client, 0, buf, 8);
- if(ret){
- dev_err(&client->dev,"cclogic:%s: i2c recv error\n", __func__);
- return -ENODEV;
- }
-
- if(memcmp(buf,TUSB320_DEVID,sizeof(TUSB320_DEVID))){
- dev_err(&client->dev,"cclogic:%s: devid mismatch (%s != %s)\n",
- __func__,buf,TUSB320_DEVID);
- return -ENODEV;
- }
-
- return 0;
-}
-
-/**
- * tusb320_ack_irq()
- */
-static int tusb320_ack_irq(struct i2c_client *client)
-{
- int reg9,ret;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- reg9 = tusb320_read_i2c(client,0x9);
- if(reg9<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error\n", __func__);
- return reg9;
- }
-
- /* clear interrupt */
- ret = tusb320_write_i2c(client,0x9,reg9);
- if(ret){
- dev_err(&client->dev,"cclogic:%s-->i2c write error\n",__func__);
- return ret;
- }
-
- return 0;
-}
-
-/**
- * tusb320_get_state()
- */
-static int tusb320_get_state(struct i2c_client *client,
- struct cclogic_state *state)
-{
- int reg8,reg9;
- static int flag = 0;
-
- pr_debug("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- reg9 = tusb320_read_i2c(client,0x9);
- if(reg9<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error,reg9=%d\n",
- __func__,reg9);
- return reg9;
- }
-
- reg8 = tusb320_read_i2c(client,0x8);
- if(reg8<0){
- dev_err(&client->dev,"cclogic:%s-->i2c read error,reg8=%d\n",
- __func__,reg8);
- return reg8;
- }
-
- pr_debug("cclogic:%s-->i2c register value: reg8=0x%02x reg9=0x%02x\n",
- __func__,reg8,reg9);
-
- tusb320_parse_cclogic_state(reg8,reg9,state);
-
-#if 1 //for chip bug
- if(state->evt == CCLOGIC_EVENT_DETACHED){//skip detach event
- return 0;
- }
-
- if(!flag && (state->device == CCLOGIC_USB_DEVICE)){
- tusb320_reset_chip(client);
- flag = 1;
- return -1;
- }
-
- flag = 0;
-#endif
-
- return 0;
-}
-
-
-static struct cclogic_chip tusb320_chip = {
- .chip_name = DRIVER_NAME,
- .get_state = tusb320_get_state,
- .ack_irq = tusb320_ack_irq,
- .chip_config = tusb320_config_chip,
- .chip_reset = tusb320_reset_chip,
- .chip_check = tusb320_check_chip,
- .typec_version = 10,//spec 1.0
- .support = 0,
-};
-
-/**
- * tusb320_init()
- */
-static int __init tusb320_init(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- return cclogic_register(&tusb320_chip);
-}
-
-/**
- * tusb320_exit()
- */
-static void __exit tusb320_exit(void)
-{
- pr_info("cclogic:[%s][%d]\n", __func__, __LINE__);
-
- cclogic_unregister(&tusb320_chip);
- return;
-}
-
-late_initcall(tusb320_init);
-module_exit(tusb320_exit);
-
-
-MODULE_LICENSE("Dual BSD/GPL");
-MODULE_AUTHOR("Yang ShaoYing <yangsy2@lenovo.com>");
-MODULE_DESCRIPTION("Drivers for usb type-C CC-Logic chip of TI Tusb320");
-MODULE_ALIAS("platform:cc-logic");