diff options
Diffstat (limited to 'common/usb_pd_flags.c')
-rw-r--r-- | common/usb_pd_flags.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/common/usb_pd_flags.c b/common/usb_pd_flags.c new file mode 100644 index 0000000000..9328c03346 --- /dev/null +++ b/common/usb_pd_flags.c @@ -0,0 +1,65 @@ +/* Copyright 2021 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* + * Contains USB PD accessors definition + */ + +#include "common.h" +#include "config.h" +#include "usb_pd_flags.h" + +static union usb_pd_runtime_flags usb_pd_flags; +BUILD_ASSERT(sizeof(usb_pd_flags) == sizeof(uint32_t)); + +enum usb_pd_vbus_detect get_usb_pd_vbus_detect(void) +{ + if (IS_ENABLED(CONFIG_USB_PD_RUNTIME_FLAGS)) + return (enum usb_pd_vbus_detect) usb_pd_flags.vbus_detect; + else if (IS_ENABLED(CONFIG_USB_PD_VBUS_DETECT_TCPC)) + return (enum usb_pd_vbus_detect)USB_PD_VBUS_DETECT_TCPC; + else if (IS_ENABLED(CONFIG_USD_PD_VBUS_DETECT_GPIO)) + return (enum usb_pd_vbus_detect)USB_PD_VBUS_DETECT_GPIO; + else if (IS_ENABLED(CONFIG_USB_PD_VBUS_DETECT_PPC)) + return (enum usb_pd_vbus_detect)USB_PD_VBUS_DETECT_PPC; + else if (IS_ENABLED(CONFIG_USB_PD_VBUS_DETECT_CHARGER)) + return (enum usb_pd_vbus_detect)USB_PD_VBUS_DETECT_CHARGER; + else + return (enum usb_pd_vbus_detect)USB_PD_VBUS_DETECT_NONE; +} + +enum usb_pd_discharge get_usb_pd_discharge(void) +{ + if (IS_ENABLED(CONFIG_USB_PD_RUNTIME_FLAGS)) + return (enum usb_pd_discharge)usb_pd_flags.discharge; + else if (IS_ENABLED(CONFIG_USB_PD_DISCHARGE_TCPC)) + return (enum usb_pd_discharge)USB_PD_DISCHARGE_TCPC; + else if (IS_ENABLED(CONFIG_USD_PD_DISCHARGE_GPIO)) + return (enum usb_pd_discharge)USB_PD_DISCHARGE_GPIO; + else if (IS_ENABLED(CONFIG_USB_PD_DISCHARGE_PPC)) + return (enum usb_pd_discharge)USB_PD_DISCHARGE_PPC; + else + return (enum usb_pd_discharge)USB_PD_DISCHARGE_NONE; +} + +enum usb_pd_charger_otg get_usb_pd_charger_otg(void) +{ + return usb_pd_flags.charger_otg; +} + +void set_usb_pd_vbus_detect(enum usb_pd_vbus_detect vbus_detect) +{ + usb_pd_flags.vbus_detect = vbus_detect; +} + +void set_usb_pd_discharge(enum usb_pd_discharge discharge) +{ + usb_pd_flags.discharge = discharge; +} + +void set_usb_pd_charger_otg(enum usb_pd_charger_otg charger_otg) +{ + usb_pd_flags.charger_otg = charger_otg; +} |