主题 : MINI210S添加pwm驱动的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 106287
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
综合积分: 26 分
注册时间: 2014-07-19
最后登录: 2015-04-24
楼主  发表于: 2014-10-08 15:57

 MINI210S添加pwm驱动的问题

在原来的蜂鸣器驱动pwm.c基础上,想增加一路XEINT11(GPH1_3)输出pwm,
#define DEVICE_NAME                "pwm_GPIO"


#define PWM_IOCTL_SET_FREQ        1
#define PWM_IOCTL_STOP            0

#define NS_IN_1HZ                (1000000000UL)


#define BUZZER_PWM_ID            0
#define BUZZER_PMW_GPIO            S5PV210_GPH1(3)

编译ko都正常
但是 加载驱动的时候
错误如下:
request pwm 0 for pwm_GPIO failed
insmod: can't insert 'PWM.ko': No such device

查看驱动源码,错误打印部分代码如下
static int __init mini210_pwm_dev_init(void) {
    int ret;

    ret = gpio_request(BUZZER_PMW_GPIO, DEVICE_NAME);
    if (ret) {
        printk("request GPIO %d for pwm failed\n", BUZZER_PMW_GPIO);
        return ret;
    }

    gpio_set_value(BUZZER_PMW_GPIO, 0);
    s3c_gpio_cfgpin(BUZZER_PMW_GPIO, S3C_GPIO_OUTPUT);

    pwm4buzzer = pwm_request(BUZZER_PWM_ID, DEVICE_NAME);
    if (IS_ERR(pwm4buzzer)) {
        printk("request pwm %d for %s failed\n", BUZZER_PWM_ID, DEVICE_NAME);
                //这里打印出错误原因
        return -ENODEV;
    }

    pwm_stop();

    sema_init(&lock, 1);
    ret = misc_register(&mini210_misc_dev);

    printk(DEVICE_NAME "\tinitialized\n");

    return ret;
}
求高手指点!!!
级别: 新手上路
UID: 103610
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2014-04-30
最后登录: 2015-04-29
1楼  发表于: 2014-10-30 09:33
我跟你做一样的工作,出现的错误也是一样,不过我用的是自带的gpd0_1,这个是自带的pwm口,但是查阅原理图发现这个口被lcd占用了,所以每次insmod.ko的时候总是提示gpio申请不成功,所以我猜想你的也是因为这个io口被占用了,除非可以找出哪个驱动用了这个口,然后将这个驱动给杀掉。另外用gph口和用pwm口一样吗?普通的gpio口要输出pwm需要用到定时器定时吧,直接用wm结构体能行?