sysfs创建属性

方法一:

static ssize_t bq24152_attr_store(struct device_driver *driver,const char *buf, size_t count)
{
	int iRet = 0;
	unsigned char path_image[255];

	if(NULL == buf || count >255 || count == 0 || strnchr(buf, count, 0x20))
		return -1;

	memcpy (path_image, buf,  count);
	printk("count is %d\n", count);
	printk("buf is %s\n", buf);
	printk("bus is %d\n", buf[0]);
#if 0
	ret = pm8058_set_charge_batt(0);
	if (ret < 0) {
		pr_err("can not close the bat_fet mos\n");
		return ret;
	}

	di->enable_charger = 0;
	bq2415x_config_control_reg(di);
#endif
	return iRet;
}

static ssize_t bq24152_attr_show(struct device_driver *driver, char *buf)
{
	ssize_t ret =0;
	u8 read_reg[5] = {0};
	u8 temp;

	if(NULL == buf)
	{
		return -1;
	}

	bq2415x_read_block(this_di, &read_reg[0], 0, 5);
	temp = pm8058_get_charge_batt();

	ret += sprintf(buf, "status register is 0x%x \n", read_reg[0]);
	ret += sprintf(buf + ret, "control register is 0x%x \n", read_reg[1]);
	ret += sprintf(buf + ret, "battery voltage register is 0x%x \n", read_reg[2]);
	ret += sprintf(buf + ret, "charge current register is 0x%x \n", read_reg[4]);
	ret += sprintf(buf + ret, "bat mos state is  %d\n", temp);
	return ret;

}

static DRIVER_ATTR(state, S_IRUGO|S_IWUGO, bq24152_attr_show, bq24152_attr_store); // S_IRUGO|S_IWUGO 这个可以换成 0644


然后在probe 函数中加入:

ret = driver_create_file(&(bq2415x_charger_driver.driver), &driver_attr_state);
	if (0 != ret)
	{
		pr_err("failed to create sysfs entry(state): %d\n", ret);
		goto free_irq;
	}

方法二:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值