|
发表于 2015-1-21 09:21:56
只看该作者
板凳
HI,linjc
我刚才看了下那个RK平台一直3.10内核的文档,那个是主要针对I2C的呢,SPI应该和他类似吧,
现在我需要传进去3个参数,分别是irq_gpio reset_gpio cs_gpio,
我把我的spi dts定义修改如下:
&spi0 {
status = "okay";
max-freq = <48000000>;
fpc1020@00 {
compatible = "fpc,fpc1020";
reg = <0>;
spi-max-frequency = <24000000>;
// spi-cpha;
// spi-cpol;
irq_gpio = <&gpio0 GPIO_A7 GPIO_ACTIVE_HIGH>;
reset_gpio = <&gpio7 GPIO_A3 GPIO_ACTIVE_HIGH>;
cs_gpio = <&gpio7 GPIO_A4 GPIO_ACTIVE_HIGH>;
poll_mode = <0>;
type = <0>;
enable_dma = <0>;
};
};
不知道我这样修改对不对,反正我当前似乎感觉没有传进去
另外,我的驱动是供应商给的,我感觉不动驱动似乎好一点的哦
fpc1020_pdata = spi->dev.platform_data;
if (!fpc1020_pdata) {
error = fpc1020_get_of_pdata(dev, &pdata_of);
fpc1020_pdata = &pdata_of;
if (error)
goto err;
}
我的驱动似乎是通过fpc1020_get_of_pdata这样一个函数去获取平台数据的
这个函数fpc1020_get_of_pdata的定义如下:
static int __devinit fpc1020_get_of_pdata(struct device *dev,
struct fpc1020_platform_data *pdata)
{
const struct device_node *node = dev->of_node;
/* required properties */
const void *irq_prop = of_get_property(node, "fpc,gpio_irq", NULL);
const void *rst_prop = of_get_property(node, "fpc,gpio_reset", NULL);
const void *cs_prop = of_get_property(node, "fpc,gpio_cs", NULL);
/* optional properties */
const void *vddtx_prop = of_get_property(node, "fpc,vddtx_mv", NULL);
const void *boost_prop =
of_get_property(node, "fpc,txout_boost_enable", NULL);
if (node == NULL) {
dev_err(dev, "%s: Could not find OF device node\n", __func__);
goto of_err;
}
if (!irq_prop || !rst_prop || !cs_prop) {
dev_err(dev, "%s: Missing OF property\n", __func__);
goto of_err;
}
pdata->irq_gpio = be32_to_cpup(irq_prop);
pdata->reset_gpio = be32_to_cpup(rst_prop);
pdata->cs_gpio = be32_to_cpup(cs_prop);
pdata->external_supply_mv =
(vddtx_prop != NULL) ? be32_to_cpup(vddtx_prop) : 0;
pdata->txout_boost = (boost_prop != NULL) ? 1 : 0;
return 0;
of_err:
pdata->reset_gpio = -EINVAL;
pdata->irq_gpio = -EINVAL;
pdata->cs_gpio = -EINVAL;
pdata->external_supply_mv = 0;
pdata->txout_boost = 0;
return -ENODEV;
}
我现在就在想,供应商的驱动应该不用修改吧,我会不会是SPI DTS修改的不够对呢,以前是可以直接定义一个结构体,然后把这几个引脚的定义放在platform_data里面就好了,现在变为了DTS,我应该只要把他修改对就OK了吧,不用修改供应商的驱动吧
看看你能不能再给我一些好的建议
|
|