Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux I2C设备驱动程序错误[TCA6408 I/O扩展器]_Linux_Linux Device Driver_Embedded Linux_Kernel Module - Fatal编程技术网

Linux I2C设备驱动程序错误[TCA6408 I/O扩展器]

Linux I2C设备驱动程序错误[TCA6408 I/O扩展器],linux,linux-device-driver,embedded-linux,kernel-module,Linux,Linux Device Driver,Embedded Linux,Kernel Module,我想连接TCA6408 IO扩展器并将密钥输入到我的嵌入式系统。 我正在尝试使用SABRELite(iMX6Q)Boad,我的开发环境是LTIB(L3.0.35_4.1.0_130816_source.tar.gz) 我做了以下修改 1.)在“board-mx6q_sabrelite.c”中添加一个条目 2.)从菜单配置启用驱动程序 发生此错误的原因是(pdata==NULL) linux-3.0.35/drivers/gpio/pca953x.c 我不能理解这个问题。在“平台数据”中需要什么样

我想连接TCA6408 IO扩展器并将密钥输入到我的嵌入式系统。 我正在尝试使用SABRELite(iMX6Q)Boad,我的开发环境是LTIB(L3.0.35_4.1.0_130816_source.tar.gz)

我做了以下修改

1.)在“board-mx6q_sabrelite.c”中添加一个条目 2.)从菜单配置启用驱动程序 发生此错误的原因是(pdata==NULL)

linux-3.0.35/drivers/gpio/pca953x.c 我不能理解这个问题。在“平台数据”中需要什么样的修改


任何人都请支持我。

这里是am3517板和tca6416的示例。平台_数据指定新GPIO应从哪个GPIO编号开始计数。例如,
OMAP\u MAX\u GPIO\u行
128,则第一个tca6416 GPIO将为128+1=129

静态结构pca953x_平台_数据sp860_gpio_扩展器_信息_0={
.gpio_base=OMAP_MAX_gpio_行,
};
静态结构i2c_线路板_信息_初始数据am3517evm_i2c2_线路板信息[]={
{
I2C电路板信息(“tca6416”,0x20),
.platform_data=&sp860_gpio_expander_info_0,
},
};
您可以在此平台\u数据结构中设置以下参数:

struct pca953x_平台_数据{
/*第一个GPIO的编号*/
未签名的gpio_基;
/*初始极性反转设置*/
uint16_t倒置;
/*中断基*/
国际伊斯兰革命联盟基地;
void*context;/*设置/拆卸参数*/
int(*设置)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
int(*拆卸)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
常量字符*常量*名称;
};

以下是am3517板和tca6416的示例。平台_数据指定新GPIO应从哪个GPIO编号开始计数。例如,
OMAP\u MAX\u GPIO\u行
128,则第一个tca6416 GPIO将为128+1=129

静态结构pca953x_平台_数据sp860_gpio_扩展器_信息_0={
.gpio_base=OMAP_MAX_gpio_行,
};
静态结构i2c_线路板_信息_初始数据am3517evm_i2c2_线路板信息[]={
{
I2C电路板信息(“tca6416”,0x20),
.platform_data=&sp860_gpio_expander_info_0,
},
};
您可以在此平台\u数据结构中设置以下参数:

struct pca953x_平台_数据{
/*第一个GPIO的编号*/
未签名的gpio_基;
/*初始极性反转设置*/
uint16_t倒置;
/*中断基*/
国际伊斯兰革命联盟基地;
void*context;/*设置/拆卸参数*/
int(*设置)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
int(*拆卸)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
常量字符*常量*名称;
};

以下是am3517板和tca6416的示例。平台_数据指定新GPIO应从哪个GPIO编号开始计数。例如,
OMAP\u MAX\u GPIO\u行
128,则第一个tca6416 GPIO将为128+1=129

静态结构pca953x_平台_数据sp860_gpio_扩展器_信息_0={
.gpio_base=OMAP_MAX_gpio_行,
};
静态结构i2c_线路板_信息_初始数据am3517evm_i2c2_线路板信息[]={
{
I2C电路板信息(“tca6416”,0x20),
.platform_data=&sp860_gpio_expander_info_0,
},
};
您可以在此平台\u数据结构中设置以下参数:

struct pca953x_平台_数据{
/*第一个GPIO的编号*/
未签名的gpio_基;
/*初始极性反转设置*/
uint16_t倒置;
/*中断基*/
国际伊斯兰革命联盟基地;
void*context;/*设置/拆卸参数*/
int(*设置)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
int(*拆卸)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
常量字符*常量*名称;
};

以下是am3517板和tca6416的示例。平台_数据指定新GPIO应从哪个GPIO编号开始计数。例如,
OMAP\u MAX\u GPIO\u行
128,则第一个tca6416 GPIO将为128+1=129

静态结构pca953x_平台_数据sp860_gpio_扩展器_信息_0={
.gpio_base=OMAP_MAX_gpio_行,
};
静态结构i2c_线路板_信息_初始数据am3517evm_i2c2_线路板信息[]={
{
I2C电路板信息(“tca6416”,0x20),
.platform_data=&sp860_gpio_expander_info_0,
},
};
您可以在此平台\u数据结构中设置以下参数:

struct pca953x_平台_数据{
/*第一个GPIO的编号*/
未签名的gpio_基;
/*初始极性反转设置*/
uint16_t倒置;
/*中断基*/
国际伊斯兰革命联盟基地;
void*context;/*设置/拆卸参数*/
int(*设置)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
int(*拆卸)(结构i2c_客户端*客户端,
未签名的gpio,未签名的ngpio,
无效*上下文);
常量字符
static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
    {
          I2C_BOARD_INFO("pca953x", 0x21),
          .irq = gpio_to_irq(MX6Q_SABRELITE_CAP_TCH_INT1),
    },
};
---  GPIO Support
< * > PCA953x, PCA955x, TCA64xx, and MAX7310 I/O ports
[ * ]         Interrupt controller support for PCA953x
Freescale USB OTG Driver loaded, $Revision: 1.55 $
pca953x: probe of 2-0020 failed with error -22
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Version 1.0.24.
static int __devinit pca953x_probe(struct i2c_client *client,
               const struct i2c_device_id *id)
{
struct pca953x_platform_data *pdata;
struct pca953x_chip *chip;
int ret = 0;

chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL);
if (chip == NULL)
    return -ENOMEM;

pdata = client->dev.platform_data;
if (pdata == NULL) {
    pdata = pca953x_get_alt_pdata(client);
    /*
     * Unlike normal platform_data, this is allocated
     * dynamically and must be freed in the driver
     */
    chip->dyn_pdata = pdata;
}

if (pdata == NULL) {
    dev_dbg(&client->dev, "no platform data\n");
    ret = -EINVAL;
    goto out_failed;
}
static struct pca953x_platform_data my_pca953x_pdata = {
     .gpio_base = MX6Q_PAD_GPIO_5__I2C3_SCL,
};

static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
    {
          I2C_BOARD_INFO("pca953x", 0x21),
          .irq = gpio_to_irq(MX6Q_SABRELITE_CAP_TCH_INT1),
          .platform_data = &my_pca953x_pdata
    },
};