162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2015, Sony Mobile Communications AB.
462306a36Sopenharmony_ci * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/module.h>
862306a36Sopenharmony_ci#include <linux/of.h>
962306a36Sopenharmony_ci#include <linux/platform_device.h>
1062306a36Sopenharmony_ci#include <linux/regulator/driver.h>
1162306a36Sopenharmony_ci#include <linux/regulator/of_regulator.h>
1262306a36Sopenharmony_ci#include <linux/soc/qcom/smd-rpm.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct qcom_rpm_reg {
1562306a36Sopenharmony_ci	struct device *dev;
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	struct qcom_smd_rpm *rpm;
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	u32 type;
2062306a36Sopenharmony_ci	u32 id;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	struct regulator_desc desc;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	int is_enabled;
2562306a36Sopenharmony_ci	int uV;
2662306a36Sopenharmony_ci	u32 load;
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	unsigned int enabled_updated:1;
2962306a36Sopenharmony_ci	unsigned int uv_updated:1;
3062306a36Sopenharmony_ci	unsigned int load_updated:1;
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistruct rpm_regulator_req {
3462306a36Sopenharmony_ci	__le32 key;
3562306a36Sopenharmony_ci	__le32 nbytes;
3662306a36Sopenharmony_ci	__le32 value;
3762306a36Sopenharmony_ci};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#define RPM_KEY_SWEN	0x6e657773 /* "swen" */
4062306a36Sopenharmony_ci#define RPM_KEY_UV	0x00007675 /* "uv" */
4162306a36Sopenharmony_ci#define RPM_KEY_MA	0x0000616d /* "ma" */
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cistatic int rpm_reg_write_active(struct qcom_rpm_reg *vreg)
4462306a36Sopenharmony_ci{
4562306a36Sopenharmony_ci	struct rpm_regulator_req req[3];
4662306a36Sopenharmony_ci	int reqlen = 0;
4762306a36Sopenharmony_ci	int ret;
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	if (vreg->enabled_updated) {
5062306a36Sopenharmony_ci		req[reqlen].key = cpu_to_le32(RPM_KEY_SWEN);
5162306a36Sopenharmony_ci		req[reqlen].nbytes = cpu_to_le32(sizeof(u32));
5262306a36Sopenharmony_ci		req[reqlen].value = cpu_to_le32(vreg->is_enabled);
5362306a36Sopenharmony_ci		reqlen++;
5462306a36Sopenharmony_ci	}
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci	if (vreg->uv_updated && vreg->is_enabled) {
5762306a36Sopenharmony_ci		req[reqlen].key = cpu_to_le32(RPM_KEY_UV);
5862306a36Sopenharmony_ci		req[reqlen].nbytes = cpu_to_le32(sizeof(u32));
5962306a36Sopenharmony_ci		req[reqlen].value = cpu_to_le32(vreg->uV);
6062306a36Sopenharmony_ci		reqlen++;
6162306a36Sopenharmony_ci	}
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci	if (vreg->load_updated && vreg->is_enabled) {
6462306a36Sopenharmony_ci		req[reqlen].key = cpu_to_le32(RPM_KEY_MA);
6562306a36Sopenharmony_ci		req[reqlen].nbytes = cpu_to_le32(sizeof(u32));
6662306a36Sopenharmony_ci		req[reqlen].value = cpu_to_le32(vreg->load / 1000);
6762306a36Sopenharmony_ci		reqlen++;
6862306a36Sopenharmony_ci	}
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci	if (!reqlen)
7162306a36Sopenharmony_ci		return 0;
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci	ret = qcom_rpm_smd_write(vreg->rpm, QCOM_SMD_RPM_ACTIVE_STATE,
7462306a36Sopenharmony_ci				 vreg->type, vreg->id,
7562306a36Sopenharmony_ci				 req, sizeof(req[0]) * reqlen);
7662306a36Sopenharmony_ci	if (!ret) {
7762306a36Sopenharmony_ci		vreg->enabled_updated = 0;
7862306a36Sopenharmony_ci		vreg->uv_updated = 0;
7962306a36Sopenharmony_ci		vreg->load_updated = 0;
8062306a36Sopenharmony_ci	}
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	return ret;
8362306a36Sopenharmony_ci}
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_cistatic int rpm_reg_enable(struct regulator_dev *rdev)
8662306a36Sopenharmony_ci{
8762306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
8862306a36Sopenharmony_ci	int ret;
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	vreg->is_enabled = 1;
9162306a36Sopenharmony_ci	vreg->enabled_updated = 1;
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci	ret = rpm_reg_write_active(vreg);
9462306a36Sopenharmony_ci	if (ret)
9562306a36Sopenharmony_ci		vreg->is_enabled = 0;
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci	return ret;
9862306a36Sopenharmony_ci}
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_cistatic int rpm_reg_is_enabled(struct regulator_dev *rdev)
10162306a36Sopenharmony_ci{
10262306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci	return vreg->is_enabled;
10562306a36Sopenharmony_ci}
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_cistatic int rpm_reg_disable(struct regulator_dev *rdev)
10862306a36Sopenharmony_ci{
10962306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
11062306a36Sopenharmony_ci	int ret;
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci	vreg->is_enabled = 0;
11362306a36Sopenharmony_ci	vreg->enabled_updated = 1;
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	ret = rpm_reg_write_active(vreg);
11662306a36Sopenharmony_ci	if (ret)
11762306a36Sopenharmony_ci		vreg->is_enabled = 1;
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	return ret;
12062306a36Sopenharmony_ci}
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_cistatic int rpm_reg_get_voltage(struct regulator_dev *rdev)
12362306a36Sopenharmony_ci{
12462306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	return vreg->uV;
12762306a36Sopenharmony_ci}
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_cistatic int rpm_reg_set_voltage(struct regulator_dev *rdev,
13062306a36Sopenharmony_ci			       int min_uV,
13162306a36Sopenharmony_ci			       int max_uV,
13262306a36Sopenharmony_ci			       unsigned *selector)
13362306a36Sopenharmony_ci{
13462306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
13562306a36Sopenharmony_ci	int ret;
13662306a36Sopenharmony_ci	int old_uV = vreg->uV;
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci	vreg->uV = min_uV;
13962306a36Sopenharmony_ci	vreg->uv_updated = 1;
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci	ret = rpm_reg_write_active(vreg);
14262306a36Sopenharmony_ci	if (ret)
14362306a36Sopenharmony_ci		vreg->uV = old_uV;
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	return ret;
14662306a36Sopenharmony_ci}
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_cistatic int rpm_reg_set_load(struct regulator_dev *rdev, int load_uA)
14962306a36Sopenharmony_ci{
15062306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg = rdev_get_drvdata(rdev);
15162306a36Sopenharmony_ci	u32 old_load = vreg->load;
15262306a36Sopenharmony_ci	int ret;
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci	vreg->load = load_uA;
15562306a36Sopenharmony_ci	vreg->load_updated = 1;
15662306a36Sopenharmony_ci	ret = rpm_reg_write_active(vreg);
15762306a36Sopenharmony_ci	if (ret)
15862306a36Sopenharmony_ci		vreg->load = old_load;
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci	return ret;
16162306a36Sopenharmony_ci}
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_cistatic const struct regulator_ops rpm_smps_ldo_ops = {
16462306a36Sopenharmony_ci	.enable = rpm_reg_enable,
16562306a36Sopenharmony_ci	.disable = rpm_reg_disable,
16662306a36Sopenharmony_ci	.is_enabled = rpm_reg_is_enabled,
16762306a36Sopenharmony_ci	.list_voltage = regulator_list_voltage_linear_range,
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci	.get_voltage = rpm_reg_get_voltage,
17062306a36Sopenharmony_ci	.set_voltage = rpm_reg_set_voltage,
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci	.set_load = rpm_reg_set_load,
17362306a36Sopenharmony_ci};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_cistatic const struct regulator_ops rpm_smps_ldo_ops_fixed = {
17662306a36Sopenharmony_ci	.enable = rpm_reg_enable,
17762306a36Sopenharmony_ci	.disable = rpm_reg_disable,
17862306a36Sopenharmony_ci	.is_enabled = rpm_reg_is_enabled,
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci	.get_voltage = rpm_reg_get_voltage,
18162306a36Sopenharmony_ci	.set_voltage = rpm_reg_set_voltage,
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	.set_load = rpm_reg_set_load,
18462306a36Sopenharmony_ci};
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_cistatic const struct regulator_ops rpm_switch_ops = {
18762306a36Sopenharmony_ci	.enable = rpm_reg_enable,
18862306a36Sopenharmony_ci	.disable = rpm_reg_disable,
18962306a36Sopenharmony_ci	.is_enabled = rpm_reg_is_enabled,
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_cistatic const struct regulator_ops rpm_bob_ops = {
19362306a36Sopenharmony_ci	.enable = rpm_reg_enable,
19462306a36Sopenharmony_ci	.disable = rpm_reg_disable,
19562306a36Sopenharmony_ci	.is_enabled = rpm_reg_is_enabled,
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci	.get_voltage = rpm_reg_get_voltage,
19862306a36Sopenharmony_ci	.set_voltage = rpm_reg_set_voltage,
19962306a36Sopenharmony_ci};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_cistatic const struct regulator_ops rpm_mp5496_ops = {
20262306a36Sopenharmony_ci	.enable = rpm_reg_enable,
20362306a36Sopenharmony_ci	.disable = rpm_reg_disable,
20462306a36Sopenharmony_ci	.is_enabled = rpm_reg_is_enabled,
20562306a36Sopenharmony_ci	.list_voltage = regulator_list_voltage_linear_range,
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci	.get_voltage = rpm_reg_get_voltage,
20862306a36Sopenharmony_ci	.set_voltage = rpm_reg_set_voltage,
20962306a36Sopenharmony_ci};
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_cistatic const struct regulator_desc pma8084_hfsmps = {
21262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
21362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000,  0,  95, 12500),
21462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 96, 158, 25000),
21562306a36Sopenharmony_ci	},
21662306a36Sopenharmony_ci	.n_linear_ranges = 2,
21762306a36Sopenharmony_ci	.n_voltages = 159,
21862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
21962306a36Sopenharmony_ci};
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_cistatic const struct regulator_desc pma8084_ftsmps = {
22262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
22362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,  0, 184, 5000),
22462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1280000, 185, 261, 10000),
22562306a36Sopenharmony_ci	},
22662306a36Sopenharmony_ci	.n_linear_ranges = 2,
22762306a36Sopenharmony_ci	.n_voltages = 262,
22862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
22962306a36Sopenharmony_ci};
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_cistatic const struct regulator_desc pma8084_pldo = {
23262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
23362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
23462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
23562306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
23662306a36Sopenharmony_ci	},
23762306a36Sopenharmony_ci	.n_linear_ranges = 3,
23862306a36Sopenharmony_ci	.n_voltages = 164,
23962306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
24062306a36Sopenharmony_ci};
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_cistatic const struct regulator_desc pma8084_nldo = {
24362306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
24462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000, 0, 63, 12500),
24562306a36Sopenharmony_ci	},
24662306a36Sopenharmony_ci	.n_linear_ranges = 1,
24762306a36Sopenharmony_ci	.n_voltages = 64,
24862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
24962306a36Sopenharmony_ci};
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_cistatic const struct regulator_desc pma8084_switch = {
25262306a36Sopenharmony_ci	.ops = &rpm_switch_ops,
25362306a36Sopenharmony_ci};
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_cistatic const struct regulator_desc pm8226_hfsmps = {
25662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
25762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000,   0,  95, 12500),
25862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1575000, 96, 158, 25000),
25962306a36Sopenharmony_ci	},
26062306a36Sopenharmony_ci	.n_linear_ranges = 2,
26162306a36Sopenharmony_ci	.n_voltages = 159,
26262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
26362306a36Sopenharmony_ci};
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_cistatic const struct regulator_desc pm8226_ftsmps = {
26662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
26762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,    0, 184,  5000),
26862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1280000, 185, 261, 10000),
26962306a36Sopenharmony_ci	},
27062306a36Sopenharmony_ci	.n_linear_ranges = 2,
27162306a36Sopenharmony_ci	.n_voltages = 262,
27262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
27362306a36Sopenharmony_ci};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_cistatic const struct regulator_desc pm8226_pldo = {
27662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
27762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000,    0,  63, 12500),
27862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000,  64, 126, 25000),
27962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
28062306a36Sopenharmony_ci	},
28162306a36Sopenharmony_ci	.n_linear_ranges = 3,
28262306a36Sopenharmony_ci	.n_voltages = 164,
28362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
28462306a36Sopenharmony_ci};
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_cistatic const struct regulator_desc pm8226_nldo = {
28762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
28862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000, 0, 63, 12500),
28962306a36Sopenharmony_ci	},
29062306a36Sopenharmony_ci	.n_linear_ranges = 1,
29162306a36Sopenharmony_ci	.n_voltages = 64,
29262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
29362306a36Sopenharmony_ci};
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_cistatic const struct regulator_desc pm8226_switch = {
29662306a36Sopenharmony_ci	.ops = &rpm_switch_ops,
29762306a36Sopenharmony_ci};
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_cistatic const struct regulator_desc pm8x41_hfsmps = {
30062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
30162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE( 375000,  0,  95, 12500),
30262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1575000, 96, 158, 25000),
30362306a36Sopenharmony_ci	},
30462306a36Sopenharmony_ci	.n_linear_ranges = 2,
30562306a36Sopenharmony_ci	.n_voltages = 159,
30662306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
30762306a36Sopenharmony_ci};
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_cistatic const struct regulator_desc pm8841_ftsmps = {
31062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
31162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,  0, 184, 5000),
31262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1280000, 185, 261, 10000),
31362306a36Sopenharmony_ci	},
31462306a36Sopenharmony_ci	.n_linear_ranges = 2,
31562306a36Sopenharmony_ci	.n_voltages = 262,
31662306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
31762306a36Sopenharmony_ci};
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_cistatic const struct regulator_desc pm8941_boost = {
32062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
32162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(4000000, 0, 30, 50000),
32262306a36Sopenharmony_ci	},
32362306a36Sopenharmony_ci	.n_linear_ranges = 1,
32462306a36Sopenharmony_ci	.n_voltages = 31,
32562306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
32662306a36Sopenharmony_ci};
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_cistatic const struct regulator_desc pm8941_pldo = {
32962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
33062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
33162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
33262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
33362306a36Sopenharmony_ci	},
33462306a36Sopenharmony_ci	.n_linear_ranges = 3,
33562306a36Sopenharmony_ci	.n_voltages = 164,
33662306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
33762306a36Sopenharmony_ci};
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_cistatic const struct regulator_desc pm8941_nldo = {
34062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
34162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000, 0, 63, 12500),
34262306a36Sopenharmony_ci	},
34362306a36Sopenharmony_ci	.n_linear_ranges = 1,
34462306a36Sopenharmony_ci	.n_voltages = 64,
34562306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
34662306a36Sopenharmony_ci};
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_cistatic const struct regulator_desc pm8941_lnldo = {
34962306a36Sopenharmony_ci	.fixed_uV = 1740000,
35062306a36Sopenharmony_ci	.n_voltages = 1,
35162306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops_fixed,
35262306a36Sopenharmony_ci};
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_cistatic const struct regulator_desc pm8941_switch = {
35562306a36Sopenharmony_ci	.ops = &rpm_switch_ops,
35662306a36Sopenharmony_ci};
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_cistatic const struct regulator_desc pm8916_pldo = {
35962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
36062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1750000, 0, 127, 12500),
36162306a36Sopenharmony_ci	},
36262306a36Sopenharmony_ci	.n_linear_ranges = 1,
36362306a36Sopenharmony_ci	.n_voltages = 128,
36462306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
36562306a36Sopenharmony_ci};
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_cistatic const struct regulator_desc pm8916_nldo = {
36862306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
36962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000, 0, 93, 12500),
37062306a36Sopenharmony_ci	},
37162306a36Sopenharmony_ci	.n_linear_ranges = 1,
37262306a36Sopenharmony_ci	.n_voltages = 94,
37362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
37462306a36Sopenharmony_ci};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_cistatic const struct regulator_desc pm8916_buck_lvo_smps = {
37762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
37862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000, 0, 95, 12500),
37962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000, 96, 127, 25000),
38062306a36Sopenharmony_ci	},
38162306a36Sopenharmony_ci	.n_linear_ranges = 2,
38262306a36Sopenharmony_ci	.n_voltages = 128,
38362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
38462306a36Sopenharmony_ci};
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_cistatic const struct regulator_desc pm8916_buck_hvo_smps = {
38762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
38862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 0, 31, 25000),
38962306a36Sopenharmony_ci	},
39062306a36Sopenharmony_ci	.n_linear_ranges = 1,
39162306a36Sopenharmony_ci	.n_voltages = 32,
39262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
39362306a36Sopenharmony_ci};
39462306a36Sopenharmony_ci
39562306a36Sopenharmony_cistatic const struct regulator_desc pm8950_hfsmps = {
39662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
39762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000, 0, 95, 12500),
39862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 96, 127, 25000),
39962306a36Sopenharmony_ci	},
40062306a36Sopenharmony_ci	.n_linear_ranges = 2,
40162306a36Sopenharmony_ci	.n_voltages = 128,
40262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
40362306a36Sopenharmony_ci};
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_cistatic const struct regulator_desc pm8950_ftsmps2p5 = {
40662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
40762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(80000, 0, 255, 5000),
40862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(160000, 256, 460, 10000),
40962306a36Sopenharmony_ci	},
41062306a36Sopenharmony_ci	.n_linear_ranges = 2,
41162306a36Sopenharmony_ci	.n_voltages = 461,
41262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
41362306a36Sopenharmony_ci};
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_cistatic const struct regulator_desc pm8950_ult_nldo = {
41662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
41762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000, 0, 202, 12500),
41862306a36Sopenharmony_ci	},
41962306a36Sopenharmony_ci	.n_linear_ranges = 1,
42062306a36Sopenharmony_ci	.n_voltages = 203,
42162306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
42262306a36Sopenharmony_ci};
42362306a36Sopenharmony_ci
42462306a36Sopenharmony_cistatic const struct regulator_desc pm8950_ult_pldo = {
42562306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
42662306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1750000, 0, 127, 12500),
42762306a36Sopenharmony_ci	},
42862306a36Sopenharmony_ci	.n_linear_ranges = 1,
42962306a36Sopenharmony_ci	.n_voltages = 128,
43062306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
43162306a36Sopenharmony_ci};
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_cistatic const struct regulator_desc pm8950_pldo_lv = {
43462306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
43562306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1500000, 0, 16, 25000),
43662306a36Sopenharmony_ci	},
43762306a36Sopenharmony_ci	.n_linear_ranges = 1,
43862306a36Sopenharmony_ci	.n_voltages = 17,
43962306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
44062306a36Sopenharmony_ci};
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_cistatic const struct regulator_desc pm8950_pldo = {
44362306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
44462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(975000, 0, 164, 12500),
44562306a36Sopenharmony_ci	},
44662306a36Sopenharmony_ci	.n_linear_ranges = 1,
44762306a36Sopenharmony_ci	.n_voltages = 165,
44862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
44962306a36Sopenharmony_ci};
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_cistatic const struct regulator_desc pm8953_lnldo = {
45262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
45362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(690000, 0, 7, 60000),
45462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1380000, 8, 15, 120000),
45562306a36Sopenharmony_ci	},
45662306a36Sopenharmony_ci	.n_linear_ranges = 2,
45762306a36Sopenharmony_ci	.n_voltages = 16,
45862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
45962306a36Sopenharmony_ci};
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_cistatic const struct regulator_desc pm8953_ult_nldo = {
46262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
46362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(375000, 0, 93, 12500),
46462306a36Sopenharmony_ci	},
46562306a36Sopenharmony_ci	.n_linear_ranges = 1,
46662306a36Sopenharmony_ci	.n_voltages = 94,
46762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
46862306a36Sopenharmony_ci};
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_cistatic const struct regulator_desc pm8994_hfsmps = {
47162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
47262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE( 375000,  0,  95, 12500),
47362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 96, 158, 25000),
47462306a36Sopenharmony_ci	},
47562306a36Sopenharmony_ci	.n_linear_ranges = 2,
47662306a36Sopenharmony_ci	.n_voltages = 159,
47762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
47862306a36Sopenharmony_ci};
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_cistatic const struct regulator_desc pm8994_ftsmps = {
48162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
48262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,  0, 199, 5000),
48362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(700000, 200, 349, 10000),
48462306a36Sopenharmony_ci	},
48562306a36Sopenharmony_ci	.n_linear_ranges = 2,
48662306a36Sopenharmony_ci	.n_voltages = 350,
48762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
48862306a36Sopenharmony_ci};
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_cistatic const struct regulator_desc pm8994_nldo = {
49162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
49262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(750000, 0, 63, 12500),
49362306a36Sopenharmony_ci	},
49462306a36Sopenharmony_ci	.n_linear_ranges = 1,
49562306a36Sopenharmony_ci	.n_voltages = 64,
49662306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
49762306a36Sopenharmony_ci};
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_cistatic const struct regulator_desc pm8994_pldo = {
50062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
50162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
50262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
50362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
50462306a36Sopenharmony_ci	},
50562306a36Sopenharmony_ci	.n_linear_ranges = 3,
50662306a36Sopenharmony_ci	.n_voltages = 164,
50762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
50862306a36Sopenharmony_ci};
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_cistatic const struct regulator_desc pm8994_switch = {
51162306a36Sopenharmony_ci	.ops = &rpm_switch_ops,
51262306a36Sopenharmony_ci};
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_cistatic const struct regulator_desc pm8994_lnldo = {
51562306a36Sopenharmony_ci	.fixed_uV = 1740000,
51662306a36Sopenharmony_ci	.n_voltages = 1,
51762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops_fixed,
51862306a36Sopenharmony_ci};
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_cistatic const struct regulator_desc pmi8994_ftsmps = {
52162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
52262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,  0, 199, 5000),
52362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(700000, 200, 349, 10000),
52462306a36Sopenharmony_ci	},
52562306a36Sopenharmony_ci	.n_linear_ranges = 2,
52662306a36Sopenharmony_ci	.n_voltages = 350,
52762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
52862306a36Sopenharmony_ci};
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_cistatic const struct regulator_desc pmi8994_hfsmps = {
53162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
53262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(350000,  0,  80, 12500),
53362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(700000, 81, 141, 25000),
53462306a36Sopenharmony_ci	},
53562306a36Sopenharmony_ci	.n_linear_ranges = 2,
53662306a36Sopenharmony_ci	.n_voltages = 142,
53762306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
53862306a36Sopenharmony_ci};
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_cistatic const struct regulator_desc pmi8994_bby = {
54162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
54262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(3000000, 0, 44, 50000),
54362306a36Sopenharmony_ci	},
54462306a36Sopenharmony_ci	.n_linear_ranges = 1,
54562306a36Sopenharmony_ci	.n_voltages = 45,
54662306a36Sopenharmony_ci	.ops = &rpm_bob_ops,
54762306a36Sopenharmony_ci};
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_cistatic const struct regulator_desc pm8998_ftsmps = {
55062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
55162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 258, 4000),
55262306a36Sopenharmony_ci	},
55362306a36Sopenharmony_ci	.n_linear_ranges = 1,
55462306a36Sopenharmony_ci	.n_voltages = 259,
55562306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
55662306a36Sopenharmony_ci};
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_cistatic const struct regulator_desc pm8998_hfsmps = {
55962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
56062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000),
56162306a36Sopenharmony_ci	},
56262306a36Sopenharmony_ci	.n_linear_ranges = 1,
56362306a36Sopenharmony_ci	.n_voltages = 216,
56462306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
56562306a36Sopenharmony_ci};
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_cistatic const struct regulator_desc pm8998_nldo = {
56862306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
56962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(312000, 0, 127, 8000),
57062306a36Sopenharmony_ci	},
57162306a36Sopenharmony_ci	.n_linear_ranges = 1,
57262306a36Sopenharmony_ci	.n_voltages = 128,
57362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
57462306a36Sopenharmony_ci};
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_cistatic const struct regulator_desc pm8998_pldo = {
57762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
57862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1664000, 0, 255, 8000),
57962306a36Sopenharmony_ci	},
58062306a36Sopenharmony_ci	.n_linear_ranges = 1,
58162306a36Sopenharmony_ci	.n_voltages = 256,
58262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
58362306a36Sopenharmony_ci};
58462306a36Sopenharmony_ci
58562306a36Sopenharmony_cistatic const struct regulator_desc pm8998_pldo_lv = {
58662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
58762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1256000, 0, 127, 8000),
58862306a36Sopenharmony_ci	},
58962306a36Sopenharmony_ci	.n_linear_ranges = 1,
59062306a36Sopenharmony_ci	.n_voltages = 128,
59162306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
59262306a36Sopenharmony_ci};
59362306a36Sopenharmony_ci
59462306a36Sopenharmony_cistatic const struct regulator_desc pm8998_switch = {
59562306a36Sopenharmony_ci	.ops = &rpm_switch_ops,
59662306a36Sopenharmony_ci};
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_cistatic const struct regulator_desc pmi8998_bob = {
59962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
60062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1824000, 0, 83, 32000),
60162306a36Sopenharmony_ci	},
60262306a36Sopenharmony_ci	.n_linear_ranges = 1,
60362306a36Sopenharmony_ci	.n_voltages = 84,
60462306a36Sopenharmony_ci	.ops = &rpm_bob_ops,
60562306a36Sopenharmony_ci};
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_cistatic const struct regulator_desc pm660_ftsmps = {
60862306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
60962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(355000, 0, 199, 5000),
61062306a36Sopenharmony_ci	},
61162306a36Sopenharmony_ci	.n_linear_ranges = 1,
61262306a36Sopenharmony_ci	.n_voltages = 200,
61362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
61462306a36Sopenharmony_ci};
61562306a36Sopenharmony_ci
61662306a36Sopenharmony_cistatic const struct regulator_desc pm660_hfsmps = {
61762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
61862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 216, 8000),
61962306a36Sopenharmony_ci	},
62062306a36Sopenharmony_ci	.n_linear_ranges = 1,
62162306a36Sopenharmony_ci	.n_voltages = 217,
62262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
62362306a36Sopenharmony_ci};
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_cistatic const struct regulator_desc pm660_ht_nldo = {
62662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
62762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(312000, 0, 124, 8000),
62862306a36Sopenharmony_ci	},
62962306a36Sopenharmony_ci	.n_linear_ranges = 1,
63062306a36Sopenharmony_ci	.n_voltages = 125,
63162306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
63262306a36Sopenharmony_ci};
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_cistatic const struct regulator_desc pm660_ht_lvpldo = {
63562306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
63662306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1504000, 0, 62, 8000),
63762306a36Sopenharmony_ci	},
63862306a36Sopenharmony_ci	.n_linear_ranges = 1,
63962306a36Sopenharmony_ci	.n_voltages = 63,
64062306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
64162306a36Sopenharmony_ci};
64262306a36Sopenharmony_ci
64362306a36Sopenharmony_cistatic const struct regulator_desc pm660_nldo660 = {
64462306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
64562306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 123, 8000),
64662306a36Sopenharmony_ci	},
64762306a36Sopenharmony_ci	.n_linear_ranges = 1,
64862306a36Sopenharmony_ci	.n_voltages = 124,
64962306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
65062306a36Sopenharmony_ci};
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_cistatic const struct regulator_desc pm660_pldo660 = {
65362306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
65462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1504000, 0, 255, 8000),
65562306a36Sopenharmony_ci	},
65662306a36Sopenharmony_ci	.n_linear_ranges = 1,
65762306a36Sopenharmony_ci	.n_voltages = 256,
65862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
65962306a36Sopenharmony_ci};
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_cistatic const struct regulator_desc pm660l_bob = {
66262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
66362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1800000, 0, 84, 32000),
66462306a36Sopenharmony_ci	},
66562306a36Sopenharmony_ci	.n_linear_ranges = 1,
66662306a36Sopenharmony_ci	.n_voltages = 85,
66762306a36Sopenharmony_ci	.ops = &rpm_bob_ops,
66862306a36Sopenharmony_ci};
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_cistatic const struct regulator_desc pm6125_ftsmps = {
67162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
67262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(300000, 0, 268, 4000),
67362306a36Sopenharmony_ci	},
67462306a36Sopenharmony_ci	.n_linear_ranges = 1,
67562306a36Sopenharmony_ci	.n_voltages = 269,
67662306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
67762306a36Sopenharmony_ci};
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_cistatic const struct regulator_desc pmic5_ftsmps520 = {
68062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
68162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(300000, 0, 263, 4000),
68262306a36Sopenharmony_ci	},
68362306a36Sopenharmony_ci	.n_linear_ranges = 1,
68462306a36Sopenharmony_ci	.n_voltages = 264,
68562306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
68662306a36Sopenharmony_ci};
68762306a36Sopenharmony_ci
68862306a36Sopenharmony_cistatic const struct regulator_desc pmic5_hfsmps515 = {
68962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
69062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 235, 16000),
69162306a36Sopenharmony_ci	},
69262306a36Sopenharmony_ci	.n_linear_ranges = 1,
69362306a36Sopenharmony_ci	.n_voltages = 236,
69462306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
69562306a36Sopenharmony_ci};
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_cistatic const struct regulator_desc pms405_hfsmps3 = {
69862306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
69962306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000),
70062306a36Sopenharmony_ci	},
70162306a36Sopenharmony_ci	.n_linear_ranges = 1,
70262306a36Sopenharmony_ci	.n_voltages = 216,
70362306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
70462306a36Sopenharmony_ci};
70562306a36Sopenharmony_ci
70662306a36Sopenharmony_cistatic const struct regulator_desc pms405_nldo300 = {
70762306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
70862306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(312000, 0, 127, 8000),
70962306a36Sopenharmony_ci	},
71062306a36Sopenharmony_ci	.n_linear_ranges = 1,
71162306a36Sopenharmony_ci	.n_voltages = 128,
71262306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
71362306a36Sopenharmony_ci};
71462306a36Sopenharmony_ci
71562306a36Sopenharmony_cistatic const struct regulator_desc pms405_nldo1200 = {
71662306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
71762306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(312000, 0, 127, 8000),
71862306a36Sopenharmony_ci	},
71962306a36Sopenharmony_ci	.n_linear_ranges = 1,
72062306a36Sopenharmony_ci	.n_voltages = 128,
72162306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
72262306a36Sopenharmony_ci};
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_cistatic const struct regulator_desc pms405_pldo50 = {
72562306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
72662306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1664000, 0, 128, 16000),
72762306a36Sopenharmony_ci	},
72862306a36Sopenharmony_ci	.n_linear_ranges = 1,
72962306a36Sopenharmony_ci	.n_voltages = 129,
73062306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
73162306a36Sopenharmony_ci};
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_cistatic const struct regulator_desc pms405_pldo150 = {
73462306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
73562306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1664000, 0, 128, 16000),
73662306a36Sopenharmony_ci	},
73762306a36Sopenharmony_ci	.n_linear_ranges = 1,
73862306a36Sopenharmony_ci	.n_voltages = 129,
73962306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
74062306a36Sopenharmony_ci};
74162306a36Sopenharmony_ci
74262306a36Sopenharmony_cistatic const struct regulator_desc pms405_pldo600 = {
74362306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
74462306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(1256000, 0, 98, 8000),
74562306a36Sopenharmony_ci	},
74662306a36Sopenharmony_ci	.n_linear_ranges = 1,
74762306a36Sopenharmony_ci	.n_voltages = 99,
74862306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
74962306a36Sopenharmony_ci};
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_cistatic const struct regulator_desc mp5496_smps = {
75262306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
75362306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(600000, 0, 127, 12500),
75462306a36Sopenharmony_ci	},
75562306a36Sopenharmony_ci	.n_linear_ranges = 1,
75662306a36Sopenharmony_ci	.n_voltages = 128,
75762306a36Sopenharmony_ci	.ops = &rpm_mp5496_ops,
75862306a36Sopenharmony_ci};
75962306a36Sopenharmony_ci
76062306a36Sopenharmony_cistatic const struct regulator_desc mp5496_ldoa2 = {
76162306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
76262306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(800000, 0, 127, 25000),
76362306a36Sopenharmony_ci	},
76462306a36Sopenharmony_ci	.n_linear_ranges = 1,
76562306a36Sopenharmony_ci	.n_voltages = 128,
76662306a36Sopenharmony_ci	.ops = &rpm_mp5496_ops,
76762306a36Sopenharmony_ci};
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_cistatic const struct regulator_desc pm2250_lvftsmps = {
77062306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
77162306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(320000, 0, 269, 4000),
77262306a36Sopenharmony_ci	},
77362306a36Sopenharmony_ci	.n_linear_ranges = 1,
77462306a36Sopenharmony_ci	.n_voltages = 270,
77562306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
77662306a36Sopenharmony_ci};
77762306a36Sopenharmony_ci
77862306a36Sopenharmony_cistatic const struct regulator_desc pm2250_ftsmps = {
77962306a36Sopenharmony_ci	.linear_ranges = (struct linear_range[]) {
78062306a36Sopenharmony_ci		REGULATOR_LINEAR_RANGE(640000, 0, 269, 8000),
78162306a36Sopenharmony_ci	},
78262306a36Sopenharmony_ci	.n_linear_ranges = 1,
78362306a36Sopenharmony_ci	.n_voltages = 270,
78462306a36Sopenharmony_ci	.ops = &rpm_smps_ldo_ops,
78562306a36Sopenharmony_ci};
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_cistruct rpm_regulator_data {
78862306a36Sopenharmony_ci	const char *name;
78962306a36Sopenharmony_ci	u32 type;
79062306a36Sopenharmony_ci	u32 id;
79162306a36Sopenharmony_ci	const struct regulator_desc *desc;
79262306a36Sopenharmony_ci	const char *supply;
79362306a36Sopenharmony_ci};
79462306a36Sopenharmony_ci
79562306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_mp5496_regulators[] = {
79662306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &mp5496_smps, "s1" },
79762306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &mp5496_smps, "s2" },
79862306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &mp5496_ldoa2, "l2" },
79962306a36Sopenharmony_ci	{}
80062306a36Sopenharmony_ci};
80162306a36Sopenharmony_ci
80262306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm2250_regulators[] = {
80362306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm2250_lvftsmps, "vdd_s1" },
80462306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm2250_lvftsmps, "vdd_s2" },
80562306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm2250_lvftsmps, "vdd_s3" },
80662306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm2250_ftsmps, "vdd_s4" },
80762306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
80862306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
80962306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81062306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
81162306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81262306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81362306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81462306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81562306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81662306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81762306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81862306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_nldo660, "vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12" },
81962306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
82062306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
82162306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
82262306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_ht_lvpldo, "vdd_l13_l14_l15_l16" },
82362306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82462306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82562306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82662306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82762306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82862306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm660_pldo660, "vdd_l4_l17_l18_l19_l20_l21_l22" },
82962306a36Sopenharmony_ci	{}
83062306a36Sopenharmony_ci};
83162306a36Sopenharmony_ci
83262306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm6125_regulators[] = {
83362306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm6125_ftsmps, "vdd_s1" },
83462306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm6125_ftsmps, "vdd_s2" },
83562306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm6125_ftsmps, "vdd_s3" },
83662306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm6125_ftsmps, "vdd_s4" },
83762306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm8998_hfsmps, "vdd_s5" },
83862306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm8998_hfsmps, "vdd_s6" },
83962306a36Sopenharmony_ci	{ "s7", QCOM_SMD_RPM_SMPA, 7, &pm8998_hfsmps, "vdd_s7" },
84062306a36Sopenharmony_ci	{ "s8", QCOM_SMD_RPM_SMPA, 8, &pm6125_ftsmps, "vdd_s8" },
84162306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, "vdd_l1_l7_l17_l18" },
84262306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_nldo660, "vdd_l2_l3_l4" },
84362306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, "vdd_l2_l3_l4" },
84462306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm660_nldo660, "vdd_l2_l3_l4" },
84562306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
84662306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_nldo660, "vdd_l6_l8" },
84762306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_nldo660, "vdd_l1_l7_l17_l18" },
84862306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_nldo660, "vdd_l6_l8" },
84962306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_ht_lvpldo, "vdd_l9_l11" },
85062306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_ht_lvpldo, "vdd_l10_l13_l14" },
85162306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_ht_lvpldo, "vdd_l9_l11" },
85262306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_ht_lvpldo, "vdd_l12_l16" },
85362306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, "vdd_l10_l13_l14" },
85462306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, "vdd_l10_l13_l14" },
85562306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
85662306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_ht_lvpldo, "vdd_l12_l16" },
85762306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_nldo660, "vdd_l1_l7_l17_l18" },
85862306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_nldo660, "vdd_l1_l7_l17_l18" },
85962306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
86062306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
86162306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
86262306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm660_pldo660, "vdd_l5_l15_l19_l20_l21_l22" },
86362306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm660_pldo660, "vdd_l23_l24" },
86462306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pm660_pldo660, "vdd_l23_l24" },
86562306a36Sopenharmony_ci	{ }
86662306a36Sopenharmony_ci};
86762306a36Sopenharmony_ci
86862306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm660_regulators[] = {
86962306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm660_ftsmps, "vdd_s1" },
87062306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm660_ftsmps, "vdd_s2" },
87162306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm660_ftsmps, "vdd_s3" },
87262306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm660_hfsmps, "vdd_s4" },
87362306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm660_hfsmps, "vdd_s5" },
87462306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm660_hfsmps, "vdd_s6" },
87562306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, "vdd_l1_l6_l7" },
87662306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_ht_nldo, "vdd_l2_l3" },
87762306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, "vdd_l2_l3" },
87862306a36Sopenharmony_ci	/* l4 is unaccessible on PM660 */
87962306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_ht_nldo, "vdd_l5" },
88062306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_ht_nldo, "vdd_l1_l6_l7" },
88162306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_ht_nldo, "vdd_l1_l6_l7" },
88262306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88362306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88462306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88562306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88662306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88762306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88862306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
88962306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
89062306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
89162306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
89262306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
89362306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
89462306a36Sopenharmony_ci	{ }
89562306a36Sopenharmony_ci};
89662306a36Sopenharmony_ci
89762306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm660l_regulators[] = {
89862306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPB, 1, &pm660_ftsmps, "vdd_s1" },
89962306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPB, 2, &pm660_ftsmps, "vdd_s2" },
90062306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_RWCX, 0, &pm660_ftsmps, "vdd_s3_s4" },
90162306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_RWMX, 0, &pm660_ftsmps, "vdd_s5" },
90262306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOB, 1, &pm660_nldo660, "vdd_l1_l9_l10" },
90362306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOB, 2, &pm660_pldo660, "vdd_l2" },
90462306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOB, 3, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
90562306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOB, 4, &pm660_pldo660, "vdd_l4_l6" },
90662306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOB, 5, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
90762306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOB, 6, &pm660_pldo660, "vdd_l4_l6" },
90862306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOB, 7, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
90962306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOB, 8, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
91062306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_RWLC, 0, &pm660_ht_nldo, "vdd_l1_l9_l10" },
91162306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_RWLM, 0, &pm660_ht_nldo, "vdd_l1_l9_l10" },
91262306a36Sopenharmony_ci	{ "bob", QCOM_SMD_RPM_BOBB, 1, &pm660l_bob, "vdd_bob", },
91362306a36Sopenharmony_ci	{ }
91462306a36Sopenharmony_ci};
91562306a36Sopenharmony_ci
91662306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8226_regulators[] = {
91762306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8226_hfsmps, "vdd_s1" },
91862306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8226_ftsmps, "vdd_s2" },
91962306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8226_hfsmps, "vdd_s3" },
92062306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8226_hfsmps, "vdd_s4" },
92162306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm8226_hfsmps, "vdd_s5" },
92262306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8226_nldo, "vdd_l1_l2_l4_l5" },
92362306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8226_nldo, "vdd_l1_l2_l4_l5" },
92462306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8226_nldo, "vdd_l3_l24_l26" },
92562306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8226_nldo, "vdd_l1_l2_l4_l5" },
92662306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8226_nldo, "vdd_l1_l2_l4_l5" },
92762306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8226_pldo, "vdd_l6_l7_l8_l9_l27" },
92862306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8226_pldo, "vdd_l6_l7_l8_l9_l27" },
92962306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8226_pldo, "vdd_l6_l7_l8_l9_l27" },
93062306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8226_pldo, "vdd_l6_l7_l8_l9_l27" },
93162306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8226_pldo, "vdd_l10_l11_l13" },
93262306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8226_pldo, "vdd_l10_l11_l13" },
93362306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8226_pldo, "vdd_l12_l14" },
93462306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8226_pldo, "vdd_l10_l11_l13" },
93562306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8226_pldo, "vdd_l12_l14" },
93662306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8226_pldo, "vdd_l15_l16_l17_l18" },
93762306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8226_pldo, "vdd_l15_l16_l17_l18" },
93862306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8226_pldo, "vdd_l15_l16_l17_l18" },
93962306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8226_pldo, "vdd_l15_l16_l17_l18" },
94062306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
94162306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
94262306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
94362306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
94462306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
94562306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pm8226_nldo, "vdd_l3_l24_l26" },
94662306a36Sopenharmony_ci	{ "l25", QCOM_SMD_RPM_LDOA, 25, &pm8226_pldo, "vdd_l25" },
94762306a36Sopenharmony_ci	{ "l26", QCOM_SMD_RPM_LDOA, 26, &pm8226_nldo, "vdd_l3_l24_l26" },
94862306a36Sopenharmony_ci	{ "l27", QCOM_SMD_RPM_LDOA, 27, &pm8226_pldo, "vdd_l6_l7_l8_l9_l27" },
94962306a36Sopenharmony_ci	{ "l28", QCOM_SMD_RPM_LDOA, 28, &pm8226_pldo, "vdd_l19_l20_l21_l22_l23_l28" },
95062306a36Sopenharmony_ci	{ "lvs1", QCOM_SMD_RPM_VSA, 1, &pm8226_switch, "vdd_lvs1" },
95162306a36Sopenharmony_ci	{}
95262306a36Sopenharmony_ci};
95362306a36Sopenharmony_ci
95462306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8841_regulators[] = {
95562306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPB, 1, &pm8x41_hfsmps, "vdd_s1" },
95662306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPB, 2, &pm8841_ftsmps, "vdd_s2" },
95762306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPB, 3, &pm8x41_hfsmps, "vdd_s3" },
95862306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPB, 4, &pm8841_ftsmps, "vdd_s4" },
95962306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPB, 5, &pm8841_ftsmps, "vdd_s5" },
96062306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPB, 6, &pm8841_ftsmps, "vdd_s6" },
96162306a36Sopenharmony_ci	{ "s7", QCOM_SMD_RPM_SMPB, 7, &pm8841_ftsmps, "vdd_s7" },
96262306a36Sopenharmony_ci	{ "s8", QCOM_SMD_RPM_SMPB, 8, &pm8841_ftsmps, "vdd_s8" },
96362306a36Sopenharmony_ci	{}
96462306a36Sopenharmony_ci};
96562306a36Sopenharmony_ci
96662306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8909_regulators[] = {
96762306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8916_buck_lvo_smps, "vdd_s1" },
96862306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8916_buck_hvo_smps, "vdd_s2" },
96962306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8916_nldo, "vdd_l1" },
97062306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8916_nldo, "vdd_l2_l5" },
97162306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8916_nldo, "vdd_l3_l6_l10" },
97262306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8916_pldo, "vdd_l4_l7" },
97362306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8226_pldo, "vdd_l2_l5" },
97462306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8226_pldo, "vdd_l3_l6_l10" },
97562306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8226_pldo, "vdd_l4_l7" },
97662306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8916_pldo, "vdd_l8_l11_l15_l18" },
97762306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8916_pldo, "vdd_l9_l12_l14_l17" },
97862306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8916_nldo, "vdd_l3_l6_l10" },
97962306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8226_pldo, "vdd_l8_l11_l15_l18" },
98062306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8916_pldo, "vdd_l9_l12_l14_l17" },
98162306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8916_pldo, "vdd_l13" },
98262306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8916_pldo, "vdd_l9_l12_l14_l17" },
98362306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8916_pldo, "vdd_l8_l11_l15_l18" },
98462306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8916_pldo, "vdd_l9_l12_l14_l17" },
98562306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8916_pldo, "vdd_l8_l11_l15_l18" },
98662306a36Sopenharmony_ci	{}
98762306a36Sopenharmony_ci};
98862306a36Sopenharmony_ci
98962306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8916_regulators[] = {
99062306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8916_buck_lvo_smps, "vdd_s1" },
99162306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8916_buck_lvo_smps, "vdd_s2" },
99262306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8916_buck_lvo_smps, "vdd_s3" },
99362306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8916_buck_hvo_smps, "vdd_s4" },
99462306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8916_nldo, "vdd_l1_l2_l3" },
99562306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8916_nldo, "vdd_l1_l2_l3" },
99662306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8916_nldo, "vdd_l1_l2_l3" },
99762306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8916_pldo, "vdd_l4_l5_l6" },
99862306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8916_pldo, "vdd_l4_l5_l6" },
99962306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8916_pldo, "vdd_l4_l5_l6" },
100062306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8916_pldo, "vdd_l7" },
100162306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18" },
100262306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18" },
100362306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100462306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100562306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100662306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100762306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100862306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
100962306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
101062306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
101162306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8916_pldo, "vdd_l8_l9_l10_l11_l12_l13_l14_l15_l16_l17_l18"},
101262306a36Sopenharmony_ci	{}
101362306a36Sopenharmony_ci};
101462306a36Sopenharmony_ci
101562306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8941_regulators[] = {
101662306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8x41_hfsmps, "vdd_s1" },
101762306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8x41_hfsmps, "vdd_s2" },
101862306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8x41_hfsmps, "vdd_s3" },
101962306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_BOOST, 1, &pm8941_boost },
102062306a36Sopenharmony_ci
102162306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8941_nldo, "vdd_l1_l3" },
102262306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8941_nldo, "vdd_l2_lvs1_2_3" },
102362306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8941_nldo, "vdd_l1_l3" },
102462306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8941_nldo, "vdd_l4_l11" },
102562306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8941_lnldo, "vdd_l5_l7" },
102662306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8941_pldo, "vdd_l6_l12_l14_l15" },
102762306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8941_lnldo, "vdd_l5_l7" },
102862306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8941_pldo, "vdd_l8_l16_l18_l19" },
102962306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8941_pldo, "vdd_l9_l10_l17_l22" },
103062306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8941_pldo, "vdd_l9_l10_l17_l22" },
103162306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8941_nldo, "vdd_l4_l11" },
103262306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8941_pldo, "vdd_l6_l12_l14_l15" },
103362306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8941_pldo, "vdd_l13_l20_l23_l24" },
103462306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8941_pldo, "vdd_l6_l12_l14_l15" },
103562306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8941_pldo, "vdd_l6_l12_l14_l15" },
103662306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8941_pldo, "vdd_l8_l16_l18_l19" },
103762306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8941_pldo, "vdd_l9_l10_l17_l22" },
103862306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8941_pldo, "vdd_l8_l16_l18_l19" },
103962306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8941_pldo, "vdd_l8_l16_l18_l19" },
104062306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8941_pldo, "vdd_l13_l20_l23_l24" },
104162306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8941_pldo, "vdd_l21" },
104262306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8941_pldo, "vdd_l9_l10_l17_l22" },
104362306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8941_pldo, "vdd_l13_l20_l23_l24" },
104462306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pm8941_pldo, "vdd_l13_l20_l23_l24" },
104562306a36Sopenharmony_ci
104662306a36Sopenharmony_ci	{ "lvs1", QCOM_SMD_RPM_VSA, 1, &pm8941_switch, "vdd_l2_lvs1_2_3" },
104762306a36Sopenharmony_ci	{ "lvs2", QCOM_SMD_RPM_VSA, 2, &pm8941_switch, "vdd_l2_lvs1_2_3" },
104862306a36Sopenharmony_ci	{ "lvs3", QCOM_SMD_RPM_VSA, 3, &pm8941_switch, "vdd_l2_lvs1_2_3" },
104962306a36Sopenharmony_ci
105062306a36Sopenharmony_ci	{ "5vs1", QCOM_SMD_RPM_VSA, 4, &pm8941_switch, "vin_5vs" },
105162306a36Sopenharmony_ci	{ "5vs2", QCOM_SMD_RPM_VSA, 5, &pm8941_switch, "vin_5vs" },
105262306a36Sopenharmony_ci
105362306a36Sopenharmony_ci	{}
105462306a36Sopenharmony_ci};
105562306a36Sopenharmony_ci
105662306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8950_regulators[] = {
105762306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8950_hfsmps, "vdd_s1" },
105862306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8950_hfsmps, "vdd_s2" },
105962306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8950_hfsmps, "vdd_s3" },
106062306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8950_hfsmps, "vdd_s4" },
106162306a36Sopenharmony_ci	/* S5 is managed via SPMI. */
106262306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm8950_hfsmps, "vdd_s6" },
106362306a36Sopenharmony_ci
106462306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8950_ult_nldo, "vdd_l1_l19" },
106562306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8950_ult_nldo, "vdd_l2_l23" },
106662306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8950_ult_nldo, "vdd_l3" },
106762306a36Sopenharmony_ci	/* L4 seems not to exist. */
106862306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8950_pldo_lv, "vdd_l5_l6_l7_l16" },
106962306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8950_pldo_lv, "vdd_l5_l6_l7_l16" },
107062306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8950_pldo_lv, "vdd_l5_l6_l7_l16" },
107162306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
107262306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
107362306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8950_ult_nldo, "vdd_l9_l10_l13_l14_l15_l18"},
107462306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
107562306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
107662306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
107762306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
107862306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8950_ult_pldo, "vdd_l9_l10_l13_l14_l15_l18" },
107962306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8950_ult_pldo, "vdd_l5_l6_l7_l16" },
108062306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8950_ult_pldo, "vdd_l8_l11_l12_l17_l22" },
108162306a36Sopenharmony_ci	/* L18 seems not to exist. */
108262306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8950_pldo, "vdd_l1_l19" },
108362306a36Sopenharmony_ci	/* L20 & L21 seem not to exist. */
108462306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8950_pldo, "vdd_l8_l11_l12_l17_l22" },
108562306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8950_pldo, "vdd_l2_l23" },
108662306a36Sopenharmony_ci	{}
108762306a36Sopenharmony_ci};
108862306a36Sopenharmony_ci
108962306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8953_regulators[] = {
109062306a36Sopenharmony_ci	{  "s1", QCOM_SMD_RPM_SMPA,  1, &pm8998_hfsmps, "vdd_s1" },
109162306a36Sopenharmony_ci	{  "s2", QCOM_SMD_RPM_SMPA,  2, &pm8998_hfsmps, "vdd_s2" },
109262306a36Sopenharmony_ci	{  "s3", QCOM_SMD_RPM_SMPA,  3, &pm8998_hfsmps, "vdd_s3" },
109362306a36Sopenharmony_ci	{  "s4", QCOM_SMD_RPM_SMPA,  4, &pm8998_hfsmps, "vdd_s4" },
109462306a36Sopenharmony_ci	{  "s5", QCOM_SMD_RPM_SMPA,  5, &pm8950_ftsmps2p5, "vdd_s5" },
109562306a36Sopenharmony_ci	{  "s6", QCOM_SMD_RPM_SMPA,  6, &pm8950_ftsmps2p5, "vdd_s6" },
109662306a36Sopenharmony_ci	{  "s7", QCOM_SMD_RPM_SMPA,  7, &pm8998_hfsmps, "vdd_s7" },
109762306a36Sopenharmony_ci
109862306a36Sopenharmony_ci	{  "l1", QCOM_SMD_RPM_LDOA,  1, &pm8953_ult_nldo, "vdd_l1" },
109962306a36Sopenharmony_ci	{  "l2", QCOM_SMD_RPM_LDOA,  2, &pm8953_ult_nldo, "vdd_l2_l3" },
110062306a36Sopenharmony_ci	{  "l3", QCOM_SMD_RPM_LDOA,  3, &pm8953_ult_nldo, "vdd_l2_l3" },
110162306a36Sopenharmony_ci	{  "l4", QCOM_SMD_RPM_LDOA,  4, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16_l19" },
110262306a36Sopenharmony_ci	{  "l5", QCOM_SMD_RPM_LDOA,  5, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16_l19" },
110362306a36Sopenharmony_ci	{  "l6", QCOM_SMD_RPM_LDOA,  6, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16_l19" },
110462306a36Sopenharmony_ci	{  "l7", QCOM_SMD_RPM_LDOA,  7, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16_l19" },
110562306a36Sopenharmony_ci	{  "l8", QCOM_SMD_RPM_LDOA,  8, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
110662306a36Sopenharmony_ci	{  "l9", QCOM_SMD_RPM_LDOA,  9, &pm8950_ult_pldo, "vdd_l9_l10_l17_l18_l22" },
110762306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8950_ult_pldo, "vdd_l9_l10_l17_l18_l22" },
110862306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
110962306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
111062306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
111162306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
111262306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8950_ult_pldo, "vdd_l8_l11_l12_l13_l14_l15" },
111362306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8950_ult_pldo, "vdd_l4_l5_l6_l7_l16_l19" },
111462306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8950_ult_pldo, "vdd_l9_l10_l17_l18_l22" },
111562306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8950_ult_pldo, "vdd_l9_l10_l17_l18_l22" },
111662306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8953_ult_nldo, "vdd_l4_l5_l6_l7_l16_l19" },
111762306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8953_lnldo,    "vdd_l20" },
111862306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8953_lnldo,    "vdd_l21" },
111962306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8950_ult_pldo, "vdd_l9_l10_l17_l18_l22" },
112062306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8953_ult_nldo, "vdd_l23" },
112162306a36Sopenharmony_ci	{}
112262306a36Sopenharmony_ci};
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8994_regulators[] = {
112562306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8994_ftsmps, "vdd_s1" },
112662306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8994_ftsmps, "vdd_s2" },
112762306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8994_hfsmps, "vdd_s3" },
112862306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8994_hfsmps, "vdd_s4" },
112962306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm8994_hfsmps, "vdd_s5" },
113062306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm8994_ftsmps, "vdd_s6" },
113162306a36Sopenharmony_ci	{ "s7", QCOM_SMD_RPM_SMPA, 7, &pm8994_hfsmps, "vdd_s7" },
113262306a36Sopenharmony_ci	{ "s8", QCOM_SMD_RPM_SMPA, 8, &pm8994_ftsmps, "vdd_s8" },
113362306a36Sopenharmony_ci	{ "s9", QCOM_SMD_RPM_SMPA, 9, &pm8994_ftsmps, "vdd_s9" },
113462306a36Sopenharmony_ci	{ "s10", QCOM_SMD_RPM_SMPA, 10, &pm8994_ftsmps, "vdd_s10" },
113562306a36Sopenharmony_ci	{ "s11", QCOM_SMD_RPM_SMPA, 11, &pm8994_ftsmps, "vdd_s11" },
113662306a36Sopenharmony_ci	{ "s12", QCOM_SMD_RPM_SMPA, 12, &pm8994_ftsmps, "vdd_s12" },
113762306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8994_nldo, "vdd_l1" },
113862306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8994_nldo, "vdd_l2_l26_l28" },
113962306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8994_nldo, "vdd_l3_l11" },
114062306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8994_nldo, "vdd_l4_l27_l31" },
114162306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8994_lnldo, "vdd_l5_l7" },
114262306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8994_pldo, "vdd_l6_l12_l32" },
114362306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8994_lnldo, "vdd_l5_l7" },
114462306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8994_pldo, "vdd_l8_l16_l30" },
114562306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8994_pldo, "vdd_l9_l10_l18_l22" },
114662306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8994_pldo, "vdd_l9_l10_l18_l22" },
114762306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8994_nldo, "vdd_l3_l11" },
114862306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8994_pldo, "vdd_l6_l12_l32" },
114962306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8994_pldo, "vdd_l13_l19_l23_l24" },
115062306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8994_pldo, "vdd_l14_l15" },
115162306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8994_pldo, "vdd_l14_l15" },
115262306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8994_pldo, "vdd_l8_l16_l30" },
115362306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8994_pldo, "vdd_l17_l29" },
115462306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8994_pldo, "vdd_l9_l10_l18_l22" },
115562306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8994_pldo, "vdd_l13_l19_l23_l24" },
115662306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8994_pldo, "vdd_l20_l21" },
115762306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8994_pldo, "vdd_l20_l21" },
115862306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8994_pldo, "vdd_l9_l10_l18_l22" },
115962306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8994_pldo, "vdd_l13_l19_l23_l24" },
116062306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pm8994_pldo, "vdd_l13_l19_l23_l24" },
116162306a36Sopenharmony_ci	{ "l25", QCOM_SMD_RPM_LDOA, 25, &pm8994_pldo, "vdd_l25" },
116262306a36Sopenharmony_ci	{ "l26", QCOM_SMD_RPM_LDOA, 26, &pm8994_nldo, "vdd_l2_l26_l28" },
116362306a36Sopenharmony_ci	{ "l27", QCOM_SMD_RPM_LDOA, 27, &pm8994_nldo, "vdd_l4_l27_l31" },
116462306a36Sopenharmony_ci	{ "l28", QCOM_SMD_RPM_LDOA, 28, &pm8994_nldo, "vdd_l2_l26_l28" },
116562306a36Sopenharmony_ci	{ "l29", QCOM_SMD_RPM_LDOA, 29, &pm8994_pldo, "vdd_l17_l29" },
116662306a36Sopenharmony_ci	{ "l30", QCOM_SMD_RPM_LDOA, 30, &pm8994_pldo, "vdd_l8_l16_l30" },
116762306a36Sopenharmony_ci	{ "l31", QCOM_SMD_RPM_LDOA, 31, &pm8994_nldo, "vdd_l4_l27_l31" },
116862306a36Sopenharmony_ci	{ "l32", QCOM_SMD_RPM_LDOA, 32, &pm8994_pldo, "vdd_l6_l12_l32" },
116962306a36Sopenharmony_ci	{ "lvs1", QCOM_SMD_RPM_VSA, 1, &pm8994_switch, "vdd_lvs1_2" },
117062306a36Sopenharmony_ci	{ "lvs2", QCOM_SMD_RPM_VSA, 2, &pm8994_switch, "vdd_lvs1_2" },
117162306a36Sopenharmony_ci
117262306a36Sopenharmony_ci	{}
117362306a36Sopenharmony_ci};
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pm8998_regulators[] = {
117662306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8998_ftsmps, "vdd_s1" },
117762306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8998_ftsmps, "vdd_s2" },
117862306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm8998_hfsmps, "vdd_s3" },
117962306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm8998_hfsmps, "vdd_s4" },
118062306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm8998_hfsmps, "vdd_s5" },
118162306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm8998_ftsmps, "vdd_s6" },
118262306a36Sopenharmony_ci	{ "s7", QCOM_SMD_RPM_SMPA, 7, &pm8998_ftsmps, "vdd_s7" },
118362306a36Sopenharmony_ci	{ "s8", QCOM_SMD_RPM_SMPA, 8, &pm8998_ftsmps, "vdd_s8" },
118462306a36Sopenharmony_ci	{ "s9", QCOM_SMD_RPM_SMPA, 9, &pm8998_ftsmps, "vdd_s9" },
118562306a36Sopenharmony_ci	{ "s10", QCOM_SMD_RPM_SMPA, 10, &pm8998_ftsmps, "vdd_s10" },
118662306a36Sopenharmony_ci	{ "s11", QCOM_SMD_RPM_SMPA, 11, &pm8998_ftsmps, "vdd_s11" },
118762306a36Sopenharmony_ci	{ "s12", QCOM_SMD_RPM_SMPA, 12, &pm8998_ftsmps, "vdd_s12" },
118862306a36Sopenharmony_ci	{ "s13", QCOM_SMD_RPM_SMPA, 13, &pm8998_ftsmps, "vdd_s13" },
118962306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm8998_nldo, "vdd_l1_l27" },
119062306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm8998_nldo, "vdd_l2_l8_l17" },
119162306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm8998_nldo, "vdd_l3_l11" },
119262306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pm8998_nldo, "vdd_l4_l5" },
119362306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm8998_nldo, "vdd_l4_l5" },
119462306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm8998_pldo, "vdd_l6" },
119562306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" },
119662306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm8998_nldo, "vdd_l2_l8_l17" },
119762306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm8998_pldo, "vdd_l9" },
119862306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm8998_pldo, "vdd_l10_l23_l25" },
119962306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm8998_nldo, "vdd_l3_l11" },
120062306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" },
120162306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm8998_pldo, "vdd_l13_l19_l21" },
120262306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" },
120362306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" },
120462306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm8998_pldo, "vdd_l16_l28" },
120562306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm8998_nldo, "vdd_l2_l8_l17" },
120662306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm8998_pldo, "vdd_l18_l22" },
120762306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm8998_pldo, "vdd_l13_l19_l21" },
120862306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pm8998_pldo, "vdd_l20_l24" },
120962306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pm8998_pldo, "vdd_l13_l19_l21" },
121062306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pm8998_pldo, "vdd_l18_l22" },
121162306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pm8998_pldo, "vdd_l10_l23_l25" },
121262306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pm8998_pldo, "vdd_l20_l24" },
121362306a36Sopenharmony_ci	{ "l25", QCOM_SMD_RPM_LDOA, 25, &pm8998_pldo, "vdd_l10_l23_l25" },
121462306a36Sopenharmony_ci	{ "l26", QCOM_SMD_RPM_LDOA, 26, &pm8998_nldo, "vdd_l26" },
121562306a36Sopenharmony_ci	{ "l27", QCOM_SMD_RPM_LDOA, 27, &pm8998_nldo, "vdd_l1_l27" },
121662306a36Sopenharmony_ci	{ "l28", QCOM_SMD_RPM_LDOA, 28, &pm8998_pldo, "vdd_l16_l28" },
121762306a36Sopenharmony_ci	{ "lvs1", QCOM_SMD_RPM_VSA, 1, &pm8998_switch, "vdd_lvs1_lvs2" },
121862306a36Sopenharmony_ci	{ "lvs2", QCOM_SMD_RPM_VSA, 2, &pm8998_switch, "vdd_lvs1_lvs2" },
121962306a36Sopenharmony_ci	{}
122062306a36Sopenharmony_ci};
122162306a36Sopenharmony_ci
122262306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pma8084_regulators[] = {
122362306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pma8084_ftsmps, "vdd_s1" },
122462306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pma8084_ftsmps, "vdd_s2" },
122562306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pma8084_hfsmps, "vdd_s3" },
122662306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pma8084_hfsmps, "vdd_s4" },
122762306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pma8084_hfsmps, "vdd_s5" },
122862306a36Sopenharmony_ci	{ "s6", QCOM_SMD_RPM_SMPA, 6, &pma8084_ftsmps, "vdd_s6" },
122962306a36Sopenharmony_ci	{ "s7", QCOM_SMD_RPM_SMPA, 7, &pma8084_ftsmps, "vdd_s7" },
123062306a36Sopenharmony_ci	{ "s8", QCOM_SMD_RPM_SMPA, 8, &pma8084_ftsmps, "vdd_s8" },
123162306a36Sopenharmony_ci	{ "s9", QCOM_SMD_RPM_SMPA, 9, &pma8084_ftsmps, "vdd_s9" },
123262306a36Sopenharmony_ci	{ "s10", QCOM_SMD_RPM_SMPA, 10, &pma8084_ftsmps, "vdd_s10" },
123362306a36Sopenharmony_ci	{ "s11", QCOM_SMD_RPM_SMPA, 11, &pma8084_ftsmps, "vdd_s11" },
123462306a36Sopenharmony_ci	{ "s12", QCOM_SMD_RPM_SMPA, 12, &pma8084_ftsmps, "vdd_s12" },
123562306a36Sopenharmony_ci
123662306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pma8084_nldo, "vdd_l1_l11" },
123762306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pma8084_nldo, "vdd_l2_l3_l4_l27" },
123862306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pma8084_nldo, "vdd_l2_l3_l4_l27" },
123962306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pma8084_nldo, "vdd_l2_l3_l4_l27" },
124062306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pma8084_pldo, "vdd_l5_l7" },
124162306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pma8084_pldo, "vdd_l6_l12_l14_l15_l26" },
124262306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pma8084_pldo, "vdd_l5_l7" },
124362306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pma8084_pldo, "vdd_l8" },
124462306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
124562306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
124662306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pma8084_nldo, "vdd_l1_l11" },
124762306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pma8084_pldo, "vdd_l6_l12_l14_l15_l26" },
124862306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
124962306a36Sopenharmony_ci	{ "l14", QCOM_SMD_RPM_LDOA, 14, &pma8084_pldo, "vdd_l6_l12_l14_l15_l26" },
125062306a36Sopenharmony_ci	{ "l15", QCOM_SMD_RPM_LDOA, 15, &pma8084_pldo, "vdd_l6_l12_l14_l15_l26" },
125162306a36Sopenharmony_ci	{ "l16", QCOM_SMD_RPM_LDOA, 16, &pma8084_pldo, "vdd_l16_l25" },
125262306a36Sopenharmony_ci	{ "l17", QCOM_SMD_RPM_LDOA, 17, &pma8084_pldo, "vdd_l17" },
125362306a36Sopenharmony_ci	{ "l18", QCOM_SMD_RPM_LDOA, 18, &pma8084_pldo, "vdd_l18" },
125462306a36Sopenharmony_ci	{ "l19", QCOM_SMD_RPM_LDOA, 19, &pma8084_pldo, "vdd_l19" },
125562306a36Sopenharmony_ci	{ "l20", QCOM_SMD_RPM_LDOA, 20, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
125662306a36Sopenharmony_ci	{ "l21", QCOM_SMD_RPM_LDOA, 21, &pma8084_pldo, "vdd_l21" },
125762306a36Sopenharmony_ci	{ "l22", QCOM_SMD_RPM_LDOA, 22, &pma8084_pldo, "vdd_l22" },
125862306a36Sopenharmony_ci	{ "l23", QCOM_SMD_RPM_LDOA, 23, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
125962306a36Sopenharmony_ci	{ "l24", QCOM_SMD_RPM_LDOA, 24, &pma8084_pldo, "vdd_l9_l10_l13_l20_l23_l24" },
126062306a36Sopenharmony_ci	{ "l25", QCOM_SMD_RPM_LDOA, 25, &pma8084_pldo, "vdd_l16_l25" },
126162306a36Sopenharmony_ci	{ "l26", QCOM_SMD_RPM_LDOA, 26, &pma8084_pldo, "vdd_l6_l12_l14_l15_l26" },
126262306a36Sopenharmony_ci	{ "l27", QCOM_SMD_RPM_LDOA, 27, &pma8084_nldo, "vdd_l2_l3_l4_l27" },
126362306a36Sopenharmony_ci
126462306a36Sopenharmony_ci	{ "lvs1", QCOM_SMD_RPM_VSA, 1, &pma8084_switch },
126562306a36Sopenharmony_ci	{ "lvs2", QCOM_SMD_RPM_VSA, 2, &pma8084_switch },
126662306a36Sopenharmony_ci	{ "lvs3", QCOM_SMD_RPM_VSA, 3, &pma8084_switch },
126762306a36Sopenharmony_ci	{ "lvs4", QCOM_SMD_RPM_VSA, 4, &pma8084_switch },
126862306a36Sopenharmony_ci	{ "5vs1", QCOM_SMD_RPM_VSA, 5, &pma8084_switch },
126962306a36Sopenharmony_ci
127062306a36Sopenharmony_ci	{}
127162306a36Sopenharmony_ci};
127262306a36Sopenharmony_ci
127362306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pmi8994_regulators[] = {
127462306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPB, 1, &pmi8994_ftsmps, "vdd_s1" },
127562306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPB, 2, &pmi8994_hfsmps, "vdd_s2" },
127662306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPB, 3, &pmi8994_hfsmps, "vdd_s3" },
127762306a36Sopenharmony_ci	{ "boost-bypass", QCOM_SMD_RPM_BBYB, 1, &pmi8994_bby, "vdd_bst_byp" },
127862306a36Sopenharmony_ci	{}
127962306a36Sopenharmony_ci};
128062306a36Sopenharmony_ci
128162306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pmi8998_regulators[] = {
128262306a36Sopenharmony_ci	{ "bob", QCOM_SMD_RPM_BOBB, 1, &pmi8998_bob, "vdd_bob" },
128362306a36Sopenharmony_ci	{}
128462306a36Sopenharmony_ci};
128562306a36Sopenharmony_ci
128662306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pmr735a_regulators[] = {
128762306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPE, 1, &pmic5_ftsmps520, "vdd_s1"},
128862306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPE, 2, &pmic5_ftsmps520, "vdd_s2"},
128962306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPE, 3, &pmic5_hfsmps515, "vdd_s3"},
129062306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOE, 1, &pm660_nldo660, "vdd_l1_l2"},
129162306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOE, 2, &pm660_nldo660, "vdd_l1_l2"},
129262306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOE, 3, &pm660_nldo660, "vdd_l3"},
129362306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOE, 4, &pm660_ht_lvpldo, "vdd_l4"},
129462306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOE, 5, &pm660_nldo660, "vdd_l5_l6"},
129562306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOE, 6, &pm660_nldo660, "vdd_l5_l6"},
129662306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOE, 7, &pm660_pldo660, "vdd_l7_bob"},
129762306a36Sopenharmony_ci	{}
129862306a36Sopenharmony_ci};
129962306a36Sopenharmony_ci
130062306a36Sopenharmony_cistatic const struct rpm_regulator_data rpm_pms405_regulators[] = {
130162306a36Sopenharmony_ci	{ "s1", QCOM_SMD_RPM_SMPA, 1, &pms405_hfsmps3, "vdd_s1" },
130262306a36Sopenharmony_ci	{ "s2", QCOM_SMD_RPM_SMPA, 2, &pms405_hfsmps3, "vdd_s2" },
130362306a36Sopenharmony_ci	{ "s3", QCOM_SMD_RPM_SMPA, 3, &pms405_hfsmps3, "vdd_s3" },
130462306a36Sopenharmony_ci	{ "s4", QCOM_SMD_RPM_SMPA, 4, &pms405_hfsmps3, "vdd_s4" },
130562306a36Sopenharmony_ci	{ "s5", QCOM_SMD_RPM_SMPA, 5, &pms405_hfsmps3, "vdd_s5" },
130662306a36Sopenharmony_ci	{ "l1", QCOM_SMD_RPM_LDOA, 1, &pms405_nldo1200, "vdd_l1_l2" },
130762306a36Sopenharmony_ci	{ "l2", QCOM_SMD_RPM_LDOA, 2, &pms405_nldo1200, "vdd_l1_l2" },
130862306a36Sopenharmony_ci	{ "l3", QCOM_SMD_RPM_LDOA, 3, &pms405_nldo1200, "vdd_l3_l8" },
130962306a36Sopenharmony_ci	{ "l4", QCOM_SMD_RPM_LDOA, 4, &pms405_nldo300, "vdd_l4" },
131062306a36Sopenharmony_ci	{ "l5", QCOM_SMD_RPM_LDOA, 5, &pms405_pldo600, "vdd_l5_l6" },
131162306a36Sopenharmony_ci	{ "l6", QCOM_SMD_RPM_LDOA, 6, &pms405_pldo600, "vdd_l5_l6" },
131262306a36Sopenharmony_ci	{ "l7", QCOM_SMD_RPM_LDOA, 7, &pms405_pldo150, "vdd_l7" },
131362306a36Sopenharmony_ci	{ "l8", QCOM_SMD_RPM_LDOA, 8, &pms405_nldo1200, "vdd_l3_l8" },
131462306a36Sopenharmony_ci	{ "l9", QCOM_SMD_RPM_LDOA, 9, &pms405_nldo1200, "vdd_l9" },
131562306a36Sopenharmony_ci	{ "l10", QCOM_SMD_RPM_LDOA, 10, &pms405_pldo50, "vdd_l10_l11_l12_l13" },
131662306a36Sopenharmony_ci	{ "l11", QCOM_SMD_RPM_LDOA, 11, &pms405_pldo150, "vdd_l10_l11_l12_l13" },
131762306a36Sopenharmony_ci	{ "l12", QCOM_SMD_RPM_LDOA, 12, &pms405_pldo150, "vdd_l10_l11_l12_l13" },
131862306a36Sopenharmony_ci	{ "l13", QCOM_SMD_RPM_LDOA, 13, &pms405_pldo150, "vdd_l10_l11_l12_l13" },
131962306a36Sopenharmony_ci	{}
132062306a36Sopenharmony_ci};
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_cistatic const struct of_device_id rpm_of_match[] = {
132362306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-mp5496-regulators", .data = &rpm_mp5496_regulators },
132462306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm2250-regulators", .data = &rpm_pm2250_regulators },
132562306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm6125-regulators", .data = &rpm_pm6125_regulators },
132662306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm660-regulators", .data = &rpm_pm660_regulators },
132762306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm660l-regulators", .data = &rpm_pm660l_regulators },
132862306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8226-regulators", .data = &rpm_pm8226_regulators },
132962306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8841-regulators", .data = &rpm_pm8841_regulators },
133062306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8909-regulators", .data = &rpm_pm8909_regulators },
133162306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8916-regulators", .data = &rpm_pm8916_regulators },
133262306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8941-regulators", .data = &rpm_pm8941_regulators },
133362306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8950-regulators", .data = &rpm_pm8950_regulators },
133462306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8953-regulators", .data = &rpm_pm8953_regulators },
133562306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8994-regulators", .data = &rpm_pm8994_regulators },
133662306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pm8998-regulators", .data = &rpm_pm8998_regulators },
133762306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators },
133862306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pmi8994-regulators", .data = &rpm_pmi8994_regulators },
133962306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators },
134062306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pmr735a-regulators", .data = &rpm_pmr735a_regulators },
134162306a36Sopenharmony_ci	{ .compatible = "qcom,rpm-pms405-regulators", .data = &rpm_pms405_regulators },
134262306a36Sopenharmony_ci	{}
134362306a36Sopenharmony_ci};
134462306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, rpm_of_match);
134562306a36Sopenharmony_ci
134662306a36Sopenharmony_ci/**
134762306a36Sopenharmony_ci * rpm_regulator_init_vreg() - initialize all attributes of a qcom_smd-regulator
134862306a36Sopenharmony_ci * @vreg:		Pointer to the individual qcom_smd-regulator resource
134962306a36Sopenharmony_ci * @dev:		Pointer to the top level qcom_smd-regulator PMIC device
135062306a36Sopenharmony_ci * @node:		Pointer to the individual qcom_smd-regulator resource
135162306a36Sopenharmony_ci *			device node
135262306a36Sopenharmony_ci * @rpm:		Pointer to the rpm bus node
135362306a36Sopenharmony_ci * @pmic_rpm_data:	Pointer to a null-terminated array of qcom_smd-regulator
135462306a36Sopenharmony_ci *			resources defined for the top level PMIC device
135562306a36Sopenharmony_ci *
135662306a36Sopenharmony_ci * Return: 0 on success, errno on failure
135762306a36Sopenharmony_ci */
135862306a36Sopenharmony_cistatic int rpm_regulator_init_vreg(struct qcom_rpm_reg *vreg, struct device *dev,
135962306a36Sopenharmony_ci				   struct device_node *node, struct qcom_smd_rpm *rpm,
136062306a36Sopenharmony_ci				   const struct rpm_regulator_data *pmic_rpm_data)
136162306a36Sopenharmony_ci{
136262306a36Sopenharmony_ci	struct regulator_config config = {};
136362306a36Sopenharmony_ci	const struct rpm_regulator_data *rpm_data;
136462306a36Sopenharmony_ci	struct regulator_dev *rdev;
136562306a36Sopenharmony_ci	int ret;
136662306a36Sopenharmony_ci
136762306a36Sopenharmony_ci	for (rpm_data = pmic_rpm_data; rpm_data->name; rpm_data++)
136862306a36Sopenharmony_ci		if (of_node_name_eq(node, rpm_data->name))
136962306a36Sopenharmony_ci			break;
137062306a36Sopenharmony_ci
137162306a36Sopenharmony_ci	if (!rpm_data->name) {
137262306a36Sopenharmony_ci		dev_err(dev, "Unknown regulator %pOFn\n", node);
137362306a36Sopenharmony_ci		return -EINVAL;
137462306a36Sopenharmony_ci	}
137562306a36Sopenharmony_ci
137662306a36Sopenharmony_ci	vreg->dev	= dev;
137762306a36Sopenharmony_ci	vreg->rpm	= rpm;
137862306a36Sopenharmony_ci	vreg->type	= rpm_data->type;
137962306a36Sopenharmony_ci	vreg->id	= rpm_data->id;
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_ci	memcpy(&vreg->desc, rpm_data->desc, sizeof(vreg->desc));
138262306a36Sopenharmony_ci	vreg->desc.name = rpm_data->name;
138362306a36Sopenharmony_ci	vreg->desc.supply_name = rpm_data->supply;
138462306a36Sopenharmony_ci	vreg->desc.owner = THIS_MODULE;
138562306a36Sopenharmony_ci	vreg->desc.type = REGULATOR_VOLTAGE;
138662306a36Sopenharmony_ci	vreg->desc.of_match = rpm_data->name;
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ci	config.dev		= dev;
138962306a36Sopenharmony_ci	config.of_node		= node;
139062306a36Sopenharmony_ci	config.driver_data	= vreg;
139162306a36Sopenharmony_ci
139262306a36Sopenharmony_ci	rdev = devm_regulator_register(dev, &vreg->desc, &config);
139362306a36Sopenharmony_ci	if (IS_ERR(rdev)) {
139462306a36Sopenharmony_ci		ret = PTR_ERR(rdev);
139562306a36Sopenharmony_ci		dev_err(dev, "%pOFn: devm_regulator_register() failed, ret=%d\n", node, ret);
139662306a36Sopenharmony_ci		return ret;
139762306a36Sopenharmony_ci	}
139862306a36Sopenharmony_ci
139962306a36Sopenharmony_ci	return 0;
140062306a36Sopenharmony_ci}
140162306a36Sopenharmony_ci
140262306a36Sopenharmony_cistatic int rpm_reg_probe(struct platform_device *pdev)
140362306a36Sopenharmony_ci{
140462306a36Sopenharmony_ci	struct device *dev = &pdev->dev;
140562306a36Sopenharmony_ci	const struct rpm_regulator_data *vreg_data;
140662306a36Sopenharmony_ci	struct device_node *node;
140762306a36Sopenharmony_ci	struct qcom_rpm_reg *vreg;
140862306a36Sopenharmony_ci	struct qcom_smd_rpm *rpm;
140962306a36Sopenharmony_ci	int ret;
141062306a36Sopenharmony_ci
141162306a36Sopenharmony_ci	rpm = dev_get_drvdata(pdev->dev.parent);
141262306a36Sopenharmony_ci	if (!rpm) {
141362306a36Sopenharmony_ci		dev_err(&pdev->dev, "Unable to retrieve handle to rpm\n");
141462306a36Sopenharmony_ci		return -ENODEV;
141562306a36Sopenharmony_ci	}
141662306a36Sopenharmony_ci
141762306a36Sopenharmony_ci	vreg_data = of_device_get_match_data(dev);
141862306a36Sopenharmony_ci	if (!vreg_data)
141962306a36Sopenharmony_ci		return -ENODEV;
142062306a36Sopenharmony_ci
142162306a36Sopenharmony_ci	for_each_available_child_of_node(dev->of_node, node) {
142262306a36Sopenharmony_ci		vreg = devm_kzalloc(&pdev->dev, sizeof(*vreg), GFP_KERNEL);
142362306a36Sopenharmony_ci		if (!vreg) {
142462306a36Sopenharmony_ci			of_node_put(node);
142562306a36Sopenharmony_ci			return -ENOMEM;
142662306a36Sopenharmony_ci		}
142762306a36Sopenharmony_ci
142862306a36Sopenharmony_ci		ret = rpm_regulator_init_vreg(vreg, dev, node, rpm, vreg_data);
142962306a36Sopenharmony_ci
143062306a36Sopenharmony_ci		if (ret < 0) {
143162306a36Sopenharmony_ci			of_node_put(node);
143262306a36Sopenharmony_ci			return ret;
143362306a36Sopenharmony_ci		}
143462306a36Sopenharmony_ci	}
143562306a36Sopenharmony_ci
143662306a36Sopenharmony_ci	return 0;
143762306a36Sopenharmony_ci}
143862306a36Sopenharmony_ci
143962306a36Sopenharmony_cistatic struct platform_driver rpm_reg_driver = {
144062306a36Sopenharmony_ci	.probe = rpm_reg_probe,
144162306a36Sopenharmony_ci	.driver = {
144262306a36Sopenharmony_ci		.name  = "qcom_rpm_smd_regulator",
144362306a36Sopenharmony_ci		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
144462306a36Sopenharmony_ci		.of_match_table = rpm_of_match,
144562306a36Sopenharmony_ci	},
144662306a36Sopenharmony_ci};
144762306a36Sopenharmony_ci
144862306a36Sopenharmony_cistatic int __init rpm_reg_init(void)
144962306a36Sopenharmony_ci{
145062306a36Sopenharmony_ci	return platform_driver_register(&rpm_reg_driver);
145162306a36Sopenharmony_ci}
145262306a36Sopenharmony_cisubsys_initcall(rpm_reg_init);
145362306a36Sopenharmony_ci
145462306a36Sopenharmony_cistatic void __exit rpm_reg_exit(void)
145562306a36Sopenharmony_ci{
145662306a36Sopenharmony_ci	platform_driver_unregister(&rpm_reg_driver);
145762306a36Sopenharmony_ci}
145862306a36Sopenharmony_cimodule_exit(rpm_reg_exit)
145962306a36Sopenharmony_ci
146062306a36Sopenharmony_ciMODULE_DESCRIPTION("Qualcomm RPM regulator driver");
146162306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
1462