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

Commit 0230ba1b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "platform: qpnp-revid: add support for PM8005"

parents f4700d93 d6873f8d
Loading
Loading
Loading
Loading
+15 −30
Original line number Original line Diff line number Diff line
@@ -1674,103 +1674,88 @@ int qpnp_adc_get_revid_version(struct device *dev)
		(revid_data->rev2 == PM8941_V3P1_REV2) &&
		(revid_data->rev2 == PM8941_V3P1_REV2) &&
		(revid_data->rev3 == PM8941_V3P1_REV3) &&
		(revid_data->rev3 == PM8941_V3P1_REV3) &&
		(revid_data->rev4 == PM8941_V3P1_REV4) &&
		(revid_data->rev4 == PM8941_V3P1_REV4) &&
		(revid_data->pmic_type == PM8941_V3P1_TYPE) &&
		(revid_data->pmic_subtype == PM8941_SUBTYPE))
		(revid_data->pmic_subtype == PM8941_V3P1_SUBTYPE))
			return QPNP_REV_ID_8941_3_1;
			return QPNP_REV_ID_8941_3_1;
	else if ((revid_data->rev1 == PM8941_V3P0_REV1) &&
	else if ((revid_data->rev1 == PM8941_V3P0_REV1) &&
		(revid_data->rev2 == PM8941_V3P0_REV2) &&
		(revid_data->rev2 == PM8941_V3P0_REV2) &&
		(revid_data->rev3 == PM8941_V3P0_REV3) &&
		(revid_data->rev3 == PM8941_V3P0_REV3) &&
		(revid_data->rev4 == PM8941_V3P0_REV4) &&
		(revid_data->rev4 == PM8941_V3P0_REV4) &&
		(revid_data->pmic_type == PM8941_V3P0_TYPE) &&
		(revid_data->pmic_subtype == PM8941_SUBTYPE))
		(revid_data->pmic_subtype == PM8941_V3P0_SUBTYPE))
			return QPNP_REV_ID_8941_3_0;
			return QPNP_REV_ID_8941_3_0;
	else if ((revid_data->rev1 == PM8941_V2P0_REV1) &&
	else if ((revid_data->rev1 == PM8941_V2P0_REV1) &&
		(revid_data->rev2 == PM8941_V2P0_REV2) &&
		(revid_data->rev2 == PM8941_V2P0_REV2) &&
		(revid_data->rev3 == PM8941_V2P0_REV3) &&
		(revid_data->rev3 == PM8941_V2P0_REV3) &&
		(revid_data->rev4 == PM8941_V2P0_REV4) &&
		(revid_data->rev4 == PM8941_V2P0_REV4) &&
		(revid_data->pmic_type == PM8941_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8941_SUBTYPE))
		(revid_data->pmic_subtype == PM8941_V2P0_SUBTYPE))
			return QPNP_REV_ID_8941_2_0;
			return QPNP_REV_ID_8941_2_0;
	else if ((revid_data->rev1 == PM8226_V2P2_REV1) &&
	else if ((revid_data->rev1 == PM8226_V2P2_REV1) &&
		(revid_data->rev2 == PM8226_V2P2_REV2) &&
		(revid_data->rev2 == PM8226_V2P2_REV2) &&
		(revid_data->rev3 == PM8226_V2P2_REV3) &&
		(revid_data->rev3 == PM8226_V2P2_REV3) &&
		(revid_data->rev4 == PM8226_V2P2_REV4) &&
		(revid_data->rev4 == PM8226_V2P2_REV4) &&
		(revid_data->pmic_type == PM8226_V2P2_TYPE) &&
		(revid_data->pmic_subtype == PM8226_SUBTYPE))
		(revid_data->pmic_subtype == PM8226_V2P2_SUBTYPE))
			return QPNP_REV_ID_8026_2_2;
			return QPNP_REV_ID_8026_2_2;
	else if ((revid_data->rev1 == PM8226_V2P1_REV1) &&
	else if ((revid_data->rev1 == PM8226_V2P1_REV1) &&
		(revid_data->rev2 == PM8226_V2P1_REV2) &&
		(revid_data->rev2 == PM8226_V2P1_REV2) &&
		(revid_data->rev3 == PM8226_V2P1_REV3) &&
		(revid_data->rev3 == PM8226_V2P1_REV3) &&
		(revid_data->rev4 == PM8226_V2P1_REV4) &&
		(revid_data->rev4 == PM8226_V2P1_REV4) &&
		(revid_data->pmic_type == PM8226_V2P1_TYPE) &&
		(revid_data->pmic_subtype == PM8226_SUBTYPE))
		(revid_data->pmic_subtype == PM8226_V2P1_SUBTYPE))
			return QPNP_REV_ID_8026_2_1;
			return QPNP_REV_ID_8026_2_1;
	else if ((revid_data->rev1 == PM8226_V2P0_REV1) &&
	else if ((revid_data->rev1 == PM8226_V2P0_REV1) &&
		(revid_data->rev2 == PM8226_V2P0_REV2) &&
		(revid_data->rev2 == PM8226_V2P0_REV2) &&
		(revid_data->rev3 == PM8226_V2P0_REV3) &&
		(revid_data->rev3 == PM8226_V2P0_REV3) &&
		(revid_data->rev4 == PM8226_V2P0_REV4) &&
		(revid_data->rev4 == PM8226_V2P0_REV4) &&
		(revid_data->pmic_type == PM8226_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8226_SUBTYPE))
		(revid_data->pmic_subtype == PM8226_V2P0_SUBTYPE))
			return QPNP_REV_ID_8026_2_0;
			return QPNP_REV_ID_8026_2_0;
	else if ((revid_data->rev1 == PM8226_V1P0_REV1) &&
	else if ((revid_data->rev1 == PM8226_V1P0_REV1) &&
		(revid_data->rev2 == PM8226_V1P0_REV2) &&
		(revid_data->rev2 == PM8226_V1P0_REV2) &&
		(revid_data->rev3 == PM8226_V1P0_REV3) &&
		(revid_data->rev3 == PM8226_V1P0_REV3) &&
		(revid_data->rev4 == PM8226_V1P0_REV4) &&
		(revid_data->rev4 == PM8226_V1P0_REV4) &&
		(revid_data->pmic_type == PM8226_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8226_SUBTYPE))
		(revid_data->pmic_subtype == PM8226_V1P0_SUBTYPE))
			return QPNP_REV_ID_8026_1_0;
			return QPNP_REV_ID_8026_1_0;
	else if ((revid_data->rev1 == PM8110_V1P0_REV1) &&
	else if ((revid_data->rev1 == PM8110_V1P0_REV1) &&
		(revid_data->rev2 == PM8110_V1P0_REV2) &&
		(revid_data->rev2 == PM8110_V1P0_REV2) &&
		(revid_data->rev3 == PM8110_V1P0_REV3) &&
		(revid_data->rev3 == PM8110_V1P0_REV3) &&
		(revid_data->rev4 == PM8110_V1P0_REV4) &&
		(revid_data->rev4 == PM8110_V1P0_REV4) &&
		(revid_data->pmic_type == PM8110_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8110_SUBTYPE))
		(revid_data->pmic_subtype == PM8110_V1P0_SUBTYPE))
			return QPNP_REV_ID_8110_1_0;
			return QPNP_REV_ID_8110_1_0;
	else if ((revid_data->rev1 == PM8110_V2P0_REV1) &&
	else if ((revid_data->rev1 == PM8110_V2P0_REV1) &&
		(revid_data->rev2 == PM8110_V2P0_REV2) &&
		(revid_data->rev2 == PM8110_V2P0_REV2) &&
		(revid_data->rev3 == PM8110_V2P0_REV3) &&
		(revid_data->rev3 == PM8110_V2P0_REV3) &&
		(revid_data->rev4 == PM8110_V2P0_REV4) &&
		(revid_data->rev4 == PM8110_V2P0_REV4) &&
		(revid_data->pmic_type == PM8110_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8110_SUBTYPE))
		(revid_data->pmic_subtype == PM8110_V2P0_SUBTYPE))
			return QPNP_REV_ID_8110_2_0;
			return QPNP_REV_ID_8110_2_0;
	else if ((revid_data->rev1 == PM8916_V1P0_REV1) &&
	else if ((revid_data->rev1 == PM8916_V1P0_REV1) &&
		(revid_data->rev2 == PM8916_V1P0_REV2) &&
		(revid_data->rev2 == PM8916_V1P0_REV2) &&
		(revid_data->rev3 == PM8916_V1P0_REV3) &&
		(revid_data->rev3 == PM8916_V1P0_REV3) &&
		(revid_data->rev4 == PM8916_V1P0_REV4) &&
		(revid_data->rev4 == PM8916_V1P0_REV4) &&
		(revid_data->pmic_type == PM8916_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8916_SUBTYPE))
		(revid_data->pmic_subtype == PM8916_V1P0_SUBTYPE))
			return QPNP_REV_ID_8916_1_0;
			return QPNP_REV_ID_8916_1_0;
	else if ((revid_data->rev1 == PM8916_V1P1_REV1) &&
	else if ((revid_data->rev1 == PM8916_V1P1_REV1) &&
		(revid_data->rev2 == PM8916_V1P1_REV2) &&
		(revid_data->rev2 == PM8916_V1P1_REV2) &&
		(revid_data->rev3 == PM8916_V1P1_REV3) &&
		(revid_data->rev3 == PM8916_V1P1_REV3) &&
		(revid_data->rev4 == PM8916_V1P1_REV4) &&
		(revid_data->rev4 == PM8916_V1P1_REV4) &&
		(revid_data->pmic_type == PM8916_V1P1_TYPE) &&
		(revid_data->pmic_subtype == PM8916_SUBTYPE))
		(revid_data->pmic_subtype == PM8916_V1P1_SUBTYPE))
			return QPNP_REV_ID_8916_1_1;
			return QPNP_REV_ID_8916_1_1;
	else if ((revid_data->rev1 == PM8916_V2P0_REV1) &&
	else if ((revid_data->rev1 == PM8916_V2P0_REV1) &&
		(revid_data->rev2 == PM8916_V2P0_REV2) &&
		(revid_data->rev2 == PM8916_V2P0_REV2) &&
		(revid_data->rev3 == PM8916_V2P0_REV3) &&
		(revid_data->rev3 == PM8916_V2P0_REV3) &&
		(revid_data->rev4 == PM8916_V2P0_REV4) &&
		(revid_data->rev4 == PM8916_V2P0_REV4) &&
		(revid_data->pmic_type == PM8916_V2P0_TYPE) &&
		(revid_data->pmic_subtype == PM8916_SUBTYPE))
		(revid_data->pmic_subtype == PM8916_V2P0_SUBTYPE))
			return QPNP_REV_ID_8916_2_0;
			return QPNP_REV_ID_8916_2_0;
	else if ((revid_data->rev1 == PM8909_V1P0_REV1) &&
	else if ((revid_data->rev1 == PM8909_V1P0_REV1) &&
		(revid_data->rev2 == PM8909_V1P0_REV2) &&
		(revid_data->rev2 == PM8909_V1P0_REV2) &&
		(revid_data->rev3 == PM8909_V1P0_REV3) &&
		(revid_data->rev3 == PM8909_V1P0_REV3) &&
		(revid_data->rev4 == PM8909_V1P0_REV4) &&
		(revid_data->rev4 == PM8909_V1P0_REV4) &&
		(revid_data->pmic_type == PM8909_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8909_SUBTYPE))
		(revid_data->pmic_subtype == PM8909_V1P0_SUBTYPE))
			return QPNP_REV_ID_8909_1_0;
			return QPNP_REV_ID_8909_1_0;
	else if ((revid_data->rev1 == PM8909_V1P1_REV1) &&
	else if ((revid_data->rev1 == PM8909_V1P1_REV1) &&
		(revid_data->rev2 == PM8909_V1P1_REV2) &&
		(revid_data->rev2 == PM8909_V1P1_REV2) &&
		(revid_data->rev3 == PM8909_V1P1_REV3) &&
		(revid_data->rev3 == PM8909_V1P1_REV3) &&
		(revid_data->rev4 == PM8909_V1P1_REV4) &&
		(revid_data->rev4 == PM8909_V1P1_REV4) &&
		(revid_data->pmic_type == PM8909_V1P1_TYPE) &&
		(revid_data->pmic_subtype == PM8909_SUBTYPE))
		(revid_data->pmic_subtype == PM8909_V1P1_SUBTYPE))
			return QPNP_REV_ID_8909_1_1;
			return QPNP_REV_ID_8909_1_1;
	else if ((revid_data->rev4 == PM8950_V1P0_REV4) &&
	else if ((revid_data->rev4 == PM8950_V1P0_REV4) &&
		(revid_data->pmic_type == PM8950_V1P0_TYPE) &&
		(revid_data->pmic_subtype == PM8950_SUBTYPE))
		(revid_data->pmic_subtype == PM8950_V1P0_SUBTYPE))
			return QPNP_REV_ID_PM8950_1_0;
			return QPNP_REV_ID_PM8950_1_0;
	else
	else
		return -EINVAL;
		return -EINVAL;
