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, ®); 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; }
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; }