瑞芯微Rockchip开发者社区
直播中

申根换

7年用户 1552经验值
私信 关注
[问答]

RK3399如何获取rk818寄存器的值?

RK3399如何获取rk818寄存器的值?

回帖(1)

刘鑫

2022-3-7 10:35:58
                    
                    static struct kobject *rk8xx_kobj;
static struct device_attribute rk8xx_attrs =
__ATTR(rk8xx_dbg, 0200, NULL, rk8xx_dbg_store);

rk8xx_dbg:是操作的文件
0200 :权限
NULL : 显示函数,cat该文件时,此函数被调用。
rk8xx_dbg_store:写函数,echo内容到该文件时,此函数被调用。

创建文件操作的文件


rk8xx_kobj = kobject_create_and_add("rk8xx", NULL);
if (rk8xx_kobj) {
        ret = sysfs_create_file(rk8xx_kobj, &rk8xx_attrs.attr);
        if (ret)
                dev_err(&client->dev, "create rk8xx sysfs errorn");
}

static ssize_t rk8xx_dbg_store(struct device *dev,
                               struct device_attribute *attr,
                               const char *buf, size_t count)
{
        int ret;
        char cmd;
        u32 input[2], addr, data;
        struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);

        ret = sscanf(buf, "%c ", &cmd);
        switch (cmd) {
        case 'w':
                ret = sscanf(buf, "%c %x %x ", &cmd, &input[0], &input[1]);
                if (ret != 3) {
                        pr_err("erro! cmd format: echo w [addr] [value]n");
                        goto out;
                }
                addr = input[0] & 0xff;
                data = input[1] & 0xff;
                pr_info("cmd : %c %x %xnn", cmd, input[0], input[1]);
                regmap_write(rk808->regmap, addr, data);
                regmap_read(rk808->regmap, addr, &data);
                pr_info("new: %x %xn", addr, data);
                break;
        case 'r':
                ret = sscanf(buf, "%c %x ", &cmd, &input[0]);
                if (ret != 2) {
                        pr_err("erro! cmd format: echo r [addr]n");
                        goto out;
                }
                pr_info("cmd : %c %xnn", cmd, input[0]);
                addr = input[0] & 0xff;
                regmap_read(rk808->regmap, addr, &data);
                pr_info("%x %xn", input[0], data);
                break;
        default:
                pr_err("Unknown commandn");
                break;
        }

out:
        return count;
}



有关kobj,kobject后面有机会单独分析
举报

更多回帖

发帖
×
20
完善资料,
赚取积分