Esempio n. 1
0
static ssize_t mc9s08dz60_store(struct device *dev,
                                struct device_attribute *attr, const char *buf,
                                size_t count)
{
    int ret;
    unsigned long reg, new_value;
    u8 value;
    char *p;

    strict_strtoul(buf, 16, &reg);

    p = NULL;
    p = memchr(buf, ' ', count);

    if (p == NULL) {
        mc9s08dz60_read_reg(reg, &value);
        pr_info("reg%02lu: %06x\n", reg, value);
        return count;
    }

    p += 1;

    strict_strtoul(p, 16, &new_value);
    value = new_value;

    ret = mc9s08dz60_write_reg((u8)reg, value);
    if (ret == 0)
        pr_info("write reg%02lx: %06x\n", reg, value);
    else
        pr_info("register update failed\n");

    return count;
}
Esempio n. 2
0
static int mcu_pmic_write(int reg_num, const unsigned int reg_val)
{
	int ret;
	u8 value = reg_val;
	/* mcu ops */
	if (reg_num >= REG_MCU_VERSION && reg_num <= REG_MCU_DES_FLAG) {

		ret =
		    mc9s08dz60_write_reg(
			mcu_pmic_reg_addr_table[reg_num], value);
		if (ret < 0)
			return -1;
	} else if (reg_num >= REG_MAX8660_OUTPUT_ENABLE_1
		   && reg_num <= REG_MAX8660_FORCE_PWM) {
		ret =
		    max8660_write_reg(mcu_pmic_reg_addr_table[reg_num], value);

		if (ret < 0)
			return -1;

		ret = max8660_save_buffered_reg_val(reg_num, value);
	} else
		return -1;

	return 0;
}