From 15a7fbaed3af228d15c050ad43c09a87f29ea651 Mon Sep 17 00:00:00 2001 From: Ko_Ko Date: Tue, 1 Dec 2020 14:07:31 +0800 Subject: RAA489000: VBUS current target setting The value for VBUS_CURRENT_TARGET (0x92) is determined by current sense which might be different in each board. Use ceiling value to avoid insufficient current output. BUG=b:169788521 BRANCH=dedede TEST=build and flash on madoo, and make sure we get the desired value Signed-off-by: Ko_Ko Change-Id: If5d976e1f1054dd22ff4b915b399434bc846bb76 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2567082 Reviewed-by: Aseda Aboagye Commit-Queue: Ko Ko Tested-by: Ko Ko --- driver/tcpm/raa489000.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/driver/tcpm/raa489000.c b/driver/tcpm/raa489000.c index ceff5c20b0..3caa35f291 100644 --- a/driver/tcpm/raa489000.c +++ b/driver/tcpm/raa489000.c @@ -14,6 +14,10 @@ #include "tcpci.h" #include "tcpm.h" +#define DEFAULT_R_AC 20 +#define R_AC CONFIG_CHARGER_SENSE_RESISTOR_AC +#define AC_CURRENT_TO_REG(CUR) ((CUR) * R_AC / DEFAULT_R_AC) + #define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) #define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) @@ -177,8 +181,13 @@ int raa489000_init(int port) board_set_active_charge_port(port); } + /* Check value according to current sense by project, set ceiling + * value when it has remainder to avoid insufficient current. + */ + regval = AC_CURRENT_TO_REG(RAA489000_VBUS_CURRENT_TARGET_VALUE) + + RAA489000_VBUS_CURRENT_TARGET_VALUE % (DEFAULT_R_AC/R_AC); rv = tcpc_write16(port, RAA489000_VBUS_CURRENT_TARGET, - RAA489000_VBUS_CURRENT_TARGET_VALUE); + regval); if (rv) CPRINTS("c%d: failed to set target current", port); -- cgit v1.2.1