#include <linux/string.h>
#include <linux/wait.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/pinctrl/consumer.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <asm-generic/gpio.h>
#include "lcm_drv.h"
#include <linux/dma-mapping.h>
#include <asm/uaccess.h>
#ifdef CONFIG_MTK_BOOT
#include "mt_boot_common.h"
#endif
#include "upmu_common.h"
#include <linux/hrtimer.h>
#include <linux/vmalloc.h>
#include <linux/jiffies.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/bitops.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include "lcm_drv.h"
#ifdef BUILD_LK
#include <platform/mt_gpio.h>
#include <platform/mt_i2c.h>
#include <string.h>
#elif defined(BUILD_UBOOT)
#include <asm/arch/mt_gpio.h>
#else
#endif
#ifdef BUILD_LK
#define LCD_DEBUG(fmt) dprintf(CRITICAL, fmt)
#else
#define LCD_DEBUG(fmt) pr_debug(fmt)
#endif
static size_t icn6202_iic_log_on = true;
#define icn6202_IIC_LOG(fmt, arg...) \
do { \
if (icn6202_iic_log_on) {printk("[icn6202]%s,#%d ", __func__, __LINE__); printk(fmt, ##arg);} \
}while (0)
#define icn6202_IIC_FUNC() \
do { \
if(icn6202_iic_log_on) printk("[icn6202] %s\n", __func__); \
}while (0)
#define icn6202_DEVICE_NAME "multibridge-icn6202"
#define icn6202_I2C_SLAVE_ADDR 0x58
#define icn6202_I2C_DEVICE_ADDR_LEN 2
/*----------------------------------------------------------------------------*/
static int icn6202_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id);
static int icn6202_i2c_remove(struct i2c_client *client);
static struct i2c_client *icn6202_i2c_client = NULL;
static const struct i2c_device_id icn6202_i2c_id[] = { {icn6202_DEVICE_NAME,0},{}};
//static struct i2c_board_info __initdata i2c_icn6202 = { I2C_BOARD_INFO(icn6202_DEVICE_NAME, icn6202_I2C_SLAVE_ADDR>>1)};
/*----------------------------------------------------------------------------*/
#ifdef CONFIG_OF
static const struct of_device_id lcm_of_match[] = {
{ .compatible = "mediatek,ext_disp" },
{},
};
#endif
struct i2c_driver icn6202_i2c_driver = {
.id_table = icn6202_i2c_id,
.probe = icn6202_i2c_probe,
.remove = icn6202_i2c_remove,
.driver = {
.owner = THIS_MODULE,
.name = icn6202_DEVICE_NAME ,
#ifdef CONFIG_OF
.of_match_table = lcm_of_match,
#
#include <linux/wait.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/pinctrl/consumer.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <asm-generic/gpio.h>
#include "lcm_drv.h"
#include <linux/dma-mapping.h>
#include <asm/uaccess.h>
#ifdef CONFIG_MTK_BOOT
#include "mt_boot_common.h"
#endif
#include "upmu_common.h"
#include <linux/hrtimer.h>
#include <linux/vmalloc.h>
#include <linux/jiffies.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/bitops.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include "lcm_drv.h"
#ifdef BUILD_LK
#include <platform/mt_gpio.h>
#include <platform/mt_i2c.h>
#include <string.h>
#elif defined(BUILD_UBOOT)
#include <asm/arch/mt_gpio.h>
#else
#endif
#ifdef BUILD_LK
#define LCD_DEBUG(fmt) dprintf(CRITICAL, fmt)
#else
#define LCD_DEBUG(fmt) pr_debug(fmt)
#endif
static size_t icn6202_iic_log_on = true;
#define icn6202_IIC_LOG(fmt, arg...) \
do { \
if (icn6202_iic_log_on) {printk("[icn6202]%s,#%d ", __func__, __LINE__); printk(fmt, ##arg);} \
}while (0)
#define icn6202_IIC_FUNC() \
do { \
if(icn6202_iic_log_on) printk("[icn6202] %s\n", __func__); \
}while (0)
#define icn6202_DEVICE_NAME "multibridge-icn6202"
#define icn6202_I2C_SLAVE_ADDR 0x58
#define icn6202_I2C_DEVICE_ADDR_LEN 2
/*----------------------------------------------------------------------------*/
static int icn6202_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id);
static int icn6202_i2c_remove(struct i2c_client *client);
static struct i2c_client *icn6202_i2c_client = NULL;
static const struct i2c_device_id icn6202_i2c_id[] = { {icn6202_DEVICE_NAME,0},{}};
//static struct i2c_board_info __initdata i2c_icn6202 = { I2C_BOARD_INFO(icn6202_DEVICE_NAME, icn6202_I2C_SLAVE_ADDR>>1)};
/*----------------------------------------------------------------------------*/
#ifdef CONFIG_OF
static const struct of_device_id lcm_of_match[] = {
{ .compatible = "mediatek,ext_disp" },
{},
};
#endif
struct i2c_driver icn6202_i2c_driver = {
.id_table = icn6202_i2c_id,
.probe = icn6202_i2c_probe,
.remove = icn6202_i2c_remove,
.driver = {
.owner = THIS_MODULE,
.name = icn6202_DEVICE_NAME ,
#ifdef CONFIG_OF
.of_match_table = lcm_of_match,
#