s5pc110: Detect TA or USB
authorKyungmin Park <kyungmin.park@samsung.com>
Wed, 30 Sep 2009 08:34:25 +0000 (17:34 +0900)
committerKyungmin Park <kyungmin.park@samsung.com>
Wed, 30 Sep 2009 08:34:25 +0000 (17:34 +0900)
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
board/samsung/universal/universal.c

index 8d64968..dcb32e6 100644 (file)
@@ -693,16 +693,43 @@ static void check_mhl(void)
        i2c_write((0xC8 >> 1), 0x21, 1, val, 1);
 }
 
-void check_micro_usb(void)
+static void check_micro_usb(void)
 {
-       unsigned char addr = 0x25;      /* fsa9480 */
+       unsigned char addr;
+       unsigned char val[2];
+       int ta = 0;
 
        i2c_gpio_set_bus(I2C_PMIC);
 
+       addr = 0x25;            /* fsa9480 */
        if (i2c_probe(addr)) {
                printf("Can't found fsa9480\n");
                return;
        }
+
+       /* Read Device Type 1 */
+       i2c_read(addr, 0x0a, 1, val, 1);
+
+#define FSA_DEDICATED_CHARGER  (1 << 6)
+#define FSA_UART               (1 << 3)
+#define FSA_USB                        (1 << 2)
+
+       if (val[0] & FSA_DEDICATED_CHARGER)
+               ta = 1;
+
+       /* If USB, use default 475mA */
+       if (ta) {
+               addr = 0xCC >> 1;       /* max8998 */
+               if (i2c_probe(addr)) {
+                       printf("Can't found max8998\n");
+                       return;
+               }
+
+               i2c_read(addr, 0x0C, 1, val, 1);
+               val[0] &= ~(0x7 << 0);
+               val[0] |= 5;            /* 600mA */
+               i2c_write(addr, 0x0C, 1, val, 1);
+       }
 }
 
 #define OUTPUT0(x)             (0x0 << ((x) << 1))