Firefly开源社区

打印 上一主题 下一主题

rk3288移植spi(fpc1020)数据传输和设备树配置问题

93

积分

0

威望

0

贡献

技术小白

积分
93

rk3288移植spi(fpc1020)数据传输和设备树配置问题

发表于 2018-8-7 14:15:16      浏览:9014 | 回复:0        打印      只看该作者   [复制链接] 楼主
各位大神,请指教spi(fpc1020)android驱动移植过程中设备树配置和数据传输过程是否有错误的地方,问题应该在哪,怎么解决?请指点!
下面是设备树配置在spi0里面的配置:
&spi0 {
        status = "okay";
        max-freq = <48000000>;

        fpc1020@00 {
                compatible = "fpc,fpc1020";
                reg = <0>;
                spi-max-frequency = <24000000>;
                //spi-cpha;
                //spi-cpol;
                poll_mode = <0>;
                type = <0>;
                enable_dma = <0>;
              fpc,gpio_reset = <&gpio8 GPIO_A6 GPIO_ACTIVE_LOW>;
              fpc,gpio_irq = <&gpio8 GPIO_A7 IRQ_TYPE_LEVEL_HIGH>;
                fpc,gpio_cs = <>;
                status = "okay";
        };
};
下面是fpc驱动程序读取设备树参数和数据的子函数:
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;
}
原本我用的是 fpc,gpio_reset = <&gpio8 GPIO_A6 GPIO_ACTIVE_LOW>;管脚号应该是262,但是打印出来的log却是fpc1020 spi0.0: Assign HW reset -> GPIO151   151 很明显不对,是大小端函数处理错误吗?还是管脚地址传输错误了?读取设备节点的属性函数用的对吗?还是用其他函数呢?望高人指点呀!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表