summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/rambi/board.h2
-rw-r--r--common/usb_port_power_smart.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/board/rambi/board.h b/board/rambi/board.h
index 2cc95f1fb1..4531bdfc8d 100644
--- a/board/rambi/board.h
+++ b/board/rambi/board.h
@@ -26,6 +26,7 @@
#define CONFIG_TEMP_SENSOR
#define CONFIG_TEMP_SENSOR_G781
#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_PP3300_DX_EN
+#define CONFIG_USB_PORT_POWER_SMART
#define CONFIG_WIRELESS
/* TODO(rspangler): port these to Rambi, or remove if not needed */
@@ -38,7 +39,6 @@
#define CONFIG_CHARGER_INPUT_CURRENT 4032 /* mA, about half max */
#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input sensor resistor, mOhm */
-#define CONFIG_USB_PORT_POWER_DUMB
#endif
#ifndef __ASSEMBLER__
diff --git a/common/usb_port_power_smart.c b/common/usb_port_power_smart.c
index dfe7b32d5f..def565239a 100644
--- a/common/usb_port_power_smart.c
+++ b/common/usb_port_power_smart.c
@@ -34,6 +34,14 @@ static uint8_t charge_mode[USB_CHARGE_PORT_COUNT];
static void usb_charge_set_control_mode(int port_id, int mode)
{
+#ifdef BOARD_rambi
+ /*
+ * Rambi has only a single shared control signal, so the last mode set
+ * to either port wins. Also, only CTL1 can be set; the other pins
+ * are hard-wired.
+ */
+ gpio_set_level(GPIO_USB_CTL1, mode & 0x4);
+#else
if (port_id == 0) {
gpio_set_level(GPIO_USB1_CTL1, mode & 0x4);
gpio_set_level(GPIO_USB1_CTL2, mode & 0x2);
@@ -43,6 +51,7 @@ static void usb_charge_set_control_mode(int port_id, int mode)
gpio_set_level(GPIO_USB2_CTL2, mode & 0x2);
gpio_set_level(GPIO_USB2_CTL3, mode & 0x1);
}
+#endif
}
static void usb_charge_set_enabled(int port_id, int en)
@@ -55,10 +64,15 @@ static void usb_charge_set_enabled(int port_id, int en)
static void usb_charge_set_ilim(int port_id, int sel)
{
+#ifdef BOARD_rambi
+ /* Rambi has a shared ILIM_SEL signal too */
+ gpio_set_level(GPIO_USB_ILIM_SEL, sel);
+#else
if (port_id == 0)
gpio_set_level(GPIO_USB1_ILIM_SEL, sel);
else
gpio_set_level(GPIO_USB2_ILIM_SEL, sel);
+#endif
}
static void usb_charge_all_ports_on(void)