Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34a4b239 authored by Haojian Zhuang's avatar Haojian Zhuang Committed by Samuel Ortiz
Browse files

regulator: Unsupport 88pm8607 A0 and A1



Remove the support 88PM8607 A0/A1 stepping. There's some register
definition changes in B0 stepping. It can make software more efficient.

Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@marvell.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 866a98ae
Loading
Loading
Loading
Loading
+77 −213
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ static inline int check_range(struct pm8607_regulator_info *info,
static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index)
{
	struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
	uint8_t chip_id = info->chip->chip_version;
	int ret = -EINVAL;

	switch (info->desc.id) {
@@ -90,88 +89,37 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index)
	case PM8607_ID_LDO2:
	case PM8607_ID_LDO3:
	case PM8607_ID_LDO9:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			ret = (index < 3) ? (index * 50000 + 1800000) :
				((index < 8) ? (index * 50000 + 2550000) :
				 -EINVAL);
			break;
		case PM8607_CHIP_B0:
		ret = (index < 3) ? (index * 50000 + 1800000) :
			((index < 7) ? (index * 50000 + 2550000) :
			3300000);
		break;
		}
		break;
	case PM8607_ID_LDO4:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			ret = (index < 3) ? (index * 50000 + 1800000) :
				((index < 8) ? (index * 50000 + 2550000) :
				 -EINVAL);
			break;
		case PM8607_CHIP_B0:
		ret = (index < 3) ? (index * 50000 + 1800000) :
			((index < 6) ? (index * 50000 + 2550000) :
			((index == 6) ? 2900000 : 3300000));
		break;
		}
		break;
	case PM8607_ID_LDO6:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			ret = (index < 3) ? (index * 50000 + 1800000) :
				((index < 8) ? (index * 50000 + 2450000) :
				-EINVAL);
			break;
		case PM8607_CHIP_B0:
		ret = (index < 2) ? (index * 50000 + 1800000) :
			((index < 7) ? (index * 50000 + 2500000) :
			3300000);
		break;
		}
		break;
	case PM8607_ID_LDO10:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			ret = (index < 3) ? (index * 50000 + 1800000) :
				((index < 8) ? (index * 50000 + 2550000) :
				1200000);
			break;
		case PM8607_CHIP_B0:
		ret = (index < 3) ? (index * 50000 + 1800000) :
			((index < 7) ? (index * 50000 + 2550000) :
			((index == 7) ? 3300000 : 1200000));
		break;
		}
		break;
	case PM8607_ID_LDO14:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			ret = (index < 3) ? (index * 50000 + 1800000) :
				((index < 8) ? (index * 50000 + 2550000) :
				 -EINVAL);
			break;
		case PM8607_CHIP_B0:
		ret = (index < 2) ? (index * 50000 + 1800000) :
			((index < 7) ? (index * 50000 + 2600000) :
			3300000);
		break;
	}
		break;
	}
	return ret;
}

static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
{
	struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
	uint8_t chip_id = info->chip->chip_version;
	int val = -ENOENT;
	int ret;

@@ -256,25 +204,6 @@ static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
	case PM8607_ID_LDO2:
	case PM8607_ID_LDO3:
	case PM8607_ID_LDO9:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			if (min_uV < 2700000)	/* 1800mV ~ 1900mV / 50mV */
				if (min_uV <= 1800000)
					val = 0;
				else if (min_uV <= 1900000)
					val = (min_uV - 1750001) / 50000;
				else
					val = 3;	/* 2700mV */
			else {			/* 2700mV ~ 2900mV / 50mV */
				if (min_uV <= 2900000) {
					val = (min_uV - 2650001) / 50000;
					val += 3;
				} else
					val = -EINVAL;
			}
			break;
		case PM8607_CHIP_B0:
		if (min_uV < 2700000) {	/* 1800mV ~ 1900mV / 50mV */
			if (min_uV <= 1800000)
				val = 0;
@@ -292,28 +221,7 @@ static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
				val = -EINVAL;
		}
		break;
		}
		break;
	case PM8607_ID_LDO4:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			if (min_uV < 2700000)	/* 1800mV ~ 1900mV / 50mV */
				if (min_uV <= 1800000)
					val = 0;
				else if (min_uV <= 1900000)
					val = (min_uV - 1750001) / 50000;
				else
					val = 3;	/* 2700mV */
			else {			/* 2700mV ~ 2900mV / 50mV */
				if (min_uV <= 2900000) {
					val = (min_uV - 2650001) / 50000;
					val += 3;
				} else
					val = -EINVAL;
			}
			break;
		case PM8607_CHIP_B0:
		if (min_uV < 2700000) {	/* 1800mV ~ 1900mV / 50mV */
			if (min_uV <= 1800000)
				val = 0;
@@ -333,28 +241,7 @@ static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
				val = -EINVAL;
		}
		break;
		}
		break;
	case PM8607_ID_LDO6:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			if (min_uV < 2600000) {	/* 1800mV ~ 1900mV / 50mV */
				if (min_uV <= 1800000)
					val = 0;
				else if (min_uV <= 1900000)
					val = (min_uV - 1750001) / 50000;
				else
					val = 3;	/* 2600mV */
			} else {		/* 2600mV ~ 2800mV / 50mV */
				if (min_uV <= 2800000) {
					val = (min_uV - 2550001) / 50000;
					val += 3;
				} else
					val = -EINVAL;
			}
			break;
		case PM8607_CHIP_B0:
		if (min_uV < 2600000) {	/* 1800mV ~ 1850mV / 50mV */
			if (min_uV <= 1800000)
				val = 0;
@@ -372,28 +259,7 @@ static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
				val = -EINVAL;
		}
		break;
		}
		break;
	case PM8607_ID_LDO14:
		switch (chip_id) {
		case PM8607_CHIP_A0:
		case PM8607_CHIP_A1:
			if (min_uV < 2700000) {	/* 1800mV ~ 1900mV / 50mV */
				if (min_uV <= 1800000)
					val = 0;
				else if (min_uV <= 1900000)
					val = (min_uV - 1750001) / 50000;
				else
					val = 3;	/* 2700mV */
			} else {		 /* 2700mV ~ 2900mV / 50mV */
				if (min_uV <= 2900000) {
					val = (min_uV - 2650001) / 50000;
					val += 3;
				} else
					val = -EINVAL;
			}
			break;
		case PM8607_CHIP_B0:
		if (min_uV < 2700000) {	/* 1800mV ~ 1850mV / 50mV */
			if (min_uV <= 1800000)
				val = 0;
@@ -412,8 +278,6 @@ static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
		}
		break;
	}
		break;
	}
	if (val >= 0) {
		ret = pm8607_list_voltage(rdev, val);
		if (ret > max_uV) {