+0 −1
Original line number Original line Diff line number Diff line
@@ -116,7 +116,6 @@
#define	FLASH_LED_MODULE_CTRL_DEFAULT				0x60
#define	FLASH_LED_MODULE_CTRL_DEFAULT				0x60
#define	FLASH_LED_CURRENT_READING_DELAY_MIN			5000
#define	FLASH_LED_CURRENT_READING_DELAY_MIN			5000
#define	FLASH_LED_CURRENT_READING_DELAY_MAX			5001
#define	FLASH_LED_CURRENT_READING_DELAY_MAX			5001
#define PMI8996_SUBTYPE						19
#define	FLASH_LED_OPEN_FAULT_DETECTED				0xC
#define	FLASH_LED_OPEN_FAULT_DETECTED				0xC


#define FLASH_UNLOCK_SECURE					0xA5
#define FLASH_UNLOCK_SECURE					0xA5
+26 −23
Original line number Original line Diff line number Diff line
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * it under the terms of the GNU General Public License version 2 and
@@ -28,28 +28,31 @@
#define QPNP_REVID_DEV_NAME "qcom,qpnp-revid"
#define QPNP_REVID_DEV_NAME "qcom,qpnp-revid"


static const char *const pmic_names[] = {
static const char *const pmic_names[] = {
		"Unknown PMIC",
	[0] =	"Unknown PMIC",
		"PM8941",
	[PM8941_SUBTYPE] = "PM8941",
		"PM8841",
	[PM8841_SUBTYPE] = "PM8841",
		"PM8019",
	[PM8019_SUBTYPE] = "PM8019",
		"PM8226",
	[PM8226_SUBTYPE] = "PM8226",
		"PM8110",
	[PM8110_SUBTYPE] = "PM8110",
		"PMA8084",
	[PMA8084_SUBTYPE] = "PMA8084",
		"PMI8962",
	[PMI8962_SUBTYPE] = "PMI8962",
		"PMD9635",
	[PMD9635_SUBTYPE] = "PMD9635",
		"PM8994",
	[PM8994_SUBTYPE] = "PM8994",
		"PMI8994",
	[PMI8994_SUBTYPE] = "PMI8994",
		"PM8916",
	[PM8916_SUBTYPE] = "PM8916",
		"PM8004",
	[PM8004_SUBTYPE] = "PM8004",
		"PM8909",
	[PM8909_SUBTYPE] = "PM8909",
		"PM2433",
	[PM2433_SUBTYPE] = "PM2433",
		"PMD9655",
	[PMD9655_SUBTYPE] = "PMD9655",
		"PM8950",
	[PM8950_SUBTYPE] = "PM8950",
		"PMI8950",
	[PMI8950_SUBTYPE] = "PMI8950",
		"PMK8001",
	[PMK8001_SUBTYPE] = "PMK8001",
		"PMI8996",
	[PMI8996_SUBTYPE] = "PMI8996",
	[25] =	"PM8937",
	[PMCOBALT_SUBTYPE] = "PMCOBALT",
	[55] =	"PMI8937",
	[PMICOBALT_SUBTYPE] = "PMICOBALT",
	[PM8005_SUBTYPE] = "PM8005",
	[PM8937_SUBTYPE] = "PM8937",
	[PMI8937_SUBTYPE] = "PMI8937",
};
};


