Loading arch/arm/mach-mx2/pcm038.c +60 −107 Original line number Diff line number Diff line Loading @@ -39,6 +39,63 @@ #include "devices.h" static int pcm038_pins[] = { /* UART1 */ PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS, /* UART2 */ PE3_PF_UART2_CTS, PE4_PF_UART2_RTS, PE6_PF_UART2_TXD, PE7_PF_UART2_RXD, /* UART3 */ PE8_PF_UART3_TXD, PE9_PF_UART3_RXD, PE10_PF_UART3_CTS, PE11_PF_UART3_RTS, /* FEC */ PD0_AIN_FEC_TXD0, PD1_AIN_FEC_TXD1, PD2_AIN_FEC_TXD2, PD3_AIN_FEC_TXD3, PD4_AOUT_FEC_RX_ER, PD5_AOUT_FEC_RXD1, PD6_AOUT_FEC_RXD2, PD7_AOUT_FEC_RXD3, PD8_AF_FEC_MDIO, PD9_AIN_FEC_MDC, PD10_AOUT_FEC_CRS, PD11_AOUT_FEC_TX_CLK, PD12_AOUT_FEC_RXD0, PD13_AOUT_FEC_RX_DV, PD14_AOUT_FEC_RX_CLK, PD15_AOUT_FEC_COL, PD16_AIN_FEC_TX_ER, PF23_AIN_FEC_TX_EN, /* I2C2 */ PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL, /* SPI1 */ PD25_PF_CSPI1_RDY, PD27_PF_CSPI1_SS1, PD28_PF_CSPI1_SS0, PD29_PF_CSPI1_SCLK, PD30_PF_CSPI1_MISO, PD31_PF_CSPI1_MOSI, /* SSI1 */ PC20_PF_SSI1_FS, PC21_PF_SSI1_RXD, PC22_PF_SSI1_TXD, PC23_PF_SSI1_CLK, /* SSI4 */ PC16_PF_SSI4_FS, PC17_PF_SSI4_RXD, PC18_PF_SSI4_TXD, PC19_PF_SSI4_CLK, }; /* * Phytec's PCM038 comes with 2MiB battery buffered SRAM, * 16 bit width Loading Loading @@ -88,104 +145,16 @@ static struct platform_device pcm038_nor_mtd_device = { .resource = &pcm038_flash_resource, }; static int mxc_uart0_pins[] = { PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS }; static int uart_mxc_port0_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins), "UART0"); } static void uart_mxc_port0_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins)); } static int mxc_uart1_pins[] = { PE3_PF_UART2_CTS, PE4_PF_UART2_RTS, PE6_PF_UART2_TXD, PE7_PF_UART2_RXD }; static int uart_mxc_port1_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins), "UART1"); } static void uart_mxc_port1_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins)); } static int mxc_uart2_pins[] = { PE8_PF_UART3_TXD, PE9_PF_UART3_RXD, PE10_PF_UART3_CTS, PE11_PF_UART3_RTS }; static int uart_mxc_port2_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins), "UART2"); } static void uart_mxc_port2_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins)); } static struct imxuart_platform_data uart_pdata[] = { { .init = uart_mxc_port0_init, .exit = uart_mxc_port0_exit, .flags = IMXUART_HAVE_RTSCTS, }, { .init = uart_mxc_port1_init, .exit = uart_mxc_port1_exit, .flags = IMXUART_HAVE_RTSCTS, }, { .init = uart_mxc_port2_init, .exit = uart_mxc_port2_exit, .flags = IMXUART_HAVE_RTSCTS, }, }; static int mxc_fec_pins[] = { PD0_AIN_FEC_TXD0, PD1_AIN_FEC_TXD1, PD2_AIN_FEC_TXD2, PD3_AIN_FEC_TXD3, PD4_AOUT_FEC_RX_ER, PD5_AOUT_FEC_RXD1, PD6_AOUT_FEC_RXD2, PD7_AOUT_FEC_RXD3, PD8_AF_FEC_MDIO, PD9_AIN_FEC_MDC, PD10_AOUT_FEC_CRS, PD11_AOUT_FEC_TX_CLK, PD12_AOUT_FEC_RXD0, PD13_AOUT_FEC_RX_DV, PD14_AOUT_FEC_RX_CLK, PD15_AOUT_FEC_COL, PD16_AIN_FEC_TX_ER, PF23_AIN_FEC_TX_EN }; static void gpio_fec_active(void) { mxc_gpio_setup_multiple_pins(mxc_fec_pins, ARRAY_SIZE(mxc_fec_pins), "FEC"); } static struct mxc_nand_platform_data pcm038_nand_board_info = { .width = 1, .hw_ecc = 1, Loading @@ -208,26 +177,8 @@ static void __init pcm038_init_sram(void) } #ifdef CONFIG_I2C_IMX static int mxc_i2c1_pins[] = { PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL }; static int pcm038_i2c_1_init(struct device *dev) { return mxc_gpio_setup_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins), "I2C1"); } static void pcm038_i2c_1_exit(struct device *dev) { mxc_gpio_release_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins)); } static struct imxi2c_platform_data pcm038_i2c_1_data = { .bitrate = 100000, .init = pcm038_i2c_1_init, .exit = pcm038_i2c_1_exit, }; static struct at24_platform_data board_eeprom = { Loading @@ -254,7 +205,9 @@ static struct i2c_board_info pcm038_i2c_devices[] = { static void __init pcm038_init(void) { gpio_fec_active(); mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), "PCM038"); pcm038_init_sram(); mxc_register_device(&mxc_uart_device0, &uart_pdata[0]); Loading arch/arm/mach-mx2/pcm970-baseboard.c +64 −49 Original line number Diff line number Diff line Loading @@ -30,57 +30,93 @@ #include "devices.h" static int pcm970_sdhc2_get_ro(struct device *dev) { return gpio_get_value(GPIO_PORTC + 28); } static int pcm970_sdhc2_pins[] = { static int pcm970_pins[] = { /* SDHC */ PB4_PF_SD2_D0, PB5_PF_SD2_D1, PB6_PF_SD2_D2, PB7_PF_SD2_D3, PB8_PF_SD2_CMD, PB9_PF_SD2_CLK, GPIO_PORTC | 28 | GPIO_GPIO | GPIO_IN, /* card detect */ /* display */ PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD, /* * it seems the data line misses a pullup, so we must enable * the internal pullup as a local workaround */ PD17_PF_I2C_DATA | GPIO_PUEN, PD18_PF_I2C_CLK, /* Camera */ PB10_PF_CSI_D0, PB11_PF_CSI_D1, PB12_PF_CSI_D2, PB13_PF_CSI_D3, PB14_PF_CSI_D4, PB15_PF_CSI_MCLK, PB16_PF_CSI_PIXCLK, PB17_PF_CSI_D5, PB18_PF_CSI_D6, PB19_PF_CSI_D7, PB20_PF_CSI_VSYNC, PB21_PF_CSI_HSYNC, }; static int pcm970_sdhc2_get_ro(struct device *dev) { return gpio_get_value(GPIO_PORTC + 28); } static int pcm970_sdhc2_init(struct device *dev, irq_handler_t detect_irq, void *data) { int ret; ret = mxc_gpio_setup_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins), "sdhc2"); if(ret) return ret; ret = request_irq(IRQ_GPIOC(29), detect_irq, 0, ret = request_irq(IRQ_GPIOC(29), detect_irq, IRQF_TRIGGER_FALLING, "imx-mmc-detect", data); if (ret) goto out_release_gpio; set_irq_type(IRQ_GPIOC(29), IRQF_TRIGGER_FALLING); return ret; ret = gpio_request(GPIO_PORTC + 28, "imx-mmc-ro"); if (ret) goto out_release_gpio; if (ret) { free_irq(IRQ_GPIOC(29), data); return ret; } mxc_gpio_mode((GPIO_PORTC | 28) | GPIO_GPIO | GPIO_IN); gpio_direction_input(GPIO_PORTC + 28); return 0; out_release_gpio: mxc_gpio_release_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins)); return ret; } static void pcm970_sdhc2_exit(struct device *dev, void *data) { free_irq(IRQ_GPIOC(29), data); gpio_free(GPIO_PORTC + 28); mxc_gpio_release_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins)); } static struct imxmmc_platform_data sdhc_pdata = { Loading @@ -89,27 +125,6 @@ static struct imxmmc_platform_data sdhc_pdata = { .exit = pcm970_sdhc2_exit, }; static int mxc_fb_pins[] = { PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD }; static int pcm038_fb_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins), "FB"); } static void pcm038_fb_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins)); } /* * Connected is a portrait Sharp-QVGA display * of type: LQ035Q7DH06 Loading Loading @@ -142,9 +157,6 @@ static struct imx_fb_platform_data pcm038_fb_data = { .pwmr = 0x00A903FF, .lscr1 = 0x00120300, .dmacr = 0x00020010, .init = pcm038_fb_init, .exit = pcm038_fb_exit, }; /* Loading @@ -155,6 +167,9 @@ static struct imx_fb_platform_data pcm038_fb_data = { */ void __init pcm970_baseboard_init(void) { mxc_gpio_setup_multiple_pins(pcm970_pins, ARRAY_SIZE(pcm970_pins), "PCM970"); mxc_register_device(&mxc_fb_device, &pcm038_fb_data); mxc_register_device(&mxc_sdhc_device1, &sdhc_pdata); } Loading
arch/arm/mach-mx2/pcm038.c +60 −107 Original line number Diff line number Diff line Loading @@ -39,6 +39,63 @@ #include "devices.h" static int pcm038_pins[] = { /* UART1 */ PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS, /* UART2 */ PE3_PF_UART2_CTS, PE4_PF_UART2_RTS, PE6_PF_UART2_TXD, PE7_PF_UART2_RXD, /* UART3 */ PE8_PF_UART3_TXD, PE9_PF_UART3_RXD, PE10_PF_UART3_CTS, PE11_PF_UART3_RTS, /* FEC */ PD0_AIN_FEC_TXD0, PD1_AIN_FEC_TXD1, PD2_AIN_FEC_TXD2, PD3_AIN_FEC_TXD3, PD4_AOUT_FEC_RX_ER, PD5_AOUT_FEC_RXD1, PD6_AOUT_FEC_RXD2, PD7_AOUT_FEC_RXD3, PD8_AF_FEC_MDIO, PD9_AIN_FEC_MDC, PD10_AOUT_FEC_CRS, PD11_AOUT_FEC_TX_CLK, PD12_AOUT_FEC_RXD0, PD13_AOUT_FEC_RX_DV, PD14_AOUT_FEC_RX_CLK, PD15_AOUT_FEC_COL, PD16_AIN_FEC_TX_ER, PF23_AIN_FEC_TX_EN, /* I2C2 */ PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL, /* SPI1 */ PD25_PF_CSPI1_RDY, PD27_PF_CSPI1_SS1, PD28_PF_CSPI1_SS0, PD29_PF_CSPI1_SCLK, PD30_PF_CSPI1_MISO, PD31_PF_CSPI1_MOSI, /* SSI1 */ PC20_PF_SSI1_FS, PC21_PF_SSI1_RXD, PC22_PF_SSI1_TXD, PC23_PF_SSI1_CLK, /* SSI4 */ PC16_PF_SSI4_FS, PC17_PF_SSI4_RXD, PC18_PF_SSI4_TXD, PC19_PF_SSI4_CLK, }; /* * Phytec's PCM038 comes with 2MiB battery buffered SRAM, * 16 bit width Loading Loading @@ -88,104 +145,16 @@ static struct platform_device pcm038_nor_mtd_device = { .resource = &pcm038_flash_resource, }; static int mxc_uart0_pins[] = { PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS }; static int uart_mxc_port0_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins), "UART0"); } static void uart_mxc_port0_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart0_pins, ARRAY_SIZE(mxc_uart0_pins)); } static int mxc_uart1_pins[] = { PE3_PF_UART2_CTS, PE4_PF_UART2_RTS, PE6_PF_UART2_TXD, PE7_PF_UART2_RXD }; static int uart_mxc_port1_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins), "UART1"); } static void uart_mxc_port1_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart1_pins, ARRAY_SIZE(mxc_uart1_pins)); } static int mxc_uart2_pins[] = { PE8_PF_UART3_TXD, PE9_PF_UART3_RXD, PE10_PF_UART3_CTS, PE11_PF_UART3_RTS }; static int uart_mxc_port2_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins), "UART2"); } static void uart_mxc_port2_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_uart2_pins, ARRAY_SIZE(mxc_uart2_pins)); } static struct imxuart_platform_data uart_pdata[] = { { .init = uart_mxc_port0_init, .exit = uart_mxc_port0_exit, .flags = IMXUART_HAVE_RTSCTS, }, { .init = uart_mxc_port1_init, .exit = uart_mxc_port1_exit, .flags = IMXUART_HAVE_RTSCTS, }, { .init = uart_mxc_port2_init, .exit = uart_mxc_port2_exit, .flags = IMXUART_HAVE_RTSCTS, }, }; static int mxc_fec_pins[] = { PD0_AIN_FEC_TXD0, PD1_AIN_FEC_TXD1, PD2_AIN_FEC_TXD2, PD3_AIN_FEC_TXD3, PD4_AOUT_FEC_RX_ER, PD5_AOUT_FEC_RXD1, PD6_AOUT_FEC_RXD2, PD7_AOUT_FEC_RXD3, PD8_AF_FEC_MDIO, PD9_AIN_FEC_MDC, PD10_AOUT_FEC_CRS, PD11_AOUT_FEC_TX_CLK, PD12_AOUT_FEC_RXD0, PD13_AOUT_FEC_RX_DV, PD14_AOUT_FEC_RX_CLK, PD15_AOUT_FEC_COL, PD16_AIN_FEC_TX_ER, PF23_AIN_FEC_TX_EN }; static void gpio_fec_active(void) { mxc_gpio_setup_multiple_pins(mxc_fec_pins, ARRAY_SIZE(mxc_fec_pins), "FEC"); } static struct mxc_nand_platform_data pcm038_nand_board_info = { .width = 1, .hw_ecc = 1, Loading @@ -208,26 +177,8 @@ static void __init pcm038_init_sram(void) } #ifdef CONFIG_I2C_IMX static int mxc_i2c1_pins[] = { PC5_PF_I2C2_SDA, PC6_PF_I2C2_SCL }; static int pcm038_i2c_1_init(struct device *dev) { return mxc_gpio_setup_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins), "I2C1"); } static void pcm038_i2c_1_exit(struct device *dev) { mxc_gpio_release_multiple_pins(mxc_i2c1_pins, ARRAY_SIZE(mxc_i2c1_pins)); } static struct imxi2c_platform_data pcm038_i2c_1_data = { .bitrate = 100000, .init = pcm038_i2c_1_init, .exit = pcm038_i2c_1_exit, }; static struct at24_platform_data board_eeprom = { Loading @@ -254,7 +205,9 @@ static struct i2c_board_info pcm038_i2c_devices[] = { static void __init pcm038_init(void) { gpio_fec_active(); mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), "PCM038"); pcm038_init_sram(); mxc_register_device(&mxc_uart_device0, &uart_pdata[0]); Loading
arch/arm/mach-mx2/pcm970-baseboard.c +64 −49 Original line number Diff line number Diff line Loading @@ -30,57 +30,93 @@ #include "devices.h" static int pcm970_sdhc2_get_ro(struct device *dev) { return gpio_get_value(GPIO_PORTC + 28); } static int pcm970_sdhc2_pins[] = { static int pcm970_pins[] = { /* SDHC */ PB4_PF_SD2_D0, PB5_PF_SD2_D1, PB6_PF_SD2_D2, PB7_PF_SD2_D3, PB8_PF_SD2_CMD, PB9_PF_SD2_CLK, GPIO_PORTC | 28 | GPIO_GPIO | GPIO_IN, /* card detect */ /* display */ PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD, /* * it seems the data line misses a pullup, so we must enable * the internal pullup as a local workaround */ PD17_PF_I2C_DATA | GPIO_PUEN, PD18_PF_I2C_CLK, /* Camera */ PB10_PF_CSI_D0, PB11_PF_CSI_D1, PB12_PF_CSI_D2, PB13_PF_CSI_D3, PB14_PF_CSI_D4, PB15_PF_CSI_MCLK, PB16_PF_CSI_PIXCLK, PB17_PF_CSI_D5, PB18_PF_CSI_D6, PB19_PF_CSI_D7, PB20_PF_CSI_VSYNC, PB21_PF_CSI_HSYNC, }; static int pcm970_sdhc2_get_ro(struct device *dev) { return gpio_get_value(GPIO_PORTC + 28); } static int pcm970_sdhc2_init(struct device *dev, irq_handler_t detect_irq, void *data) { int ret; ret = mxc_gpio_setup_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins), "sdhc2"); if(ret) return ret; ret = request_irq(IRQ_GPIOC(29), detect_irq, 0, ret = request_irq(IRQ_GPIOC(29), detect_irq, IRQF_TRIGGER_FALLING, "imx-mmc-detect", data); if (ret) goto out_release_gpio; set_irq_type(IRQ_GPIOC(29), IRQF_TRIGGER_FALLING); return ret; ret = gpio_request(GPIO_PORTC + 28, "imx-mmc-ro"); if (ret) goto out_release_gpio; if (ret) { free_irq(IRQ_GPIOC(29), data); return ret; } mxc_gpio_mode((GPIO_PORTC | 28) | GPIO_GPIO | GPIO_IN); gpio_direction_input(GPIO_PORTC + 28); return 0; out_release_gpio: mxc_gpio_release_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins)); return ret; } static void pcm970_sdhc2_exit(struct device *dev, void *data) { free_irq(IRQ_GPIOC(29), data); gpio_free(GPIO_PORTC + 28); mxc_gpio_release_multiple_pins(pcm970_sdhc2_pins, ARRAY_SIZE(pcm970_sdhc2_pins)); } static struct imxmmc_platform_data sdhc_pdata = { Loading @@ -89,27 +125,6 @@ static struct imxmmc_platform_data sdhc_pdata = { .exit = pcm970_sdhc2_exit, }; static int mxc_fb_pins[] = { PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD }; static int pcm038_fb_init(struct platform_device *pdev) { return mxc_gpio_setup_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins), "FB"); } static void pcm038_fb_exit(struct platform_device *pdev) { mxc_gpio_release_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins)); } /* * Connected is a portrait Sharp-QVGA display * of type: LQ035Q7DH06 Loading Loading @@ -142,9 +157,6 @@ static struct imx_fb_platform_data pcm038_fb_data = { .pwmr = 0x00A903FF, .lscr1 = 0x00120300, .dmacr = 0x00020010, .init = pcm038_fb_init, .exit = pcm038_fb_exit, }; /* Loading @@ -155,6 +167,9 @@ static struct imx_fb_platform_data pcm038_fb_data = { */ void __init pcm970_baseboard_init(void) { mxc_gpio_setup_multiple_pins(pcm970_pins, ARRAY_SIZE(pcm970_pins), "PCM970"); mxc_register_device(&mxc_fb_device, &pcm038_fb_data); mxc_register_device(&mxc_sdhc_device1, &sdhc_pdata); }