Android驱动利用sys节点进行调试

来源:互联网 发布:淘宝蜜琪美妆是假货吗 编辑:程序博客网 时间:2024/06/05 19:28
#define SYS_CHANGE_EXT_SPK_PA_MODE_SUPPORT#ifdef SYS_CHANGE_EXT_SPK_PA_MODE_SUPPORTstatic ssize_t store_caliberate(struct device *dev,        struct device_attribute *attr, const char *buf, size_t count){    unsigned long set_value;    set_value = simple_strtoul(buf, NULL, 10);    if (1 == set_value) {        //...        pr_warn("OHH, Ext_Speaker_Amp_Change_Mode=1");    } else if (3 == set_value) {        //...        pr_warn("OHH, Ext_Speaker_Amp_Change_Mode=3");    } else {        //...        pr_warn("OHH, Ext_Speaker_Amp_Change_Mode error");    }    return count;   }#define CALIBERATE_ATTR(_name)                         \{                                       \    .attr = { .name = #_name, .mode = S_IWUSR | S_IWGRP, },  \    .store = store_caliberate,                              \}static struct device_attribute caliberate[] = {    CALIBERATE_ATTR(Ext_Speaker_Amp_Change_Mode),};static int create_caliberate_attr(struct device *dev){    int i, rc;    for (i = 0; i < ARRAY_SIZE(caliberate); i++) {        rc = device_create_file(dev, &caliberate[i]);        if (rc)            goto attrs_failed;    }    goto attrs_succeed;attrs_failed:    while (i--)        device_remove_file(dev, &caliberate[i]);attrs_succeed:    return rc;}static int remove_caliberate_attr(struct device *dev){    int i;    for (i = 0; i < ARRAY_SIZE(caliberate); i++) {        device_remove_file(dev, &caliberate[i]);    }    return 0;}#endif

在static int xxx_probe(struct platform_device *pdev)中添加:

#ifdef SYS_CHANGE_EXT_SPK_PA_MODE_SUPPORT    create_caliberate_attr(&pdev->dev);#endif

在static int xxx_remove(struct platform_device *pdev)中添加:

#ifdef SYS_CHANGE_EXT_SPK_PA_MODE_SUPPORT       remove_caliberate_attr(&pdev->dev);#endif

More:

http://blog.csdn.net/lugandong/article/details/46593961

0 0
原创粉丝点击