summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2016-09-13 23:10:18 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-16 19:56:53 -0700
commit258bc48bacf948e7f95b98bfc847c3cc0d5f515d (patch)
treef0a2318f82b97b27bed0b02277b0bf22c5b6d8a4
parentf2dba9d779b77702fa261f96af08732bd3a861a1 (diff)
downloadchrome-ec-258bc48bacf948e7f95b98bfc847c3cc0d5f515d.tar.gz
BD99955: Support Pull-up port non-standard BC1.2 chargers
Some chargers with valid VBUS advertise as Pull-up ports. Hence, added code to support these kind of chargers as non-standard BC1.2 chargers. BUG=chrome-os-partner:57163 BRANCH=none TEST=Manually tested on reef. Used a Pull-up port non-standard BC1.2 charger and observed it can ramp to its maximum current ratings. Change-Id: I33c4c3a64e9c7176c909a48f6fbc49e04d529541 Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/385239 Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com> Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com> Tested-by: Rachel Nancollas <rachelsn@google.com> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--driver/charger/bd99955.c7
-rw-r--r--driver/charger/bd99955.h32
2 files changed, 23 insertions, 16 deletions
diff --git a/driver/charger/bd99955.c b/driver/charger/bd99955.c
index e084c68fc2..c392997594 100644
--- a/driver/charger/bd99955.c
+++ b/driver/charger/bd99955.c
@@ -198,11 +198,11 @@ static int bd99955_get_bc12_device_type(enum bd99955_charge_port port)
return CHARGE_SUPPLIER_BC12_DCP;
case BD99955_TYPE_SDP:
return CHARGE_SUPPLIER_BC12_SDP;
+ case BD99955_TYPE_PUP_PORT:
case BD99955_TYPE_OTHER:
return CHARGE_SUPPLIER_OTHER;
- case BD99955_TYPE_VBUS_OPEN:
- case BD99955_TYPE_PUP_PORT:
case BD99955_TYPE_OPEN_PORT:
+ case BD99955_TYPE_VBUS_OPEN:
default:
return CHARGE_SUPPLIER_NONE;
}
@@ -419,12 +419,11 @@ int charger_get_option(int *option)
int rv;
int reg;
- rv = ch_raw_read16(BD99955_CMD_CHGOP_SET1, &reg,
+ rv = ch_raw_read16(BD99955_CMD_CHGOP_SET1, option,
BD99955_EXTENDED_COMMAND);
if (rv)
return rv;
- *option = reg;
rv = ch_raw_read16(BD99955_CMD_CHGOP_SET2, &reg,
BD99955_EXTENDED_COMMAND);
if (rv)
diff --git a/driver/charger/bd99955.h b/driver/charger/bd99955.h
index c8d9086d36..3cfb9f5192 100644
--- a/driver/charger/bd99955.h
+++ b/driver/charger/bd99955.h
@@ -177,23 +177,31 @@ enum bd99955_charge_port {
#define BD99955_CMD_UCD_STATUS_CHGPORT0 (1 << 12)
#define BD99955_CMD_UCD_STATUS_PUPDET (1 << 11)
#define BD99955_CMD_UCD_STATUS_CHGDET (1 << 6)
-#define BD99955_TYPE_VBUS_OPEN 0
-#define BD99955_TYPE_SDP BD99955_CMD_UCD_STATUS_CHGPORT0
-#define BD99955_TYPE_CDP (BD99955_CMD_UCD_STATUS_CHGDET | \
- BD99955_CMD_UCD_STATUS_CHGPORT1)
-#define BD99955_TYPE_OTHER (BD99955_CMD_UCD_STATUS_CHGDET | \
+#define BD99955_TYPE_MASK (BD99955_CMD_UCD_STATUS_DCDFAIL | \
BD99955_CMD_UCD_STATUS_CHGPORT1 | \
BD99955_CMD_UCD_STATUS_CHGPORT0 | \
- BD99955_CMD_UCD_STATUS_DCDFAIL)
-#define BD99955_TYPE_DCP (BD99955_CMD_UCD_STATUS_CHGDET | \
+ BD99955_CMD_UCD_STATUS_PUPDET | \
+ BD99955_CMD_UCD_STATUS_CHGDET)
+
+/* BC1.2 chargers */
+#define BD99955_TYPE_CDP (BD99955_CMD_UCD_STATUS_CHGPORT1 | \
+ BD99955_CMD_UCD_STATUS_CHGDET)
+#define BD99955_TYPE_DCP (BD99955_CMD_UCD_STATUS_CHGPORT1 | \
BD99955_CMD_UCD_STATUS_CHGPORT0 | \
- BD99955_CMD_UCD_STATUS_CHGPORT1)
-#define BD99955_TYPE_PUP_PORT (BD99955_CMD_UCD_STATUS_PUPDET | \
- BD99955_CMD_UCD_STATUS_DCDFAIL | \
- BD99955_CMD_UCD_STATUS_CHGPORT0)
+ BD99955_CMD_UCD_STATUS_CHGDET)
+#define BD99955_TYPE_SDP (BD99955_CMD_UCD_STATUS_CHGPORT0)
+/* non-standard BC1.2 chargers */
+#define BD99955_TYPE_OTHER (BD99955_CMD_UCD_STATUS_DCDFAIL | \
+ BD99955_CMD_UCD_STATUS_CHGPORT1 | \
+ BD99955_CMD_UCD_STATUS_CHGPORT0 | \
+ BD99955_CMD_UCD_STATUS_CHGDET)
+#define BD99955_TYPE_PUP_PORT (BD99955_CMD_UCD_STATUS_DCDFAIL | \
+ BD99955_CMD_UCD_STATUS_CHGPORT0 | \
+ BD99955_CMD_UCD_STATUS_PUPDET)
+/* Open ports */
#define BD99955_TYPE_OPEN_PORT (BD99955_CMD_UCD_STATUS_DCDFAIL | \
BD99955_CMD_UCD_STATUS_CHGPORT0)
-#define BD99955_TYPE_MASK 0xB840
+#define BD99955_TYPE_VBUS_OPEN 0
#define BD99955_CMD_VCC_IDD_STATUS 0x2A
#define BD99955_CMD_VCC_UCD_FCTRL_SET 0x2B