]> git.zerfleddert.de Git - ms2-kexec/commitdiff
more stuff
authorMichael Gernoth <michael@gernoth.net>
Thu, 26 May 2011 13:30:04 +0000 (15:30 +0200)
committerMichael Gernoth <michael@gernoth.net>
Thu, 26 May 2011 13:30:04 +0000 (15:30 +0200)
board-mapphone-emu_uart.c
hs_cons.c

index ba209c0585c8e2fd67571f46327c447376f9104a..82fbd9eb557944a61f3ebaf191555835b744b4ce 100644 (file)
@@ -45,6 +45,9 @@
 #include <plat/hardware.h>
 #include <plat/omap34xx.h>
 
 #include <plat/hardware.h>
 #include <plat/omap34xx.h>
 
+#include <linux/spi/cpcap.h>
+#include <linux/spi/cpcap-regbits.h>
+
 /*
  * Register definitions for CPCAP related SPI register
  */
 /*
  * Register definitions for CPCAP related SPI register
  */
@@ -144,7 +147,9 @@ struct cpcap_dev {
        int access_flag;
 };
 
        int access_flag;
 };
 
+#if 0
 static char tx[4];
 static char tx[4];
+#endif
 static bool emu_uart_is_active = FALSE;
 
 /*   Although SPI driver is provided through linux system as implemented above,
 static bool emu_uart_is_active = FALSE;
 
 /*   Although SPI driver is provided through linux system as implemented above,
@@ -177,6 +182,7 @@ static bool emu_uart_is_active = FALSE;
  *      we suggest they should use poweric interface.
  *
  */
  *      we suggest they should use poweric interface.
  *
  */
+#if 0
 static inline void raw_writel_reg(u32 value, u32 reg)
 {
        unsigned int absolute_reg = (u32)OMAP_MCSPI_BASE + reg;
 static inline void raw_writel_reg(u32 value, u32 reg)
 {
        unsigned int absolute_reg = (u32)OMAP_MCSPI_BASE + reg;
@@ -503,6 +509,7 @@ static int read_cpcap_register_raw(u16 addr, u16 *val)
 
        return result;
 }
 
        return result;
 }
+#endif
 
 /*
  * Check if the writting is allowed. If MiniUSB port has already been
 
 /*
  * Check if the writting is allowed. If MiniUSB port has already been
@@ -533,12 +540,47 @@ static void write_omap_mux_register(u16 offset, u8 mode, u8 input_en)
        omap_writew(reg_val, reg);
 }
 
        omap_writew(reg_val, reg);
 }
 
+static int find_ms2_dev(struct device *dev, void *data)
+{
+       if (!strncmp((char*)data, dev_name(dev), strlen((char*)data))) {
+               printk(KERN_INFO "Found it\n");
+               return 1;
+       }
+       return 0;
+}
+
+/*
+ * c01fcb98 T cpcap_regacc_read
+ * c01fcc04 T cpcap_regacc_write
+ */
+
+
+static int (*my_cpcap_regacc_read)(struct cpcap_device *, enum cpcap_reg, unsigned short *) =
+       (int (*)(struct cpcap_device *, enum cpcap_reg, unsigned short *))0xc01fcb98;
+
+static int (*my_cpcap_regacc_write)(struct cpcap_device *, enum cpcap_reg, unsigned short, unsigned short) =
+       (int (*)(struct cpcap_device *, enum cpcap_reg, unsigned short, unsigned short))0xc01fcc04;
+
+
 void activate_emu_uart(void)
 {
        int i;
        u16 tmp = 0;
 void activate_emu_uart(void)
 {
        int i;
        u16 tmp = 0;
+       struct device *cpcap = NULL;
+       struct cpcap_device *cpcap_dev;
+
+       printk(KERN_INFO "Searching for cpcap_usb...\n");
+       
+       cpcap = device_find_child(&platform_bus, "cpcap_usb", find_ms2_dev);
+       if (cpcap == NULL)
+               return;
+
+       cpcap_dev = cpcap->platform_data;
+       if (cpcap_dev == NULL)
+               return;
 
 
-       read_cpcap_register_raw(18, &tmp);
+       //read_cpcap_register_raw(18, &tmp);
+       my_cpcap_regacc_read(cpcap_dev, CPCAP_REG_VERSC1, &tmp);
        printk(KERN_ALERT "Reading CPCAP vendor_version: 0x%04X\n", tmp);
        /*
         * Step 1:
        printk(KERN_ALERT "Reading CPCAP vendor_version: 0x%04X\n", tmp);
        /*
         * Step 1:
@@ -552,8 +594,10 @@ void activate_emu_uart(void)
         * Configure CPCAP to route UART3 to USB port; Switch VBUSIN to supply
         * UART/USB transeiver and set VBUS standby mode 3
         */
         * Configure CPCAP to route UART3 to USB port; Switch VBUSIN to supply
         * UART/USB transeiver and set VBUS standby mode 3
         */
-       write_cpcap_register_raw(897, 0x0101);
-       write_cpcap_register_raw(411, 0x014C);
+       //write_cpcap_register_raw(897, 0x0101);
+       //write_cpcap_register_raw(411, 0x014C);
+       my_cpcap_regacc_write(cpcap_dev, CPCAP_REG_USBC2, 0x0101, 0xffff);
+       my_cpcap_regacc_write(cpcap_dev, CPCAP_REG_VUSBC, 0x014c, 0xffff);
 
        /* Step 3:
         * Configure OMAP SCM to set ULPI port as UART3 function
 
        /* Step 3:
         * Configure OMAP SCM to set ULPI port as UART3 function
index 9c1f47ddd3e8424e276503a3df2dac5c858e7cb2..f64c340578e383dd078abfddc93ca55ffb221ea1 100644 (file)
--- a/hs_cons.c
+++ b/hs_cons.c
@@ -61,7 +61,7 @@ static int __init headphone_cons_init(void)
        gpio_set_value(hs_switch, 0);
        printk(KERN_INFO "headset_uart_switch: %d, value: %d\n", hs_switch, gpio_get_value(hs_switch));
 
        gpio_set_value(hs_switch, 0);
        printk(KERN_INFO "headset_uart_switch: %d, value: %d\n", hs_switch, gpio_get_value(hs_switch));
 
-       //activate_emu_uart();
+       activate_emu_uart();
 
        //add_preferred_console("ttyS", 2, "115200");
        return 0;
 
        //add_preferred_console("ttyS", 2, "115200");
        return 0;
Impressum, Datenschutz