|
@@ -39,6 +39,8 @@
|
|
|
|
|
|
|
|
#if BOARD == BOARD_EA4357
|
|
#if BOARD == BOARD_EA4357
|
|
|
|
|
|
|
|
|
|
+#include "common/assertion.h" // TODO there is hal_debugger_ in assertion
|
|
|
|
|
+
|
|
|
#define UART_PORT LPC_USART0
|
|
#define UART_PORT LPC_USART0
|
|
|
|
|
|
|
|
#if 0
|
|
#if 0
|
|
@@ -48,6 +50,59 @@ static const struct {
|
|
|
}leds[CFG_LED_NUMBER] = { {0, 8} };
|
|
}leds[CFG_LED_NUMBER] = { {0, 8} };
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
|
|
+// MIC2555 1YML = 0101111, 0YML = 0101101
|
|
|
|
|
+#define MIC255_ADDR BIN8(0101111)
|
|
|
|
|
+
|
|
|
|
|
+static uint8_t mic255_regs_read(uint8_t regs_addr)
|
|
|
|
|
+{
|
|
|
|
|
+ uint8_t value;
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT( SUCCESS == I2C_MasterTransferData(
|
|
|
|
|
+ LPC_I2C0,
|
|
|
|
|
+ & (I2C_M_SETUP_Type)
|
|
|
|
|
+ {
|
|
|
|
|
+ .sl_addr7bit = MIC255_ADDR,
|
|
|
|
|
+ .retransmissions_max = 3,
|
|
|
|
|
+
|
|
|
|
|
+ .tx_data = ®s_addr,
|
|
|
|
|
+ .tx_length = 1,
|
|
|
|
|
+
|
|
|
|
|
+ .rx_data = &value,
|
|
|
|
|
+ .rx_length = 1
|
|
|
|
|
+ },
|
|
|
|
|
+ I2C_TRANSFER_POLLING), 0xFF);
|
|
|
|
|
+
|
|
|
|
|
+ return value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static bool mic255_regs_write(uint8_t regs_addr, uint8_t data)
|
|
|
|
|
+{
|
|
|
|
|
+ uint8_t xfer_data[2] = { regs_addr, data} ;
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT( SUCCESS == I2C_MasterTransferData(
|
|
|
|
|
+ LPC_I2C0,
|
|
|
|
|
+ & (I2C_M_SETUP_Type)
|
|
|
|
|
+ {
|
|
|
|
|
+ .sl_addr7bit = MIC255_ADDR,
|
|
|
|
|
+ .retransmissions_max = 3,
|
|
|
|
|
+
|
|
|
|
|
+ .tx_data = xfer_data,
|
|
|
|
|
+ .tx_length = 2,
|
|
|
|
|
+ },
|
|
|
|
|
+ I2C_TRANSFER_POLLING), false);
|
|
|
|
|
+
|
|
|
|
|
+ return true;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+static uint16_t mic255_get_vendorid(void)
|
|
|
|
|
+{
|
|
|
|
|
+ uint8_t vendor_low = mic255_regs_read(0);
|
|
|
|
|
+ uint8_t vendor_high = mic255_regs_read(1);
|
|
|
|
|
+
|
|
|
|
|
+ return (vendor_high << 8) | vendor_low;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void board_init(void)
|
|
void board_init(void)
|
|
|
{
|
|
{
|
|
|
SystemInit();
|
|
SystemInit();
|
|
@@ -61,6 +116,13 @@ void board_init(void)
|
|
|
// USB1 Power: EA4357 channel A U20 is enabled by SJ5 connected to pad 1-2, no more action required
|
|
// USB1 Power: EA4357 channel A U20 is enabled by SJ5 connected to pad 1-2, no more action required
|
|
|
scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur
|
|
scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur
|
|
|
|
|
|
|
|
|
|
+ // init I2C and set up MIC2555 to have 15k pull-down on USB1 D+ & D-
|
|
|
|
|
+// I2C_Init(LPC_I2C0, 100000);
|
|
|
|
|
+// I2C_Cmd(LPC_I2C0, ENABLE);
|
|
|
|
|
+//
|
|
|
|
|
+// ASSERT_INT(0x058d, mic255_get_vendorid(), (void) 0); // verify vendor id
|
|
|
|
|
+// ASSERT( mic255_regs_write(6, BIN8(1100)), (void) 0); // pull down D+/D- for host
|
|
|
|
|
+
|
|
|
#if 0
|
|
#if 0
|
|
|
// Leds Init
|
|
// Leds Init
|
|
|
for (uint8_t i=0; i<CFG_LED_NUMBER; i++)
|
|
for (uint8_t i=0; i<CFG_LED_NUMBER; i++)
|