struct revid_chip {
struct revid_chip {
+2 −2
Original line number Original line Diff line number Diff line
/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * it under the terms of the GNU General Public License version 2 and
@@ -3793,7 +3793,7 @@ static int qpnp_vm_bms_probe(struct spmi_device *spmi)
		pr_err("revid error rc = %ld\n", PTR_ERR(chip->revid_data));
		pr_err("revid error rc = %ld\n", PTR_ERR(chip->revid_data));
		return -EINVAL;
		return -EINVAL;
	}
	}
	if ((chip->revid_data->pmic_subtype == PM8916_V2P0_SUBTYPE) &&
	if ((chip->revid_data->pmic_subtype == PM8916_SUBTYPE) &&
				chip->revid_data->rev4 == PM8916_V2P0_REV4)
				chip->revid_data->rev4 == PM8916_V2P0_REV4)
		chip->workaround_flag |= WRKARND_PON_OCV_COMP;
		chip->workaround_flag |= WRKARND_PON_OCV_COMP;


+101 −69
Original line number Original line Diff line number Diff line
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * it under the terms of the GNU General Public License version 2 and
@@ -13,146 +13,178 @@
#ifndef __QPNP_REVID
#ifndef __QPNP_REVID
#define __QPNP_REVID
#define __QPNP_REVID


