summaryrefslogtreecommitdiff
path: root/zephyr/program/corsola/src/usb_pd_policy.c
diff options
context:
space:
mode:
authorYH Lin <yueherngl@google.com>2023-05-05 12:48:46 +0000
committerYH Lin <yueherngl@google.com>2023-05-05 12:48:46 +0000
commite79a9dab1721c3d7da1475f3f802c4ea871a48ec (patch)
treee59a5a0517bbd7edf879d70cca594499a4c22ab4 /zephyr/program/corsola/src/usb_pd_policy.c
parent00f7707de7c0f8b4345fa5725a7c62aa1d2bd5af (diff)
parent70e2504d1886c585bc74c6f624887719e3f0a351 (diff)
downloadchrome-ec-e79a9dab1721c3d7da1475f3f802c4ea871a48ec.tar.gz
Merge remote-tracking branch cros/main into firmware-brya-14505.B-main
Generated by: util/update_release_branch.py --baseboard brya --relevant_paths_file baseboard/brya/relevant-paths.txt firmware-brya-14505.B-main Relevant changes: git log --oneline 00f7707de7..70e2504d18 -- baseboard/brya board/agah board/anahera board/banshee board/brya board/crota board/felwinter board/gimble board/hades board/kano board/marasov board/mithrax board/omnigul board/osiris board/primus board/redrix board/taeko board/taniks board/vell board/volmar driver/bc12/pi3usb9201_public.* driver/charger/bq25710.* driver/ppc/nx20p348x.* driver/ppc/syv682x_public.* driver/retimer/bb_retimer_public.* driver/tcpm/nct38xx.* driver/tcpm/ps8xxx_public.* driver/tcpm/tcpci.* include/power/alderlake* include/intel_x86.h power/alderlake* power/intel_x86.c util/getversion.sh 1ab2843570 Hades: Configure GPIOs (2) b696e7629b Hades: Unblock USB_C1_PPC_SNK_EN on start-up d001bbc638 Hades: Configure USB-C0 and USB-C1 50a53a526b Hades: Configure GPIOs e881c1a04a hades: Support LGC battery 8b093356d4 Hades: Add LED_3_L and LED_4_L 4f3d3d6ae6 Hades: Rename USB-C2 USB-C1 fe35030f7f hades: Change keyboard config 88dfac40f0 Hades: Relocate EC_PROCHOT_IN_L 0db21802fa Hades: Swap GPU_ACOFF and BJ_ADP_PRESENT d1a831463f Hades: Replace ISL9241 with RAA489110 a700192391 Agah/Hades: Make d_notify_policies more readable 53f35199ba Zephyr test: Test NXP PPC interrupts 8c8a42b383 omnigul: Update battery parameter. 67d4a05823 NX20P348X: Correct dead battery exit error handling fafe10a6fe ppc/nx20p348x: Do not set reserved bit d32a389718 Charger: CONFIG gate bypass mode BRANCH=None BUG=b:273722902 b:276468569 b:277981949 b:277158040 b:272815816 BUG=b:272821227 b:277981335 b:277280318 b:272815831 b:269790564 TEST=`emerge-brya chromeos-ec` Force-Relevant-Builds: all Change-Id: I1043c664a3f90dd3b9207da233e5dec078c1e4a1 Signed-off-by: YH Lin <yueherngl@google.com>
Diffstat (limited to 'zephyr/program/corsola/src/usb_pd_policy.c')
-rw-r--r--zephyr/program/corsola/src/usb_pd_policy.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/zephyr/program/corsola/src/usb_pd_policy.c b/zephyr/program/corsola/src/usb_pd_policy.c
index a7fa22fa41..30ded99aba 100644
--- a/zephyr/program/corsola/src/usb_pd_policy.c
+++ b/zephyr/program/corsola/src/usb_pd_policy.c
@@ -6,11 +6,13 @@
#include "baseboard_usbc_config.h"
#include "chipset.h"
#include "console.h"
+#include "driver/tcpm/rt1718s.h"
#include "hooks.h"
#include "timer.h"
#include "typec_control.h"
#include "usb_mux.h"
#include "usb_pd.h"
+#include "usbc_ppc.h"
#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args)
#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args)
@@ -220,3 +222,49 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
/* ack */
return 1;
}
+
+void pd_power_supply_reset(int port)
+{
+ int prev_en;
+
+ prev_en = ppc_is_sourcing_vbus(port);
+
+#if defined(CONFIG_USB_PD_TCPM_RT1718S) && CONFIG_USB_PD_PORT_MAX_COUNT > 1
+ if (port == USBC_PORT_C1) {
+ rt1718s_gpio_set_level(port, GPIO_EN_USB_C1_SOURCE, 0);
+ }
+#endif
+
+ /* Disable VBUS. */
+ ppc_vbus_source_enable(port, 0);
+
+ /* Enable discharge if we were previously sourcing 5V */
+ if (prev_en) {
+ pd_set_vbus_discharge(port, 1);
+ }
+
+ /* Notify host of power info change. */
+ pd_send_host_event(PD_EVENT_POWER_CHANGE);
+}
+
+int pd_set_power_supply_ready(int port)
+{
+ /* Disable charging. */
+ RETURN_ERROR(ppc_vbus_sink_enable(port, 0));
+
+ pd_set_vbus_discharge(port, 0);
+
+#if defined(CONFIG_USB_PD_TCPM_RT1718S) && CONFIG_USB_PD_PORT_MAX_COUNT > 1
+ /* Provide Vbus. */
+ if (port == USBC_PORT_C1) {
+ rt1718s_gpio_set_level(port, GPIO_EN_USB_C1_SOURCE, 1);
+ }
+#endif
+
+ RETURN_ERROR(ppc_vbus_source_enable(port, 1));
+
+ /* Notify host of power info change. */
+ pd_send_host_event(PD_EVENT_POWER_CHANGE);
+
+ return EC_SUCCESS;
+}