more twl regs
authorRiku Voipio <riku.voipio@nokia.com>
Mon, 16 Feb 2009 15:01:26 +0000 (17:01 +0200)
committerRiku Voipio <riku.voipio@nokia.com>
Mon, 16 Feb 2009 15:01:26 +0000 (17:01 +0200)
hw/omap3.c
hw/omap_i2c.c
hw/twl4030.c

index 34ad4bf..04fe759 100644 (file)
@@ -29,7 +29,7 @@
 #include "soc_dma.h"\r
 #include "audio/audio.h"\r
 \r
-#define OMAP3_DEBUG_\r
+//#define OMAP3_DEBUG_\r
 \r
 #ifdef OMAP3_DEBUG_\r
 #define TRACE(fmt, ...) fprintf(stderr, "%s " fmt "\n", __FUNCTION__, ##__VA_ARGS__)\r
index 2e7d056..cc61721 100644 (file)
@@ -52,7 +52,7 @@ struct omap_i2c_s {
 #define OMAP2_GC_REV   0x34
 #define OMAP3_INTR_REV  0x3c
 
-//#define I2C_DEBUG
+#define I2C_DEBUG
 #ifdef I2C_DEBUG
 #define TRACE(fmt, ...) fprintf(stderr, "%s " fmt "\n", __FUNCTION__, ##__VA_ARGS__)
 #else
index 32393ee..d2099cd 100644 (file)
@@ -195,6 +195,24 @@ static uint8_t twl4030_48_read(void *opaque, uint8_t addr)
     struct twl4030_i2c_s *s = (struct twl4030_i2c_s *) opaque;\r
        \r
     switch (addr) {\r
+        case 0x00: /* VENDOR_ID_LO */\r
+        case 0x01: /* VENDOR_ID_HI */\r
+        case 0x02: /* PRODUCT_ID_LO */\r
+        case 0x03: /* PRODUCT_ID_HI */\r
+            return s->reg_data[addr];\r
+        case 0x04: /* FUNC_CTRL */\r
+        case 0x05: /* FUNC_CRTL_SET */\r
+        case 0x06: /* FUNC_CRTL_CLR */\r
+            return s->reg_data[0x04];\r
+        case 0x07: /* IFC_CTRL */\r
+        case 0x08: /* IFC_CRTL_SET */\r
+        case 0x09: /* IFC_CRTL_CLR */\r
+            return s->reg_data[0x07];\r
+        case 0xac: /* POWER_CTRL */\r
+        case 0xad: /* POWER_SET */\r
+        case 0xae: /* POWER_CLR */\r
+            return s->reg_data[0xac];\r
+        case 0xfe: /* PHY_CLK_CTRL */\r
         case 0xfd: /* PHY_PWR_CTRL */\r
             return s->reg_data[addr];\r
         default:\r
@@ -209,9 +227,42 @@ static uint8_t twl4030_48_read(void *opaque, uint8_t addr)
 \r
 static void twl4030_48_write(void *opaque, uint8_t addr, uint8_t value)\r
 {\r
-    //struct twl4030_i2c_s *s = (struct twl4030_i2c_s *) opaque;\r
+    struct twl4030_i2c_s *s = (struct twl4030_i2c_s *) opaque;\r
        \r
     switch (addr) {\r
+        case 0x04: /* IFC_CTRL */\r
+            s->reg_data[0x04] = value & 0x80;\r
+            break;\r
+        case 0x05: /* IFC_CRTL_SET */\r
+            s->reg_data[0x04] =  (s->reg_data[0x04] | value) & 0x80;\r
+            break;\r
+        case 0x06: /* IFC_CRTL_CLEAR */\r
+            s->reg_data[0x04] =  (s->reg_data[0x04] & ~value) & 0x80;\r
+            break;\r
+        case 0x07: /* IFC_CTRL */\r
+            s->reg_data[0x07] = value & 0x61;\r
+            break;\r
+        case 0x08: /* IFC_CRTL_SET */\r
+            s->reg_data[0x07] =  (s->reg_data[0x07] | value) & 0x61;\r
+            break;\r
+        case 0x09: /* IFC_CRTL_CLEAR */\r
+            s->reg_data[0x07] =  (s->reg_data[0x07] & ~value) & 0x61;\r
+            break;\r
+        case 0xac: /* POWER_CTRL */\r
+            s->reg_data[0xac] = value & 0x20;\r
+            break;\r
+        case 0xad: /* POWER_SET */\r
+            s->reg_data[0xac] =  (s->reg_data[0xac] | value) & 0x20;\r
+            break;\r
+        case 0xae: /* POWER_CLEAR */\r
+            s->reg_data[0xac] =  (s->reg_data[0xac] & ~value) & 0x20;\r
+            break;\r
+        case 0xfe: /* PHY_CLK_CTRL */\r
+            s->reg_data[addr] = value & 0x7;\r
+            break;\r
+        case 0xfd: /* PHY_PWR_CTRL */\r
+            s->reg_data[addr] = value & 0x1;\r
+            break;\r
         default:\r
 #ifdef VERBOSE\r
             printf("%s: unknown register %02x pc %x \n", __FUNCTION__, addr,cpu_single_env->regs[15] );\r
@@ -281,6 +332,21 @@ static void twl4030_49_write(void *opaque, uint8_t addr, uint8_t value)
     struct twl4030_i2c_s *s = (struct twl4030_i2c_s *) opaque;\r
        \r
     switch (addr) {\r
+        case 0x9b: /* GPIODATADIR1 */\r
+        case 0x9c: /* GPIODATADIR2 */\r
+        case 0x9d: /* GPIODATADIR3 */\r
+        case 0x9e: /* GPIODATAOUT1 */\r
+        case 0x9f: /* GPIODATAOUT2 */\r
+        case 0xa0: /* GPIODATAOUT3 */\r
+        case 0xa1: /* CLEARGPIODATAOUT1 */\r
+        case 0xa2: /* CLEARGPIODATAOUT2 */\r
+        case 0xa3: /* CLEARGPIODATAOUT3 */\r
+        case 0xa4: /* SETGPIODATAOUT1 */\r
+        case 0xa5: /* SETGPIODATAOUT2 */\r
+        case 0xa6: /* SETGPIODATAOUT3 */\r
+        case 0xa7: /* GPIO_DEBEN1 */\r
+        case 0xa8: /* GPIO_DEBEN2 */\r
+        case 0xa9: /* GPIO_DEBEN3 */\r
         case 0xaa: /* GPIO_CTRL */\r
         case 0xab: /* GPIOPUPDCTR1 */\r
         case 0xac: /* GPIOPUPDCTR2 */\r