Firefly开源社区

如何修改代码,实现GPIO引脚的复用功能

92

积分

0

威望

0

贡献

技术小白

积分
92
发表于 2015-1-27 18:02:00     
举个例子,如下图,


比如说现在的SPI0_CSN0,我也不知道原来内核是把他当作普通的GPIO用还是当作特殊功能引脚用的,但是现在我想把它变成一个普通的GPIO来使用,我改如何修改它,让它变成普通的GPIO来使用.

请高手指点

回复

使用道具 举报

92

积分

0

威望

0

贡献

技术小白

积分
92
发表于 2015-1-27 18:05:25     
图好像没有看到,我再传一次图, spigpio.PNG
回复

使用道具 举报

2580

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2580

优秀版主论坛元老

发表于 2015-1-27 18:20:24     
回复

使用道具 举报

56

积分

0

威望

0

贡献

游客

积分
56
发表于 2016-7-27 10:09:57     
谢谢!!!!
回复

使用道具 举报

9

积分

0

威望

0

贡献

游客

积分
9
发表于 2016-9-8 14:02:10     
thanks very much
回复

使用道具 举报

16

积分

0

威望

0

贡献

游客

积分
16
发表于 2016-9-19 19:53:31     
rockchip,pull = <VALUE_PULL_DISABLE>;rockchip,drive = <VALUE_DRV_DEFAULT>;这两个属性代表什么意思?
回复

使用道具 举报

2580

积分

56

威望

46

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
2580

优秀版主论坛元老

发表于 2016-9-20 09:41:02     
一个是上下拉配置,一个是IO驱动能力配置
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2016-9-20 10:21:51     
QQQQQQQ
回复

使用道具 举报

16

积分

0

威望

0

贡献

游客

积分
16
发表于 2016-9-29 09:38:54     
static int rockchip_i2c_probe(struct platform_device *pdev){        struct rockchip_i2c *i2c = NULL;        struct resource *res;        struct device_node *np = pdev->dev.of_node;        int ret;// ...                i2c->sda_gpio = of_get_gpio(np, 0);                if (!gpio_is_valid(i2c->sda_gpio)) {                        dev_err(&pdev->dev, "sda gpio is invalid\n");                        return -EINVAL;                }                ret = devm_gpio_request(&pdev->dev, i2c->sda_gpio, dev_name(&i2c->adap.dev));                if (ret) {                        dev_err(&pdev->dev, "failed to request sda gpio\n");                        return ret;                }                i2c->scl_gpio = of_get_gpio(np, 1);                if (!gpio_is_valid(i2c->scl_gpio)) {                        dev_err(&pdev->dev, "scl gpio is invalid\n");                        return -EINVAL;                }                ret = devm_gpio_request(&pdev->dev, i2c->scl_gpio, dev_name(&i2c->adap.dev));                if (ret) {                        dev_err(&pdev->dev, "failed to request scl gpio\n");                        return ret;                }                i2c->gpio_state = pinctrl_lookup_state(i2c->dev->pins->p, "gpio");                if (IS_ERR(i2c->gpio_state)) {                        dev_err(&pdev->dev, "no gpio pinctrl state\n");                        return PTR_ERR(i2c->gpio_state);                }                pinctrl_select_state(i2c->dev->pins->p, i2c->gpio_state);                gpio_direction_input(i2c->sda_gpio);                gpio_direction_input(i2c->scl_gpio);                pinctrl_select_state(i2c->dev->pins->p, i2c->dev->pins->default_state);// ...}
这个函数中为什么先去申请gpio,然后再设置pin脚为gpio功能呢?我理解应该先去设置pin脚为gpio后,才能去申请gpio然后对gpio进行操作。
那请问下,如何才能把引脚复用改成i2c呢?


回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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