Initial INC MR3 commit with EVO/BRAVO included and majority of the compile warnings ...
/arch/arm/mach-msm/board-supersonic-mmc.c
blob:b37047a6f838730313a567cc0978ddfa77321922 -> blob:2c4c4f7d850cac7e9f0e496eb10d0118c67c13ec
--- arch/arm/mach-msm/board-supersonic-mmc.c
+++ arch/arm/mach-msm/board-supersonic-mmc.c
@@ -203,7 +203,7 @@ static unsigned int supersonic_wifi_stat
}
static struct mmc_platform_data supersonic_wifi_data = {
- .ocr_mask = MMC_VDD_28_29,
+ .ocr_mask = MMC_VDD_20_21,
.status = supersonic_wifi_status,
.register_status_notify = supersonic_wifi_status_register,
.embedded_sdio = &supersonic_wifi_emb_data,
@@ -288,7 +288,16 @@ static void (*wimax_status_cb)(int card_
static void *wimax_status_cb_devid;
static int mmc_wimax_cd = 0;
static int mmc_wimax_sdio_status = 0;
+static int mmc_wimax_netlog_status = 0;
+static int mmc_wimax_sdio_interrupt_log_status = 0;
+static int mmc_wimax_netlog_withraw_status = 0;
+static int mmc_wimax_cliam_host_status = 0;
+static int mmc_wimax_busclk_pwrsave = 1; // Default is dynamic CLK OFF
+static int mmc_wimax_CMD53_timeout_trigger_counter = 0;
static int mmc_wimax_hostwakeup_gpio = 40; // GPIO40
+static int mmc_wimax_thp_log_status = 0;
+static int mmc_wimax_sdio_hw_reset = 0; // Rollback to default disabled HW RESET
+static int mmc_wimax_packet_filter = 0;
static int supersonic_wimax_status_register(void (*callback)(int card_present, void *dev_id), void *dev_id)
{
@@ -345,10 +354,12 @@ XB : GPIO33 = 0 -> USB
GPIO33 = 1 , GPIO160 = 0 -> CPU UART
GPIO33 = 1 , GPIO160 = 1 -> Wimax UART
*/
+int wimax_uart_switch = 0;
int mmc_wimax_uart_switch(int uart)
{
printk("%s uart:%d\n", __func__, uart);
-
+ wimax_uart_switch = uart;
+
gpio_set_value(SUPERSONIC_USB_UARTz_SW, uart?1:0);
if(system_rev && uart)
gpio_set_value(SUPERSONIC_WIMAX_CPU_UARTz_SW, uart==2?1:0);
@@ -356,6 +367,13 @@ int mmc_wimax_uart_switch(int uart)
}
EXPORT_SYMBOL(mmc_wimax_uart_switch);
+int mmc_wimax_get_uart_switch(void)
+{
+ printk("%s uart:%d\n", __func__, wimax_uart_switch);
+ return wimax_uart_switch?1:0;
+}
+EXPORT_SYMBOL(mmc_wimax_get_uart_switch);
+
int mmc_wimax_power(int on)
{
printk("%s\n", __func__);
@@ -364,10 +382,10 @@ int mmc_wimax_power(int on)
/*Power ON sequence*/
gpio_set_value(154, 1);
gpio_set_value(48, 1);
- mdelay(5);
+ mdelay(5);
gpio_set_value(106, 0);
- gpio_set_value(156, 1);
- gpio_set_value(155, 1);
+ gpio_set_value(156, 1);
+ gpio_set_value(155, 1);
mdelay(5);
gpio_set_value(106, 1);
mdelay(1150);
@@ -410,12 +428,190 @@ int mmc_wimax_get_status(void)
}
EXPORT_SYMBOL(mmc_wimax_get_status);
+int mmc_wimax_set_cliam_host_status(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_cliam_host_status = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_cliam_host_status);
+
+int mmc_wimax_get_cliam_host_status(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_sdio_status);
+ return mmc_wimax_cliam_host_status;
+}
+EXPORT_SYMBOL(mmc_wimax_get_cliam_host_status);
+
+int mmc_wimax_set_netlog_status(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_netlog_status = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_netlog_status);
+
+int mmc_wimax_get_netlog_status(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_sdio_status);
+ return mmc_wimax_netlog_status;
+}
+EXPORT_SYMBOL(mmc_wimax_get_netlog_status);
+
+int mmc_wimax_set_netlog_withraw_status(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_netlog_withraw_status = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_netlog_withraw_status);
+
+int mmc_wimax_get_netlog_withraw_status(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_netlog_withraw_status);
+ return mmc_wimax_netlog_withraw_status;
+}
+EXPORT_SYMBOL(mmc_wimax_get_netlog_withraw_status);
+
+int mmc_wimax_set_sdio_interrupt_log(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_sdio_interrupt_log_status = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_sdio_interrupt_log);
+
+int mmc_wimax_get_sdio_interrupt_log(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_sdio_interrupt_log_status);
+ return mmc_wimax_sdio_interrupt_log_status;
+}
+EXPORT_SYMBOL(mmc_wimax_get_sdio_interrupt_log);
+
+int mmc_wimax_set_packet_filter(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_packet_filter = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_packet_filter);
+
+int mmc_wimax_get_packet_filter(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_packet_filter);
+ return mmc_wimax_packet_filter;
+}
+EXPORT_SYMBOL(mmc_wimax_get_packet_filter);
+
+int mmc_wimax_set_thp_log(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_thp_log_status = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_thp_log);
+
+int mmc_wimax_get_thp_log(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_thp_log_status);
+ return mmc_wimax_thp_log_status;
+}
+EXPORT_SYMBOL(mmc_wimax_get_thp_log);
+
+int mmc_wimax_set_busclk_pwrsave(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_busclk_pwrsave = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_busclk_pwrsave);
+
+int mmc_wimax_get_busclk_pwrsave(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_busclk_pwrsave);
+ return mmc_wimax_busclk_pwrsave;
+}
+EXPORT_SYMBOL(mmc_wimax_get_busclk_pwrsave);
+
+int mmc_wimax_set_sdio_hw_reset(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_sdio_hw_reset = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_sdio_hw_reset);
+
+int mmc_wimax_get_sdio_hw_reset(void)
+{
+ //printk(KERN_INFO "%s status:%d\n", __func__, mmc_wimax_sdio_hw_reset);
+ return mmc_wimax_sdio_hw_reset;
+}
+EXPORT_SYMBOL(mmc_wimax_get_sdio_hw_reset);
+
+int mmc_wimax_set_CMD53_timeout_trigger_counter(int counter)
+{
+ printk(KERN_INFO "%s counter:%d\n", __func__, counter);
+ mmc_wimax_CMD53_timeout_trigger_counter = counter;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_CMD53_timeout_trigger_counter);
+
+int mmc_wimax_get_CMD53_timeout_trigger_counter(void)
+{
+ //printk(KERN_INFO "%s counter:%d\n", __func__, mmc_wimax_CMD53_timeout_trigger_counter);
+ return mmc_wimax_CMD53_timeout_trigger_counter;
+}
+EXPORT_SYMBOL(mmc_wimax_get_CMD53_timeout_trigger_counter);
+
int mmc_wimax_get_hostwakeup_gpio(void)
{
return mmc_wimax_hostwakeup_gpio;
}
EXPORT_SYMBOL(mmc_wimax_get_hostwakeup_gpio);
+static int mmc_wimax_is_gpio_irq_enabled = 0;
+
+int mmc_wimax_set_gpio_irq_enabled(int on)
+{
+ printk(KERN_INFO "%s on:%d\n", __func__, on);
+ mmc_wimax_is_gpio_irq_enabled = on;
+ return 0;
+}
+EXPORT_SYMBOL(mmc_wimax_set_gpio_irq_enabled);
+
+int mmc_wimax_get_gpio_irq_enabled(void)
+{
+ return mmc_wimax_is_gpio_irq_enabled;
+}
+EXPORT_SYMBOL(mmc_wimax_get_gpio_irq_enabled);
+
+void mmc_wimax_enable_host_wakeup(int on)
+{
+ if (mmc_wimax_sdio_status)
+ {
+ if (on) {
+ if (!mmc_wimax_is_gpio_irq_enabled) {
+ printk("set GPIO%d as waketup source\n", mmc_wimax_get_hostwakeup_gpio());
+ enable_irq(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio()));
+ enable_irq_wake(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio()));
+ mmc_wimax_is_gpio_irq_enabled = 1;
+ }
+ }
+ else {
+ if (mmc_wimax_is_gpio_irq_enabled) {
+ printk("disable GPIO%d wakeup source\n", mmc_wimax_get_hostwakeup_gpio());
+ disable_irq_wake(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio()));
+ disable_irq_nosync(MSM_GPIO_TO_INT(mmc_wimax_get_hostwakeup_gpio()));
+ mmc_wimax_is_gpio_irq_enabled = 0;
+ }
+ }
+ }
+ else {
+ printk("%s mmc_wimax_sdio_status is OFF\n", __func__);
+ }
+}
+EXPORT_SYMBOL(mmc_wimax_enable_host_wakeup);
+
int __init supersonic_init_mmc(unsigned int sys_rev)
{
uint32_t id;