Firefly开源社区

标题: 如何修改代码,实现GPIO引脚的复用功能 [打印本页]

作者: 5454ty    时间: 2015-1-27 18:02
标题: 如何修改代码,实现GPIO引脚的复用功能
举个例子,如下图,


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

请高手指点


作者: 5454ty    时间: 2015-1-27 18:05
图好像没有看到,我再传一次图,
作者: zhansb    时间: 2015-1-27 18:20
wiki讲到了:http://wiki.t-firefly.com/index.php/Firefly-RK3288/GPIO
作者: 214740484    时间: 2016-7-27 10:09
谢谢!!!!
作者: lrghl88    时间: 2016-9-8 14:02
thanks very much
作者: 凉茶k    时间: 2016-9-19 19:53
rockchip,pull = <VALUE_PULL_DISABLE>;rockchip,drive = <VALUE_DRV_DEFAULT>;这两个属性代表什么意思?

作者: zhansb    时间: 2016-9-20 09:41
一个是上下拉配置,一个是IO驱动能力配置
作者: crg375658266    时间: 2016-9-20 10:21
QQQQQQQ
作者: 凉茶k    时间: 2016-9-29 09:38
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呢?



作者: wx_Roman_rRewE    时间: 2021-10-22 17:59
大佬们    链接打不开呀,一样的需求问题
作者: 笨企鹅    时间: 2021-10-28 20:03
学习,感谢分享
作者: 笨企鹅    时间: 2021-10-28 20:24
zhansb 发表于 2015-1-27 18:20
wiki讲到了:http://wiki.t-firefly.com/index.php/Firefly-RK3288/GPIO

链接失效了,有没有新的有效的链接?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1