Lines Matching defs:rk808
17 #include <linux/mfd/rk808.h>
197 .name = "rk808-clkout",
200 .name = "rk808-regulator",
206 .name = "rk808-rtc",
219 .name = "rk808-clkout",
222 .name = "rk808-regulator",
225 .name = "rk808-rtc",
233 .name = "rk808-clkout",
236 .name = "rk808-regulator",
251 .name = "rk808-rtc",
259 .name = "rk808-clkout",
262 .name = "rk808-regulator",
278 .name = "rk808-rtc",
290 .name = "rk808-clkout",
293 .name = "rk808-regulator",
303 .name = "rk808-rtc",
654 .name = "rk808",
758 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
760 if (!rk808) {
764 ret = regmap_update_bits(rk808->regmap, RK805_GPIO_IO_POL_REG, SLP_SD_MSK, SHUTDOWN_FUN);
773 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
776 regmap_update_bits(rk808->regmap, RK817_INT_STS_MSK_REG0, (RK_REG_VAL_THREE << RK_REG_SHIFT_MASK_FIVE),
778 regmap_update_bits(rk808->regmap, RK817_RTC_INT_REG, (RK_REG_VAL_THREE << RK_REG_SHIFT_MASK_TWO),
781 if (rk808->pins && rk808->pins->p && rk808->pins->power_off) {
783 regmap_update_bits(rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), RK817_SLPPIN_FUNC_MSK, SLPPIN_NULL_FUN);
788 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), RK817_SLPPOL_MSK, RK817_SLPPOL_H);
793 ret = pinctrl_select_state(rk808->pins->p, rk808->pins->power_off);
800 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), RK817_SLPPIN_FUNC_MSK, SLPPIN_DN_FUN);
812 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
814 switch (rk808->variant) {
834 ret = regmap_update_bits(rk808->regmap, reg, bit, bit);
846 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
848 if (!rk808) {
849 dev_warn(&rk808_i2c_client->dev, "have no rk808, so do nothing here\n");
854 regmap_update_bits(rk808->regmap, RK808_INT_STS_MSK_REG1, (RK_REG_VAL_THREE << RK_REG_SHIFT_MASK_FIVE),
856 regmap_update_bits(rk808->regmap, RK808_RTC_INT_REG, (RK_REG_VAL_THREE << RK_REG_SHIFT_MASK_TWO),
867 if (rk808->variant == RK809_ID || rk808->variant == RK817_ID) {
868 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), RK817_SLPPIN_FUNC_MSK,
913 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
930 regmap_write(rk808->regmap, addr, data);
931 regmap_read(rk808->regmap, addr, &data);
942 regmap_read(rk808->regmap, addr, &data);
954 static int rk817_pinctrl_init(struct device *dev, struct rk808 *rk808)
978 rk808->pins = devm_kzalloc(dev, sizeof(struct rk808_pin_info), GFP_KERNEL);
979 if (!rk808->pins) {
983 rk808->pins->p = devm_pinctrl_get(dev);
984 if (IS_ERR(rk808->pins->p)) {
985 rk808->pins->p = NULL;
989 default_st = pinctrl_lookup_state(rk808->pins->p, PINCTRL_STATE_DEFAULT);
995 ret = pinctrl_select_state(rk808->pins->p, default_st);
1001 rk808->pins->power_off = pinctrl_lookup_state(rk808->pins->p, "pmic-power-off");
1002 if (IS_ERR(rk808->pins->power_off)) {
1003 rk808->pins->power_off = NULL;
1007 rk808->pins->sleep = pinctrl_lookup_state(rk808->pins->p, "pmic-sleep");
1008 if (IS_ERR(rk808->pins->sleep)) {
1009 rk808->pins->sleep = NULL;
1013 rk808->pins->reset = pinctrl_lookup_state(rk808->pins->p, "pmic-reset");
1014 if (IS_ERR(rk808->pins->reset)) {
1015 rk808->pins->reset = NULL;
1019 ret = pinctrl_select_state(rk808->pins->p, rk808->pins->reset);
1028 struct rk808 *rk808;
1045 dev = &data->rk808->i2c->dev;
1047 regmap_read(data->rk808->regmap, RK817_POWER_EN_SAVE0, &power_en_active0);
1049 regmap_read(data->rk808->regmap, RK817_POWER_EN_SAVE1, &power_en_active1);
1051 regmap_write(data->rk808->regmap, RK817_POWER_EN_REG(RK_POWER_EN_REG_VALUE_ZERO),
1054 regmap_write(data->rk808->regmap, RK817_POWER_EN_REG(RK_POWER_EN_REG_VALUE_ONE),
1057 regmap_write(data->rk808->regmap, RK817_POWER_EN_REG(RK_POWER_EN_REG_VALUE_TWO),
1060 regmap_write(data->rk808->regmap, RK817_POWER_EN_REG(RK_POWER_EN_REG_VALUE_THREE),
1085 ret = regmap_update_bits(data->rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), RK817_RST_FUNC_MSK,
1099 static void rk817_of_property_prepare(struct rk808 *rk808, struct device *dev)
1107 regmap_update_bits(rk808->regmap, RK817_POWER_CONFIG, RK817_BUCK3_FB_RES_MSK, RK817_BUCK3_FB_RES_INTER);
1109 regmap_update_bits(rk808->regmap, RK817_POWER_CONFIG, RK817_BUCK3_FB_RES_MSK, RK817_BUCK3_FB_RES_EXT);
1124 regmap_update_bits(rk808->regmap, RK817_SYS_CFG(RK_REG_VAL_THREE), msk, val);
1128 rk817_reboot_data.rk808 = rk808;
1141 {.compatible = "rockchip,rk808"},
1153 struct rk808 *rk808;
1165 void (*of_property_prepare_fn)(struct rk808 * rk808, struct device * dev) = NULL;
1166 int (*pinctrl_init)(struct device * dev, struct rk808 * rk808) = NULL;
1169 rk808 = devm_kzalloc(&client->dev, sizeof(*rk808), GFP_KERNEL);
1170 if (!rk808) {
1195 rk808->variant = ((msb << RK_REG_SHIFT_MASK_EIGHT) | lsb) & RK8XX_ID_MSK;
1196 dev_info(&client->dev, "chip id: 0x%x\n", (unsigned int)rk808->variant);
1198 switch (rk808->variant) {
1200 rk808->regmap_cfg = &rk805_regmap_config;
1201 rk808->regmap_irq_chip = &rk805_irq_chip;
1213 rk808->pm_pwroff_prep_fn = rk805_device_shutdown_prepare;
1216 rk808->regmap_cfg = &rk808_regmap_config;
1217 rk808->regmap_irq_chip = &rk808_irq_chip;
1225 rk808->regmap_cfg = &rk816_regmap_config;
1226 rk808->regmap_irq_chip = &rk816_irq_chip;
1241 rk808->regmap_cfg = &rk818_regmap_config;
1242 rk808->regmap_irq_chip = &rk818_irq_chip;
1257 rk808->regmap_cfg = &rk817_regmap_config;
1258 rk808->regmap_irq_chip = &rk817_irq_chip;
1265 rk808->pm_pwroff_prep_fn = rk817_shutdown_prepare;
1270 dev_err(&client->dev, "Unsupported RK8XX ID %lu\n", rk808->variant);
1274 rk808->i2c = client;
1276 i2c_set_clientdata(client, rk808);
1278 rk808->regmap = devm_regmap_init_i2c(client, rk808->regmap_cfg);
1279 if (IS_ERR(rk808->regmap)) {
1281 return PTR_ERR(rk808->regmap);
1285 ret = regmap_read(rk808->regmap, on_source, &on);
1291 ret = regmap_read(rk808->regmap, off_source, &off);
1306 of_property_prepare_fn(rk808, &client->dev);
1310 ret = regmap_update_bits(rk808->regmap, pre_init_reg[i].addr, pre_init_reg[i].mask, pre_init_reg[i].value);
1318 ret = pinctrl_init(&client->dev, rk808);
1324 ret = regmap_add_irq_chip(rk808->regmap, client->irq, IRQF_ONESHOT, -1, rk808->regmap_irq_chip, &rk808->irq_data);
1331 ret = regmap_add_irq_chip(rk808->regmap, client->irq, IRQF_ONESHOT | IRQF_SHARED, -1, battery_irq_chip,
1332 &rk808->battery_irq_data);
1335 regmap_del_irq_chip(client->irq, rk808->irq_data);
1341 regmap_irq_get_domain(rk808->irq_data));
1350 pm_power_off_prepare = rk808->pm_pwroff_prep_fn;
1375 regmap_del_irq_chip(client->irq, rk808->irq_data);
1377 regmap_del_irq_chip(client->irq, rk808->battery_irq_data);
1384 struct rk808 *rk808 = i2c_get_clientdata(client);
1386 regmap_del_irq_chip(client->irq, rk808->irq_data);
1400 if (rk808->pm_pwroff_prep_fn && pm_power_off_prepare == rk808->pm_pwroff_prep_fn) {
1413 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
1418 ret = regmap_update_bits(rk808->regmap, suspend_reg[i].addr, suspend_reg[i].mask, suspend_reg[i].value);
1425 switch (rk808->variant) {
1427 ret = regmap_update_bits(rk808->regmap, RK805_GPIO_IO_POL_REG, SLP_SD_MSK, SLEEP_FUN);
1431 if (rk808->pins && rk808->pins->p && rk808->pins->sleep) {
1432 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(3), RK817_SLPPIN_FUNC_MSK, SLPPIN_NULL_FUN);
1438 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(3), RK817_SLPPOL_MSK, RK817_SLPPOL_H);
1445 regmap_read(rk808->regmap, RK817_SYS_STS, &value);
1447 ret = pinctrl_select_state(rk808->pins->p, rk808->pins->sleep);
1463 struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client);
1468 ret = regmap_update_bits(rk808->regmap, resume_reg[i].addr, resume_reg[i].mask, resume_reg[i].value);
1475 switch (rk808->variant) {
1478 if (rk808->pins && rk808->pins->p && rk808->pins->reset) {
1479 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(3), RK817_SLPPIN_FUNC_MSK, SLPPIN_NULL_FUN);
1485 ret = regmap_update_bits(rk808->regmap, RK817_SYS_CFG(3), RK817_SLPPOL_MSK, RK817_SLPPOL_L);
1492 regmap_read(rk808->regmap, RK817_SYS_STS, &value);
1494 ret = pinctrl_select_state(rk808->pins->p, rk808->pins->reset);
1511 .name = "rk808",