#define PM8226_V2P2_REV1	0x00
/* Common TYPE for all PMICs */
#define PM8226_V2P2_REV2	0x00
#define PMIC_TYPE		0x51
#define PM8226_V2P2_REV3	0x02
#define PM8226_V2P2_REV4	0x02
#define PM8226_V2P2_TYPE	0x51
#define PM8226_V2P2_SUBTYPE	0x04


#define PM8226_V2P1_REV1	0x00
/* PM8994 */
#define PM8226_V2P1_REV2	0x00
#define PM8941_SUBTYPE		0x01
#define PM8226_V2P1_REV3	0x01
#define PM8226_V2P1_REV4	0x02
#define PM8226_V2P1_TYPE	0x51
#define PM8226_V2P1_SUBTYPE	0x04

#define PM8226_V2P0_REV1	0x00
#define PM8226_V2P0_REV2	0x00
#define PM8226_V2P0_REV3	0x00
#define PM8226_V2P0_REV4	0x02
#define PM8226_V2P0_TYPE	0x51
#define PM8226_V2P0_SUBTYPE	0x04

#define PM8226_V1P0_REV1	0x00
#define PM8226_V1P0_REV2	0x00
#define PM8226_V1P0_REV3	0x00
#define PM8226_V1P0_REV4	0x00
#define PM8226_V1P0_TYPE	0x51
#define PM8226_V1P0_SUBTYPE	0x04


