From 41097f206dfdcc29166752a14b7fc6d30f2c3430 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 29 Jul 2010 15:20:39 +0800 Subject: [PATCH] =?utf8?q?=E8=A1=A5=E5=85=85=E6=8F=90=E4=BA=A4iomux?= =?utf8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- arch/arm/mach-rk2818/board-midsdk.c | 6 ++++-- arch/arm/mach-rk2818/board-phonesdk.c | 6 ++++-- arch/arm/mach-rk2818/board-raho.c | 8 ++++---- arch/arm/mach-rk2818/include/mach/iomux.h | 4 +++- drivers/mtd/nand/rk2818_nand.c | 17 +++++------------ 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/arch/arm/mach-rk2818/board-midsdk.c b/arch/arm/mach-rk2818/board-midsdk.c index 7c26c8f37169..818a67b69df4 100644 --- a/arch/arm/mach-rk2818/board-midsdk.c +++ b/arch/arm/mach-rk2818/board-midsdk.c @@ -554,11 +554,13 @@ void lcd_set_iomux(u8 enable) else { gpio_free(RK2818_PIN_PA4); - rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1); + //rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1); + rk2818_mux_api_mode_resume(CXGPIO_HSADC_SEL_NAME); gpio_free(RK2818_PIN_PE7); gpio_free(RK2818_PIN_PE6); - rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2); + //rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2); + rk2818_mux_api_mode_resume(GPIOE_U1IR_I2C1_NAME); } return ; pin_err: diff --git a/arch/arm/mach-rk2818/board-phonesdk.c b/arch/arm/mach-rk2818/board-phonesdk.c index 630857812099..f0b9f546011b 100755 --- a/arch/arm/mach-rk2818/board-phonesdk.c +++ b/arch/arm/mach-rk2818/board-phonesdk.c @@ -560,11 +560,13 @@ void lcd_set_iomux(u8 enable) else { gpio_free(RK2818_PIN_PA4); - rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1); + //rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1); + rk2818_mux_api_mode_resume(CXGPIO_HSADC_SEL_NAME); gpio_free(RK2818_PIN_PE7); gpio_free(RK2818_PIN_PE6); - rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2); + //rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2); + rk2818_mux_api_mode_resume(GPIOE_U1IR_I2C1_NAME); } return ; pin_err: diff --git a/arch/arm/mach-rk2818/board-raho.c b/arch/arm/mach-rk2818/board-raho.c index c9a61d72e0a7..40702cce4521 100644 --- a/arch/arm/mach-rk2818/board-raho.c +++ b/arch/arm/mach-rk2818/board-raho.c @@ -393,12 +393,10 @@ static void spi_xpt2046_cs_control(u32 command) { if(command == 3) { - printk("spi_xpt2046_cs_control cs \n"); gpio_direction_output(RK2818_PIN_PF5, GPIO_LOW); } if(command == 0) { - printk("spi_xpt2046_cs_control decs \n"); gpio_direction_output(RK2818_PIN_PF5, GPIO_HIGH); } } @@ -584,11 +582,13 @@ void lcd_set_iomux(u8 enable) else { gpio_free(RK2818_PIN_PH6); - rk2818_mux_api_set(GPIOH6_IQ_SEL_NAME, 1); + //rk2818_mux_api_set(GPIOH6_IQ_SEL_NAME, 1); + rk2818_mux_api_mode_resume(GPIOH6_IQ_SEL_NAME); gpio_free(RK2818_PIN_PE4); gpio_free(RK2818_PIN_PE5); - rk2818_mux_api_set(GPIOE_I2C0_SEL_NAME, 0); + //rk2818_mux_api_set(GPIOE_I2C0_SEL_NAME, 0); + rk2818_mux_api_mode_resume(GPIOE_I2C0_SEL_NAME); } return ; pin_err: diff --git a/arch/arm/mach-rk2818/include/mach/iomux.h b/arch/arm/mach-rk2818/include/mach/iomux.h index 281f037f2727..70c66a66b50c 100644 --- a/arch/arm/mach-rk2818/include/mach/iomux.h +++ b/arch/arm/mach-rk2818/include/mach/iomux.h @@ -207,6 +207,7 @@ .interleave = interl, \ .mux_reg = RK2818_IOMUX_##reg##_CON, \ .mode = mux_mode, \ + .premode = mux_mode, \ .flags = bflags, \ }, @@ -214,6 +215,7 @@ struct mux_config { char *name; const unsigned int offset; unsigned int mode; + unsigned int premode; const unsigned int mux_reg; const unsigned int interleave; unsigned int flags; @@ -221,7 +223,7 @@ struct mux_config { extern int rk2818_iomux_init(void); extern void rk2818_mux_api_set(char *name, unsigned int mode); -extern unsigned int rk2818_mux_api_get(char *name); +extern void rk2818_mux_api_mode_resume(char *name); #endif diff --git a/drivers/mtd/nand/rk2818_nand.c b/drivers/mtd/nand/rk2818_nand.c index 6e0cba2c46c8..49ec53fc39e9 100644 --- a/drivers/mtd/nand/rk2818_nand.c +++ b/drivers/mtd/nand/rk2818_nand.c @@ -788,7 +788,6 @@ static int rk2818_nand_probe(struct platform_device *pdev) int err = 0; pNANDC pRK28NC; u_char maf_id,dev_id,ext_id3,ext_id4; - u32 iomux_mode0,iomux_mode1,iomux_mode2,iomux_mode3,iomux_mode4; struct nand_chip *chip; #ifdef CONFIG_MTD_PARTITIONS @@ -884,12 +883,6 @@ static int rk2818_nand_probe(struct platform_device *pdev) this->options |= NAND_BUSWIDTH_16; this->ecc.layout = &nand_hw_eccoob_16; } - //±£³ÖIO MUXԭʼֵ - iomux_mode0=rk2818_mux_api_get(GPIOA5_FLASHCS1_SEL_NAME); - iomux_mode1=rk2818_mux_api_get(GPIOA6_FLASHCS2_SEL_NAME); - iomux_mode2=rk2818_mux_api_get(GPIOA7_FLASHCS3_SEL_NAME); - iomux_mode3=rk2818_mux_api_get(GPIOE_SPI1_FLASH_SEL1_NAME); - iomux_mode4=rk2818_mux_api_get(GPIOE_SPI1_FLASH_SEL_NAME); // iomux flash cs1~cs7 rk2818_mux_api_set(GPIOA5_FLASHCS1_SEL_NAME, IOMUXB_FLASH_CS1); rk2818_mux_api_set(GPIOA6_FLASHCS2_SEL_NAME, IOMUXB_FLASH_CS2); @@ -911,16 +904,16 @@ static int rk2818_nand_probe(struct platform_device *pdev) switch(chip->numchips) { case 1: - rk2818_mux_api_set(GPIOA5_FLASHCS1_SEL_NAME, iomux_mode0); + rk2818_mux_api_mode_resume(GPIOA5_FLASHCS1_SEL_NAME); case 2: - rk2818_mux_api_set(GPIOA6_FLASHCS2_SEL_NAME, iomux_mode1); + rk2818_mux_api_mode_resume(GPIOA6_FLASHCS2_SEL_NAME); case 3: - rk2818_mux_api_set(GPIOA7_FLASHCS3_SEL_NAME, iomux_mode2); + rk2818_mux_api_mode_resume(GPIOA7_FLASHCS3_SEL_NAME); case 4: - rk2818_mux_api_set(GPIOE_SPI1_FLASH_SEL1_NAME, iomux_mode3); + rk2818_mux_api_mode_resume(GPIOE_SPI1_FLASH_SEL1_NAME); case 5: case 6: - rk2818_mux_api_set(GPIOE_SPI1_FLASH_SEL_NAME, iomux_mode4); + rk2818_mux_api_mode_resume(GPIOE_SPI1_FLASH_SEL_NAME); case 7: case 8: break; -- 2.34.1