mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-05 14:31:31 +00:00
glados: Add support for USB-C muxes
Add support for pericom mux (port 0) and parade mux (port 1). BUG=chrome-os-partner:41696 TEST=Verify set() and get() functions set and return consistent values. Verify that DP and USB are only activated when proper modes are set. BRANCH=None Change-Id: I9d42108688a9070b982ae77f77633654bc6505ed Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/282281 Reviewed-by: Alec Berg <alecaberg@chromium.org>
This commit is contained in:
committed by
ChromeOS Commit Bot
parent
9e73f3e031
commit
362174b49b
@@ -26,6 +26,7 @@
|
||||
#include "temp_sensor.h"
|
||||
#include "timer.h"
|
||||
#include "usb_charge.h"
|
||||
#include "usb_mux.h"
|
||||
#include "usb_pd.h"
|
||||
#include "usb_pd_tcpm.h"
|
||||
#include "util.h"
|
||||
@@ -142,6 +143,17 @@ struct pi3usb9281_config pi3usb9281_chips[] = {
|
||||
BUILD_ASSERT(ARRAY_SIZE(pi3usb9281_chips) ==
|
||||
CONFIG_USB_SWITCH_PI3USB9281_CHIP_COUNT);
|
||||
|
||||
struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = {
|
||||
{
|
||||
.port_addr = 0xa8,
|
||||
.driver = &pi3usb30532_usb_mux_driver,
|
||||
},
|
||||
{
|
||||
.port_addr = 0x20,
|
||||
.driver = &ps8740_usb_mux_driver,
|
||||
}
|
||||
};
|
||||
|
||||
void board_set_usb_switches(int port, enum usb_switch setting)
|
||||
{
|
||||
/* TODO: Set open / close USB switches based on param */
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#define CONFIG_POWER_BUTTON_X86
|
||||
#define CONFIG_POWER_COMMON
|
||||
#define CONFIG_USB_CHARGER
|
||||
#define CONFIG_USB_MUX_PI3USB30532
|
||||
#define CONFIG_USB_MUX_PS8740
|
||||
#define CONFIG_USB_POWER_DELIVERY
|
||||
#define CONFIG_USB_PD_ALT_MODE
|
||||
#define CONFIG_USB_PD_ALT_MODE_DFP
|
||||
@@ -47,6 +49,7 @@
|
||||
#define CONFIG_USB_PD_TCPM_TCPCI
|
||||
#define CONFIG_USB_SWITCH_PI3USB9281
|
||||
#define CONFIG_USB_SWITCH_PI3USB9281_CHIP_COUNT 2
|
||||
#define CONFIG_USBC_SS_MUX
|
||||
#define CONFIG_SCI_GPIO GPIO_PCH_SCI_L
|
||||
|
||||
#define CONFIG_SPI_PORT 1
|
||||
@@ -67,6 +70,7 @@
|
||||
#define I2C_PORT_BATTERY MEC1322_I2C0_0
|
||||
#define I2C_PORT_CHARGER MEC1322_I2C0_0
|
||||
#define I2C_PORT_USB_CHARGER_1 MEC1322_I2C0_1
|
||||
#define I2C_PORT_USB_MUX MEC1322_I2C0_1
|
||||
#define I2C_PORT_PD_MCU MEC1322_I2C1
|
||||
#define I2C_PORT_TCPC MEC1322_I2C1
|
||||
#define I2C_PORT_ALS MEC1322_I2C2
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "task.h"
|
||||
#include "timer.h"
|
||||
#include "util.h"
|
||||
#include "usb_mux.h"
|
||||
#include "usb_pd.h"
|
||||
|
||||
#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args)
|
||||
@@ -228,7 +229,7 @@ int pd_custom_vdm(int port, int cnt, uint32_t *payload,
|
||||
CPRINTF("Current: %dmA\n", payload[1]);
|
||||
break;
|
||||
case VDO_CMD_FLIP:
|
||||
/* board_flip_usb_mux(port); */
|
||||
usb_mux_flip(port);
|
||||
break;
|
||||
#ifdef CONFIG_USB_PD_LOGGING
|
||||
case VDO_CMD_GET_LOG:
|
||||
@@ -247,7 +248,8 @@ static void svdm_safe_dp_mode(int port)
|
||||
{
|
||||
/* make DP interface safe until configure */
|
||||
dp_flags[port] = 0;
|
||||
/* board_set_usb_mux(port, TYPEC_MUX_NONE, pd_get_polarity(port)); */
|
||||
usb_mux_set(port, TYPEC_MUX_NONE,
|
||||
USB_SWITCH_CONNECT, pd_get_polarity(port));
|
||||
}
|
||||
|
||||
static int svdm_enter_dp_mode(int port, uint32_t mode_caps)
|
||||
@@ -280,7 +282,9 @@ static int svdm_dp_status(int port, uint32_t *payload)
|
||||
static int svdm_dp_config(int port, uint32_t *payload)
|
||||
{
|
||||
int opos = pd_alt_mode(port, USB_SID_DISPLAYPORT);
|
||||
/* board_set_usb_mux(port, TYPEC_MUX_DP, pd_get_polarity(port)); */
|
||||
|
||||
usb_mux_set(port, TYPEC_MUX_DP,
|
||||
USB_SWITCH_CONNECT, pd_get_polarity(port));
|
||||
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
|
||||
CMD_DP_CONFIG | VDO_OPOS(opos));
|
||||
payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* pin mode */
|
||||
|
||||
Reference in New Issue
Block a user