#include <linux/delay.h>
#include <linux/i2c/tca6424.h>
#include <linux/ktime.h>
-#include "../drivers/gpio/soft_interrupt.h"
+#include "../drivers/gpio/expand_gpio_soft_interrupt.h"
#if 0
-#define TCA6424DEB
#define DBG(x...) printk(KERN_INFO x)
#else
#define DBG(x...)
#endif
-
-#if 0
#define DBGERR(x...) printk(KERN_INFO x)
-#else
-#define DBGERR(x...)
-#endif
+
struct tca6424_chip {
return (ret>0)?0:ret;
}
-static int tca6424_gpio_direction_input(struct gpio_chip *gc, uint8_t pin_num)
+static int tca6424_gpio_direction_input(struct gpio_chip *gc, unsigned pin_num)
{
struct tca6424_chip *chip;
uint8_t gpioPortNum;
return (ret<0)?-1:0;
}
-static int tca6424_gpio_direction_output(struct gpio_chip *gc,uint8_t pin_num, int val)
+static int tca6424_gpio_direction_output(struct gpio_chip *gc, unsigned pin_num, int val)
{
struct tca6424_chip *chip;
uint8_t gpioPortNum;
return (ret<0)?-1:0;
}
-static int tca6424_gpio_get_value(struct gpio_chip *gc, uint8_t pin_num)
+static int tca6424_gpio_get_value(struct gpio_chip *gc, unsigned pin_num)
{
struct tca6424_chip *chip;
uint8_t gpioPortNum;
chip = container_of(gc, struct tca6424_chip, gpio_chip);
- #ifdef CONFIG_SOFT_INTERRUPT
+ #ifdef CONFIG_EXPAND_GPIO_SOFT_INTERRUPT
ret = wait_untill_input_reg_flash( );
if(ret<0)
+ {
return -1;
+ DBGERR("**********tca6424 get value error***************\n");
+ }
#endif
gpioPortNum = pin_num/8;
if((gpioPortNum>=TCA6424_PortNum)||(gpioPortPinNum>=portnum[gpioPortNum]))
return -1;
- #ifndef CONFIG_SOFT_INTERRUPT
+ #ifndef CONFIG_EXPAND_GPIO_SOFT_INTERRUPT
uint8_t reg_val;
ret = tca6424_read_reg(chip->client, Regaddr, ®_val);
if (ret < 0)
return ((chip->gtca6424_struct.reg_input[gpioPortNum] >> gpioPortPinNum) & 0x01);
}
-static void tca6424_gpio_set_value(struct gpio_chip *gc, uint8_t pin_num, int val)
+static void tca6424_gpio_set_value(struct gpio_chip *gc, unsigned pin_num, int val)
{
struct tca6424_chip *chip;
uint8_t gpioPortNum;
chip->gpio_start = pdata->gpio_base;
chip->gpio_pin_num=pdata->gpio_pin_num;
+ chip->client = client;
chip->names = pdata->names;
- #ifdef CONFIG_SOFT_INTERRUPT
+ #ifdef CONFIG_EXPAND_GPIO_SOFT_INTERRUPT
chip->expand = &expand_irq_data;
chip->expand->gpio_irq_start =pdata->gpio_irq_start;
chip->expand->irq_pin_num = pdata->irq_pin_num;
DBGERR(" %s setup failed, %d\n",__FUNCTION__,ret);
}
i2c_set_clientdata(client, chip);
- chip->client = client;
- #ifdef CONFIG_SOFT_INTERRUPT
+ #ifdef CONFIG_EXPAND_GPIO_SOFT_INTERRUPT
expand_irq_init(chip,&chip->gtca6424_struct,tca6424_irq_read_inputreg);
#endif
return 0;