#define PM8941_V1P0_REV1	0x00
#define PM8941_V1P0_REV1	0x00
#define PM8941_V1P0_REV2	0x00
#define PM8941_V1P0_REV2	0x00
#define PM8941_V1P0_REV3	0x00
#define PM8941_V1P0_REV3	0x00
#define PM8941_V1P0_REV4	0x01
#define PM8941_V1P0_REV4	0x01
#define PM8941_V1P0_TYPE	0x51
#define PM8941_V1P0_SUBTYPE	0x01


#define PM8941_V2P0_REV1	0x00
#define PM8941_V2P0_REV1	0x00
#define PM8941_V2P0_REV2	0x00
#define PM8941_V2P0_REV2	0x00
#define PM8941_V2P0_REV3	0x00
#define PM8941_V2P0_REV3	0x00
#define PM8941_V2P0_REV4	0x01
#define PM8941_V2P0_REV4	0x01
#define PM8941_V2P0_TYPE	0x51
#define PM8941_V2P0_SUBTYPE	0x01


#define PM8941_V3P0_REV1	0x00
#define PM8941_V3P0_REV1	0x00
#define PM8941_V3P0_REV2	0x00
#define PM8941_V3P0_REV2	0x00
#define PM8941_V3P0_REV3	0x00
#define PM8941_V3P0_REV3	0x00
#define PM8941_V3P0_REV4	0x03
#define PM8941_V3P0_REV4	0x03
#define PM8941_V3P0_TYPE	0x51
#define PM8941_V3P0_SUBTYPE	0x01


#define PM8941_V3P1_REV1	0x00
#define PM8941_V3P1_REV1	0x00
#define PM8941_V3P1_REV2	0x00
#define PM8941_V3P1_REV2	0x00
#define PM8941_V3P1_REV3	0x01
#define PM8941_V3P1_REV3	0x01
#define PM8941_V3P1_REV4	0x03
#define PM8941_V3P1_REV4	0x03
#define PM8941_V3P1_TYPE	0x51

#define PM8941_V3P1_SUBTYPE	0x01
/* PM8841 */
#define PM8841_SUBTYPE		0x02

/* PM8019 */
#define PM8019_SUBTYPE		0x03

