打印
[Atmel]

驱动中函数的调用问题

[复制链接]
687|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-7-31 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yanghelovehuang 于 2018-7-31 15:54 编辑

各位大佬,在写一个驱动, 可是遇到个头痛的问题。相关的三个函数如下:
static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev, char ch)
{
//对设备树资源的一些操作,提取gpio信息进而点亮灯也在这个函数里。
}
static long led_ioctl(struct file * filep, unsigned int cmd, unsigned long arg)
{
struct platform_device pdev;
//对应用层传入的命令的判定,根据R(红) G(绿) B(蓝)命令点亮相应颜色的灯。
switch(cmd)
{
          case LED_R:
          gpio_leds_create(&pdev,'R');
          break;
.
.
.
}
static int led_probe(struct platform_device *pdev)
{
//一些初始化,之后调用gpio_leds_create(pdev,'R')函数,就能够点亮相应的灯。
}
现在的问题是:probe函数里调用gpio_leds_create函数能够点亮相应的灯,但是ioctl函数里调用的gpio_leds_create函数却不能点亮,而且设备树的提取也错误了。我经过多次实验觉得应该是struct platform_device *pdev这个参数的传递问题,probe对他进行了一些操作再传给gpio_leds_create函数。而ioctl函数规定也不能增加struct platform_device *pdev参数的传递,所以传递的pdev内容不对。我想知道能不能在ioctl中调用gpio_leds_create(pdev,'R'函数时用probe函数操作后的pdev参数传递?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