Lines Matching refs:hw
143 static int __read_reg(struct tps6524x *hw, int reg) in __read_reg() argument
169 error = spi_sync(hw->spi, &m); in __read_reg()
173 dev_dbg(hw->dev, "read reg %d, data %x, status %x\n", in __read_reg()
185 static int read_reg(struct tps6524x *hw, int reg) in read_reg() argument
189 mutex_lock(&hw->lock); in read_reg()
190 ret = __read_reg(hw, reg); in read_reg()
191 mutex_unlock(&hw->lock); in read_reg()
196 static int __write_reg(struct tps6524x *hw, int reg, int val) in __write_reg() argument
222 error = spi_sync(hw->spi, &m); in __write_reg()
226 dev_dbg(hw->dev, "wrote reg %d, data %x, status %x\n", in __write_reg()
238 static int __rmw_reg(struct tps6524x *hw, int reg, int mask, int val) in __rmw_reg() argument
242 ret = __read_reg(hw, reg); in __rmw_reg()
249 ret = __write_reg(hw, reg, ret); in __rmw_reg()
254 static int rmw_protect(struct tps6524x *hw, int reg, int mask, int val) in rmw_protect() argument
258 mutex_lock(&hw->lock); in rmw_protect()
260 ret = __write_reg(hw, REG_WRITE_ENABLE, 1); in rmw_protect()
262 dev_err(hw->dev, "failed to set write enable\n"); in rmw_protect()
266 ret = __rmw_reg(hw, reg, mask, val); in rmw_protect()
268 dev_err(hw->dev, "failed to rmw register %d\n", reg); in rmw_protect()
270 ret = __write_reg(hw, REG_WRITE_ENABLE, 0); in rmw_protect()
272 dev_err(hw->dev, "failed to clear write enable\n"); in rmw_protect()
277 mutex_unlock(&hw->lock); in rmw_protect()
282 static int read_field(struct tps6524x *hw, const struct field *field) in read_field() argument
286 tmp = read_reg(hw, field->reg); in read_field()
293 static int write_field(struct tps6524x *hw, const struct field *field, in write_field() argument
299 return rmw_protect(hw, field->reg, in write_field()
460 struct tps6524x *hw; in set_voltage_sel() local
462 hw = rdev_get_drvdata(rdev); in set_voltage_sel()
468 return write_field(hw, &info->voltage, selector); in set_voltage_sel()
474 struct tps6524x *hw; in get_voltage_sel() local
477 hw = rdev_get_drvdata(rdev); in get_voltage_sel()
483 ret = read_field(hw, &info->voltage); in get_voltage_sel()
496 struct tps6524x *hw; in set_current_limit() local
499 hw = rdev_get_drvdata(rdev); in set_current_limit()
508 return write_field(hw, &info->ilimsel, i); in set_current_limit()
517 struct tps6524x *hw; in get_current_limit() local
520 hw = rdev_get_drvdata(rdev); in get_current_limit()
526 ret = read_field(hw, &info->ilimsel); in get_current_limit()
538 struct tps6524x *hw; in enable_supply() local
540 hw = rdev_get_drvdata(rdev); in enable_supply()
543 return write_field(hw, &info->enable, 1); in enable_supply()
549 struct tps6524x *hw; in disable_supply() local
551 hw = rdev_get_drvdata(rdev); in disable_supply()
554 return write_field(hw, &info->enable, 0); in disable_supply()
560 struct tps6524x *hw; in is_supply_enabled() local
562 hw = rdev_get_drvdata(rdev); in is_supply_enabled()
565 return read_field(hw, &info->enable); in is_supply_enabled()
582 struct tps6524x *hw; in pmic_probe() local
595 hw = devm_kzalloc(&spi->dev, sizeof(struct tps6524x), GFP_KERNEL); in pmic_probe()
596 if (!hw) in pmic_probe()
599 spi_set_drvdata(spi, hw); in pmic_probe()
601 memset(hw, 0, sizeof(struct tps6524x)); in pmic_probe()
602 hw->dev = dev; in pmic_probe()
603 hw->spi = spi_dev_get(spi); in pmic_probe()
604 mutex_init(&hw->lock); in pmic_probe()
607 hw->desc[i].name = info->name; in pmic_probe()
608 hw->desc[i].id = i; in pmic_probe()
609 hw->desc[i].n_voltages = info->n_voltages; in pmic_probe()
610 hw->desc[i].volt_table = info->voltages; in pmic_probe()
611 hw->desc[i].ops = ®ulator_ops; in pmic_probe()
612 hw->desc[i].type = REGULATOR_VOLTAGE; in pmic_probe()
613 hw->desc[i].owner = THIS_MODULE; in pmic_probe()
617 config.driver_data = hw; in pmic_probe()
619 hw->rdev[i] = devm_regulator_register(dev, &hw->desc[i], in pmic_probe()
621 if (IS_ERR(hw->rdev[i])) in pmic_probe()
622 return PTR_ERR(hw->rdev[i]); in pmic_probe()