/* PM8226 */
#define PM8226_SUBTYPE		0x04

#define PM8226_V2P2_REV1	0x00
#define PM8226_V2P2_REV2	0x00
#define PM8226_V2P2_REV3	0x02
#define PM8226_V2P2_REV4	0x02

#define PM8226_V2P1_REV1	0x00
#define PM8226_V2P1_REV2	0x00
#define PM8226_V2P1_REV3	0x01
#define PM8226_V2P1_REV4	0x02

#define PM8226_V2P0_REV1	0x00
#define PM8226_V2P0_REV2	0x00
#define PM8226_V2P0_REV3	0x00
#define PM8226_V2P0_REV4	0x02

#define PM8226_V1P0_REV1	0x00
#define PM8226_V1P0_REV2	0x00
#define PM8226_V1P0_REV3	0x00
#define PM8226_V1P0_REV4	0x00

/* PM8110 */
#define PM8110_SUBTYPE		0x05


#define PM8110_V1P0_REV1	0x00
#define PM8110_V1P0_REV1	0x00
#define PM8110_V1P0_REV2	0x00
#define PM8110_V1P0_REV2	0x00
#define PM8110_V1P0_REV3	0x00
#define PM8110_V1P0_REV3	0x00
#define PM8110_V1P0_REV4	0x01
#define PM8110_V1P0_REV4	0x01
#define PM8110_V1P0_TYPE	0x51
#define PM8110_V1P0_SUBTYPE	0x05


#define PM8110_V1P1_REV1	0x00
#define PM8110_V1P1_REV1	0x00
#define PM8110_V1P1_REV2	0x01
#define PM8110_V1P1_REV2	0x01
#define PM8110_V1P1_REV3	0x00
#define PM8110_V1P1_REV3	0x00
#define PM8110_V1P1_REV4	0x01
#define PM8110_V1P1_REV4	0x01
#define PM8110_V1P1_TYPE	0x51
#define PM8110_V1P1_SUBTYPE	0x05


#define PM8110_V1P3_REV1	0x00
#define PM8110_V1P3_REV1	0x00
#define PM8110_V1P3_REV2	0x03
#define PM8110_V1P3_REV2	0x03
#define PM8110_V1P3_REV3	0x00
#define PM8110_V1P3_REV3	0x00
#define PM8110_V1P3_REV4	0x01
#define PM8110_V1P3_REV4	0x01
#define PM8110_V1P3_TYPE	0x51
#define PM8110_V1P3_SUBTYPE	0x05


#define PM8110_V2P0_REV1	0x00
#define PM8110_V2P0_REV1	0x00
#define PM8110_V2P0_REV2	0x00
#define PM8110_V2P0_REV2	0x00
#define PM8110_V2P0_REV3	0x00
#define PM8110_V2P0_REV3	0x00
#define PM8110_V2P0_REV4	0x02
#define PM8110_V2P0_REV4	0x02
#define PM8110_V2P0_TYPE	0x51

#define PM8110_V2P0_SUBTYPE	0x05
/* PMA8084 */
#define PMA8084_SUBTYPE		0x06

/* PMI8962 */
#define PMI8962_SUBTYPE		0x07

/* PMD9635 */
#define PMD9635_SUBTYPE		0x08
/* PM8994 */
#define PM8994_SUBTYPE		0x09

/* PMI8994 */
#define PMI8994_TYPE		0x51
#define PMI8994_SUBTYPE		0x0A

#define PMI8994_V1P0_REV1	0x00
#define PMI8994_V1P0_REV2	0x00
#define PMI8994_V1P0_REV3	0x00
#define PMI8994_V1P0_REV4	0x01

#define PMI8994_V2P0_REV1	0x00
#define PMI8994_V2P0_REV2	0x00
#define PMI8994_V2P0_REV3	0x00
#define PMI8994_V2P0_REV4	0x02

/* PM8916 */
#define PM8916_SUBTYPE		0x0B


#define PM8916_V1P0_REV1	0x00
#define PM8916_V1P0_REV1	0x00
#define PM8916_V1P0_REV2	0x00
#define PM8916_V1P0_REV2	0x00
#define PM8916_V1P0_REV3	0x00
#define PM8916_V1P0_REV3	0x00
#define PM8916_V1P0_REV4	0x01
#define PM8916_V1P0_REV4	0x01
#define PM8916_V1P0_TYPE	0x51
#define PM8916_V1P0_SUBTYPE	0x0B


