Kaynağa Gözat

regulator: fan53555: Add support for FAN53555UC13X type

IC type options 00, 13 and 23 are sharing the same DIE_ID 0.
Let's differentiate between these revisions.
FAN53555UC13X has the ID 0 and REV 0xf, starts at 800mV and
increments in 10mV steps.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Wadim Egorov 9 yıl önce
ebeveyn
işleme
e57cbb70b7
1 değiştirilmiş dosya ile 22 ekleme ve 0 silme
  1. 22 0
      drivers/regulator/fan53555.c

+ 22 - 0
drivers/regulator/fan53555.c

@@ -68,6 +68,12 @@ enum {
 	FAN53555_CHIP_ID_08 = 8,
 	FAN53555_CHIP_ID_08 = 8,
 };
 };
 
 
+/* IC mask revision */
+enum {
+	FAN53555_CHIP_REV_00 = 0x3,
+	FAN53555_CHIP_REV_13 = 0xf,
+};
+
 enum {
 enum {
 	SILERGY_SYR82X = 8,
 	SILERGY_SYR82X = 8,
 };
 };
@@ -218,6 +224,22 @@ static int fan53555_voltages_setup_fairchild(struct fan53555_device_info *di)
 	/* Init voltage range and step */
 	/* Init voltage range and step */
 	switch (di->chip_id) {
 	switch (di->chip_id) {
 	case FAN53555_CHIP_ID_00:
 	case FAN53555_CHIP_ID_00:
+		switch (di->chip_rev) {
+		case FAN53555_CHIP_REV_00:
+			di->vsel_min = 600000;
+			di->vsel_step = 10000;
+			break;
+		case FAN53555_CHIP_REV_13:
+			di->vsel_min = 800000;
+			di->vsel_step = 10000;
+			break;
+		default:
+			dev_err(di->dev,
+				"Chip ID %d with rev %d not supported!\n",
+				di->chip_id, di->chip_rev);
+			return -EINVAL;
+		}
+		break;
 	case FAN53555_CHIP_ID_01:
 	case FAN53555_CHIP_ID_01:
 	case FAN53555_CHIP_ID_03:
 	case FAN53555_CHIP_ID_03:
 	case FAN53555_CHIP_ID_05:
 	case FAN53555_CHIP_ID_05: