void sdhci_set_data1_to_gpio(struct sdhci_host *host) { unsigned int val; /* configurate sdio1 data1 to gpio when system in deep sleep */ val = BITS_PIN_DS(1) | BITS_PIN_AF(3) | BIT_PIN_WPU | BIT_PIN_SLP_WPU | BIT_PIN_SLP_IE ; __raw_writel( val, CTL_PIN_BASE + REG_PIN_SD2_D1 ); printk("%s, PIN_SD2_D1_REG:0x%x\n", __func__, __raw_readl(CTL_PIN_BASE + REG_PIN_SD2_D1)); printk("sdhci_set_data1_to_gpio done\n"); }
void sdhci_set_gpio_to_data1(struct sdhci_host *host) { unsigned int val; val = __raw_readl( CTL_PIN_BASE + REG_PIN_SD2_D1 ); val = BITS_PIN_DS(1) | BITS_PIN_AF(0) | BIT_PIN_WPU | BIT_PIN_SLP_NUL | BIT_PIN_SLP_Z ; __raw_writel( val, CTL_PIN_BASE + REG_PIN_SD2_D1 ); printk("%s, REG_PIN_SD2_D1:0x%x\n", __func__, __raw_readl(REG_PIN_SD2_D1)); printk("sdhci_set_gpio_to_data1 done\n"); }
* GNU General Public License for more details. */ #include <asm/io.h> #include <asm/arch/pinmap.h> #define BIT_PIN_SLP_ALL (BIT_PIN_SLP_AP|BIT_PIN_SLP_CP0|BIT_PIN_SLP_CP1|BIT_PIN_SLP_CP2) #define BIT_PIN_SLP_DCP (BIT_PIN_SLP_CP0|BIT_PIN_SLP_CP1) static pinmap_t pinmap[]={ {REG_PIN_CTRL0,(1<<20/*gps real select*/)|(1<<26/*RFSDA2 source select function 2 of U0TXD*/)|(3<<16)|0}, {REG_PIN_CTRL1,0}, {REG_PIN_CTRL2,0}, {REG_PIN_CTRL3,(1<<30/*bt i2s internal connection enable*/)|0}, {REG_PIN_CTRL4,0}, {REG_PIN_CTRL5,0}, {REG_PIN_TRACECLK, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACECTRL, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT0, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT1, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT2, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT3, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT4, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE},//AF_PWDN {REG_PIN_TRACEDAT5, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT6, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_TRACEDAT7, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_U0TXD, BIT_PIN_SLP_AP|BIT_PIN_SLP_CP2|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(1)|BIT_PIN_NUL|BIT_PIN_SLP_WPD|BIT_PIN_SLP_IE}, {REG_PIN_U0RXD, BIT_PIN_SLP_AP|BIT_PIN_SLP_CP2|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(1)|BIT_PIN_WPU|BIT_PIN_SLP_WPD|BIT_PIN_SLP_IE}, {REG_PIN_U0CTS, BIT_PIN_SLP_AP|BIT_PIN_SLP_CP2|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(1)|BIT_PIN_WPU|BIT_PIN_SLP_WPD|BIT_PIN_SLP_IE}, {REG_PIN_U0RTS, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_WPD|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z}, {REG_PIN_U1TXD, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE},//BB_U1TXD {REG_PIN_U1RXD, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_WPU|BIT_PIN_SLP_IE},//BB_U1RXD
typedef struct { uint32_t reg; uint32_t val; } pinmap_t; #define SDIO1_DATA3_WIFI ( 0x01dc ) #define SDIO1_DATA2_WIFI ( 0x01d8 ) #define SDIO1_DATA1_WIFI ( 0x01d4 ) #define SDIO1_DATA0_WIFI ( 0x01d0 ) #define SDIO1_CMD_WIFI ( 0x01cc ) #define SDIO1_CLK_WIFI ( 0x01c8 ) #define WL_HOST_WAKE ( 0x0428 ) static pinmap_t wifi_on_pinmap[] = { {SDIO1_DATA3_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA2_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA1_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA0_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_CMD_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_WPU|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_CLK_WIFI, BIT_PIN_NULL|BITS_PIN_DS(2)|BITS_PIN_AF(0)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {WL_HOST_WAKE, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_IE}, }; static pinmap_t wifi_off_pinmap[] = { {SDIO1_DATA3_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA2_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA1_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_DATA0_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_CMD_WIFI, BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z}, {SDIO1_CLK_WIFI, BIT_PIN_NULL|BITS_PIN_DS(2)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z},
}; static struct sprd_lcd_controller lcdc; #ifdef CONFIG_FB_LCD_OVERLAY_SUPPORT static int overlay_start(struct sprdfb_device *dev, uint32_t layer_index); static int overlay_close(struct sprdfb_device *dev); #endif typedef struct { uint32_t reg; uint32_t val; } lcd_pinmap_t; lcd_pinmap_t lcd_rstpin_map[] = { {REG_PIN_LCD_RSTN, BITS_PIN_DS(1)|BITS_PIN_AF(0)|BIT_PIN_NUL|BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z}, {REG_PIN_LCD_RSTN, BITS_PIN_DS(3)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_NUL|BIT_PIN_SLP_OE}, }; static void sprd_lcdc_set_rstn_prop(unsigned int if_slp) { int i; if (if_slp) i = 1; else i = 0; __raw_writel(lcd_rstpin_map[i].val, CTL_PIN_BASE + lcd_rstpin_map[i].reg); }