#define PM8916_V1P1_REV1	0x00
#define PM8916_V1P1_REV1	0x00
#define PM8916_V1P1_REV2	0x00
#define PM8916_V1P1_REV2	0x00
#define PM8916_V1P1_REV3	0x01
#define PM8916_V1P1_REV3	0x01
#define PM8916_V1P1_REV4	0x01
#define PM8916_V1P1_REV4	0x01
#define PM8916_V1P1_TYPE	0x51
#define PM8916_V1P1_SUBTYPE	0x0B


#define PM8916_V2P0_REV1	0x00
#define PM8916_V2P0_REV1	0x00
#define PM8916_V2P0_REV2	0x00
#define PM8916_V2P0_REV2	0x00
#define PM8916_V2P0_REV3	0x00
#define PM8916_V2P0_REV3	0x00
#define PM8916_V2P0_REV4	0x02
#define PM8916_V2P0_REV4	0x02
#define PM8916_V2P0_TYPE	0x51

#define PM8916_V2P0_SUBTYPE	0x0B
/* PM8004 */
#define PM8004_SUBTYPE		0x0C

/* PM8909 */
#define PM8909_SUBTYPE		0x0D


#define PM8909_V1P0_REV1	0x00
#define PM8909_V1P0_REV1	0x00
#define PM8909_V1P0_REV2	0x00
#define PM8909_V1P0_REV2	0x00
#define PM8909_V1P0_REV3	0x00
#define PM8909_V1P0_REV3	0x00
#define PM8909_V1P0_REV4	0x01
#define PM8909_V1P0_REV4	0x01
#define PM8909_V1P0_TYPE	0x51
#define PM8909_V1P0_SUBTYPE	0x0D


#define PM8909_V1P1_REV1	0x00
#define PM8909_V1P1_REV1	0x00
#define PM8909_V1P1_REV2	0x00
#define PM8909_V1P1_REV2	0x00
#define PM8909_V1P1_REV3	0x01
#define PM8909_V1P1_REV3	0x01
#define PM8909_V1P1_REV4	0x01
#define PM8909_V1P1_REV4	0x01
#define PM8909_V1P1_TYPE	0x51
#define PM8909_V1P1_SUBTYPE	0x0D


#define PMI8994_V1P0_REV1	0x00
/* PM2433 */
#define PMI8994_V1P0_REV2	0x00
#define PM2433_SUBTYPE		0x0E
#define PMI8994_V1P0_REV3	0x00
#define PMI8994_V1P0_REV4	0x01
#define PMI8994_V1P0_TYPE	0x51
#define PMI8994_V1P0_SUBTYPE	0x0A


#define PMI8994_V2P0_REV1	0x00
/* PMD9655 */
#define PMI8994_V2P0_REV2	0x00
#define PMD9655_SUBTYPE		0x0F
#define PMI8994_V2P0_REV3	0x00
#define PMI8994_V2P0_REV4	0x02
#define PMI8994_V2P0_TYPE	0x51
#define PMI8994_V2P0_SUBTYPE	0x0A


/* PM8950 */
#define PM8950_SUBTYPE		0x10
#define PM8950_V1P0_REV4	0x01
#define PM8950_V1P0_REV4	0x01
#define PM8950_V1P0_TYPE	0x51
#define PM8950_V1P0_SUBTYPE	0x10


#define PM8950_V2P0_REV4	0x02
#define PM8950_V2P0_REV4	0x02
#define PM8950_V2P0_TYPE	0x51

#define PM8950_V2P0_SUBTYPE	0x10
/* PMI8950 */
#define PMI8950_SUBTYPE		0x11

/* PMK8001 */
#define PMK8001_SUBTYPE		0x12

/* PMI8996 */
#define PMI8996_SUBTYPE		0x13

/* PMCOBALT */
#define PMCOBALT_SUBTYPE	0x14

/* PMICOBALT */
#define PMICOBALT_SUBTYPE	0x15

/* PM8005 */
#define PM8005_SUBTYPE		0x18

/* PM8937 */
#define PM8937_SUBTYPE		0x19

/* PMI8937 */
#define PMI8937_SUBTYPE		0x37


struct pmic_revid_data {
struct pmic_revid_data {
	u8		rev1;
	u8		rev1;