Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm64/rockchip/rk805.c
Show First 20 Lines • Show All 198 Lines • ▼ Show 20 Lines | static struct rk805_regdef rk808_regdefs[] = { | ||||
.voltage_reg = RK805_DCDC2_ON_VSEL, | .voltage_reg = RK805_DCDC2_ON_VSEL, | ||||
.voltage_mask = 0x3F, | .voltage_mask = 0x3F, | ||||
.voltage_min = 712500, | .voltage_min = 712500, | ||||
.voltage_max = 1500000, | .voltage_max = 1500000, | ||||
.voltage_step = 12500, | .voltage_step = 12500, | ||||
.voltage_nstep = 64, | .voltage_nstep = 64, | ||||
}, | }, | ||||
{ | { | ||||
/* BUCK3 voltage is calculated based on external resistor */ | |||||
.id = RK805_DCDC3, | .id = RK805_DCDC3, | ||||
.name = "DCDC_REG3", | .name = "DCDC_REG3", | ||||
.enable_reg = RK805_DCDC_EN, | .enable_reg = RK805_DCDC_EN, | ||||
.enable_mask = 0x4, | .enable_mask = 0x4, | ||||
}, | }, | ||||
{ | { | ||||
.id = RK805_DCDC4, | .id = RK805_DCDC4, | ||||
.name = "DCDC_REG4", | .name = "DCDC_REG4", | ||||
▲ Show 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | static struct rk805_regdef rk808_regdefs[] = { | ||||
.voltage_step = 100000, | .voltage_step = 100000, | ||||
.voltage_nstep = 17, | .voltage_nstep = 17, | ||||
}, | }, | ||||
{ | { | ||||
.id = RK808_SWITCH1, | .id = RK808_SWITCH1, | ||||
.name = "SWITCH_REG1", | .name = "SWITCH_REG1", | ||||
.enable_reg = RK805_DCDC_EN, | .enable_reg = RK805_DCDC_EN, | ||||
.enable_mask = 0x20, | .enable_mask = 0x20, | ||||
.voltage_min = 3000000, | |||||
.voltage_max = 3000000, | |||||
}, | }, | ||||
{ | { | ||||
.id = RK808_SWITCH2, | .id = RK808_SWITCH2, | ||||
.name = "SWITCH_REG2", | .name = "SWITCH_REG2", | ||||
.enable_reg = RK805_DCDC_EN, | .enable_reg = RK805_DCDC_EN, | ||||
.enable_mask = 0x40, | .enable_mask = 0x40, | ||||
.voltage_min = 3000000, | |||||
.voltage_max = 3000000, | |||||
}, | }, | ||||
}; | }; | ||||
static int | static int | ||||
rk805_read(device_t dev, uint8_t reg, uint8_t *data, uint8_t size) | rk805_read(device_t dev, uint8_t reg, uint8_t *data, uint8_t size) | ||||
{ | { | ||||
int err; | int err; | ||||
▲ Show 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | |||||
static int | static int | ||||
rk805_regnode_get_voltage(struct regnode *regnode, int *uvolt) | rk805_regnode_get_voltage(struct regnode *regnode, int *uvolt) | ||||
{ | { | ||||
struct rk805_reg_sc *sc; | struct rk805_reg_sc *sc; | ||||
uint8_t val; | uint8_t val; | ||||
sc = regnode_get_softc(regnode); | sc = regnode_get_softc(regnode); | ||||
if (sc->def->voltage_min == sc->def->voltage_max) { | |||||
*uvolt = sc->def->voltage_min; | |||||
return (0); | |||||
} | |||||
if (!sc->def->voltage_step) | if (!sc->def->voltage_step) | ||||
return (ENXIO); | return (ENXIO); | ||||
rk805_read(sc->base_dev, sc->def->voltage_reg, &val, 1); | rk805_read(sc->base_dev, sc->def->voltage_reg, &val, 1); | ||||
rk805_regnode_reg_to_voltage(sc, val & sc->def->voltage_mask, uvolt); | rk805_regnode_reg_to_voltage(sc, val & sc->def->voltage_mask, uvolt); | ||||
dprintf(sc, "Regulator %s is at %d uvolt\n", | dprintf(sc, "Regulator %s is at %d uvolt\n", | ||||
▲ Show 20 Lines • Show All 209 Lines • Show Last 20 Lines |