Firefly开源社区

打印 上一主题 下一主题

[Linux] 【已解决】pwm申请问题

64

积分

0

威望

0

贡献

技术小白

积分
64

【已解决】pwm申请问题

发表于 2018-7-13 13:34:10      浏览:6194 | 回复:0        打印      只看该作者   [复制链接] 楼主
硬件平台:rk3288 reload
软件平台:android 5.1 kernel
1.参照这个帖子http://dev.t-firefly.com/thread-10801-1-1.html 把系统占用的pwm1 驱动给屏蔽掉,参考背光的pwm(kernel/drivers/video/backlight/pwm_bl.c)进行pwm1申请
2.写驱动
1)源码
  1. include<linux/kernel.h>
  2. #include<linux/init.h>
  3. #include<linux/module.h>
  4. #include<linux/delay.h>
  5. #include<linux/pwm.h>
  6. #include<linux/platform_device.h>
  7. #include<linux/err.h>
  8. #include<linux/slab.h>

  9. static int pwm_probe(struct platform_device *pdev)
  10. {
  11.        struct pwm_device *pwm1 = NULL;
  12.        pwm1 = devm_pwm_get(&pdev->dev,NULL);
  13.        if(IS_ERR(pwm1))
  14.        {
  15.              dev_err(&pdev->dev,"unable to get pwm1\n");
  16.              pwm1 = pwm_request(1,"pwm");
  17.              if(IS_ERR(pwm1)){
  18.                     dev_err(&pdev->dev,"unable to request pwm1\n");
  19.                     printk("pwm1 err %ld\n",PTR_ERR(pwm1));
  20.              }
  21.        }
  22.        pwm_config(pwm1,50000,100000);
  23.        pwm_enable(pwm1);
  24.        printk("pwm1 sucess\n");
  25.        return 0;
  26. }

  27. static struct of_device_id pwm_of_match[] = {
  28.         { .compatible = "pwm1_test"},
  29.         {}
  30. };
  31. static int ub_pwm_remove(struct platform_device *pdev)
  32. {
  33.         return 0;
  34. }
  35. static struct platform_driver pwm_driver={
  36.         .driver = {
  37.                 .name           ="pwm",
  38.                 .owner          =THIS_MODULE,
  39.                 .of_match_table = of_match_ptr(pwm_of_match),
  40.         },
  41.         .probe  = pwm_probe,
  42.         .remove = pwm_remove,
  43. };

  44. module_platform_driver(pwm_driver);

  45. MODULE_DESCRIPTION("pwm driver");
  46. MODULE_LICENSE("GPL");
复制代码


2)dts加入
  1. pwm1_test:pwm1_test{
  2.                 compatible="pwm1_test";
  3.                 pwms=<&pwm1 0 10000>;
  4.     };
复制代码

  1. &pwm1 {
  2.         status = "okay";
  3. };
复制代码

回复

使用道具 举报

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

本版积分规则

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