diff options
Diffstat (limited to 'arch/arm/mach-mx5/mx51_ccwmx51js.c')
-rw-r--r-- | arch/arm/mach-mx5/mx51_ccwmx51js.c | 335 |
1 files changed, 1 insertions, 334 deletions
diff --git a/arch/arm/mach-mx5/mx51_ccwmx51js.c b/arch/arm/mach-mx5/mx51_ccwmx51js.c index 91ccc1dc81f5..34f81f7a9280 100644 --- a/arch/arm/mach-mx5/mx51_ccwmx51js.c +++ b/arch/arm/mach-mx5/mx51_ccwmx51js.c @@ -49,18 +49,8 @@ #include "crm_regs.h" #include "devices.h" #include "mx51_pins.h" -#include "displays/displays.h" -#include <linux/smc911x.h> - -#if defined(CONFIG_MTD) || defined(CONFIG_MTD_MODULE) -#include <linux/mtd/mtd.h> -#include <linux/mtd/map.h> -#include <linux/mtd/partitions.h> -#include <asm/mach/flash.h> -#endif +#include "devices_ccwmx51.h" -extern void __init ccwmx51_io_init(void); -extern int __init ccwmx51_init_mc13892(void); extern struct cpu_wp *(*get_cpu_wp)(int *wp); extern void (*set_num_cpu_wp)(int num); static int num_cpu_wp = 3; @@ -108,102 +98,6 @@ void mx51_set_num_cpu_wp(int num) return; } -#if defined(CONFIG_MTD_NAND_MXC) \ - || defined(CONFIG_MTD_NAND_MXC_MODULE) \ - || defined(CONFIG_MTD_NAND_MXC_V2) \ - || defined(CONFIG_MTD_NAND_MXC_V2_MODULE) \ - || defined(CONFIG_MTD_NAND_MXC_V3) \ - || defined(CONFIG_MTD_NAND_MXC_V3_MODULE) - -extern void gpio_nand_active(void); -extern void gpio_nand_inactive(void); - -static int nand_init(void) -{ - /* Configure the pins */ - gpio_nand_active(); - return 0; -} - -static void nand_exit(void) -{ - /* Free the pins */ - gpio_nand_inactive(); -} - -static struct flash_platform_data mxc_nand_data = { - .width = 1, - .init = nand_init, - .exit = nand_exit, -}; -#endif - -#if defined(CONFIG_SMSC9118) || defined(CONFIG_SMSC9118_MODULE) -static struct smc911x_platdata ccwmx51_smsc9118 = { - .flags = 0, - .irq_flags = IRQF_DISABLED | IRQF_TRIGGER_FALLING, - .irq_polarity = 0, - .irq_type = 1, /* push-pull irq */ -}; -#endif - -#if defined(CONFIG_MMC_IMX_ESDHCI) || defined(CONFIG_MMC_IMX_ESDHCI_MODULE) -static int sdhc_write_protect(struct device *dev) -{ - unsigned short rc = 0; - - if (to_platform_device(dev)->id == 0) - rc = 0; /* Not supported WP on JSK board, therefore write is enabled */ - else if (to_platform_device(dev)->id == 2) - rc = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_NANDF_CS1)); - return rc; -} - -static unsigned int sdhc_get_card_det_status(struct device *dev) -{ - int ret = 0; - - if (to_platform_device(dev)->id == 0) - ret = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_0)); - else if (to_platform_device(dev)->id == 2) - ret = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO_NAND)); - return ret; -} - -static struct mxc_mmc_platform_data mmc1_data = { - .ocr_mask = MMC_VDD_31_32, - .caps = MMC_CAP_4_BIT_DATA, - .min_clk = 400000, - .max_clk = 52000000, - .card_inserted_state = 1, - .status = sdhc_get_card_det_status, - .wp_status = sdhc_write_protect, - .clock_mmc = "esdhc_clk", - .power_mmc = NULL, -}; - -static struct mxc_mmc_platform_data mmc3_data = { - .ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30 | - MMC_VDD_31_32, - .caps = MMC_CAP_4_BIT_DATA, - .min_clk = 150000, - .max_clk = 50000000, - .card_inserted_state = 0, - .status = sdhc_get_card_det_status, - .wp_status = sdhc_write_protect, - .clock_mmc = "esdhc_clk", - .power_mmc = NULL, -}; -#endif - -#if defined(CONFIG_FB_MXC_SYNC_PANEL) || defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE) -static struct resource mxcfb_resources[] = { - [0] = { - .flags = IORESOURCE_MEM, - }, -}; -#endif - /*! * Board specific fixup function. It is called by \b setup_arch() in * setup.c file very early on during kernel starts. It allows the user to @@ -306,233 +200,6 @@ static void mxc_power_off(void) #endif } -static struct i2c_board_info ccwmx51_i2c_devices[] __initdata = { -#if defined(CONFIG_INPUT_MMA7455L) || defined(CONFIG_INPUT_MMA7455L_MODULE) - { - I2C_BOARD_INFO("mma7455l", 0x1d), - .irq = IOMUX_TO_IRQ(MX51_PIN_GPIO1_7), - }, -#endif -#if defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753) || defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753_MODULE) - { - I2C_BOARD_INFO("wm8753", 0x1A), - }, -#endif -}; - -int __init ccwmx51_init_i2c2(void) -{ - return i2c_register_board_info(1, ccwmx51_i2c_devices , ARRAY_SIZE(ccwmx51_i2c_devices) ); -} - -static struct mxc_i2c_platform_data mxci2c_data = { - .i2c_clk = 100000, -}; - -static struct mxc_i2c_platform_data mxci2c_hs_data = { - .i2c_clk = 400000, -}; - -#if defined(CONFIG_SPI_MXC_SELECT1_SS1) && (defined(CONFIG_SPI_MXC) || defined(CONFIG_SPI_MXC_MODULE)) -static struct spi_board_info spi_devices[] __initdata = { -#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) - { /* SPIDEV */ - .modalias = "spidev", - .max_speed_hz = 6000000, - .bus_num = 1, - .chip_select = 1, - }, - /* Add here other SPI devices, if any... */ -#endif -}; - -static void ccwmx51_init_spidevices(void) -{ - spi_register_board_info(spi_devices, ARRAY_SIZE(spi_devices)); -} -#else -static void ccwmx51_init_spidevices(void) { } -#endif - -extern void ccwmx51_gpio_spi_chipselect_active(int cspi_mode, int status, - int chipselect); -extern void ccwmx51_gpio_spi_chipselect_inactive(int cspi_mode, int status, - int chipselect); - -static struct mxc_spi_master mxcspi1_data = { - .maxchipselect = 4, - .spi_version = 23, - .chipselect_active = ccwmx51_gpio_spi_chipselect_active, - .chipselect_inactive = ccwmx51_gpio_spi_chipselect_inactive, -}; - -static struct mxc_srtc_platform_data srtc_data = { - .srtc_sec_mode_addr = 0x83F98840, -}; - - - -static struct mxc_ipu_config mxc_ipu_data = { - .rev = 2, -}; - -#if defined(CONFIG_W1_MASTER_MXC) || defined(CONFIG_W1_MASTER_MXC_MODULE) -static struct mxc_w1_config mxc_w1_data = { - .search_rom_accelerator = 1, -}; -#endif - -static struct mxc_spdif_platform_data mxc_spdif_data = { - .spdif_tx = 1, - .spdif_rx = 0, - .spdif_clk_44100 = 0, /* spdif_ext_clk source for 44.1KHz */ - .spdif_clk_48000 = 7, /* audio osc source */ - .spdif_clkid = 0, - .spdif_clk = NULL, /* spdif bus clk */ -}; - -static struct tve_platform_data tve_data = { - .dac_reg = "VVIDEO", - .dig_reg = "VDIG", -}; - -static struct mxc_dvfs_platform_data dvfs_core_data = { - .reg_id = "SW1", - .clk1_id = "cpu_clk", - .clk2_id = "gpc_dvfs_clk", - .gpc_cntr_reg_addr = MXC_GPC_CNTR, - .gpc_vcr_reg_addr = MXC_GPC_VCR, - .ccm_cdcr_reg_addr = MXC_CCM_CDCR, - .ccm_cacrr_reg_addr = MXC_CCM_CACRR, - .ccm_cdhipr_reg_addr = MXC_CCM_CDHIPR, - .dvfs_thrs_reg_addr = MXC_DVFSTHRS, - .dvfs_coun_reg_addr = MXC_DVFSCOUN, - .dvfs_emac_reg_addr = MXC_DVFSEMAC, - .dvfs_cntr_reg_addr = MXC_DVFSCNTR, - .prediv_mask = 0x1F800, - .prediv_offset = 11, - .prediv_val = 3, - .div3ck_mask = 0xE0000000, - .div3ck_offset = 29, - .div3ck_val = 2, - .emac_val = 0x08, - .upthr_val = 25, - .dnthr_val = 9, - .pncthr_val = 33, - .upcnt_val = 10, - .dncnt_val = 10, - .delay_time = 30, - .num_wp = 3, -}; - -static struct mxc_dvfsper_data dvfs_per_data = { - .reg_id = "SW2", - .clk_id = "gpc_dvfs_clk", - .gpc_cntr_reg_addr = MXC_GPC_CNTR, - .gpc_vcr_reg_addr = MXC_GPC_VCR, - .gpc_adu = 0x0, - .vai_mask = MXC_DVFSPMCR0_FSVAI_MASK, - .vai_offset = MXC_DVFSPMCR0_FSVAI_OFFSET, - .dvfs_enable_bit = MXC_DVFSPMCR0_DVFEN, - .irq_mask = MXC_DVFSPMCR0_FSVAIM, - .div3_offset = 0, - .div3_mask = 0x7, - .div3_div = 2, - .lp_high = 1200000, - .lp_low = 1200000, -}; - -static struct platform_pwm_backlight_data mxc_pwm_backlight_data = { - .pwm_id = 0, - .max_brightness = 255, - .dft_brightness = 128, - .pwm_period_ns = 78770, -}; - -static struct mxc_audio_platform_data wm8753_data = { - .ssi_num = 1, - .src_port = 2, - .ext_port = 3, - .sysclk = 12000000, -}; - -struct mxc_fb_platform_data mx51_fb_data[] = { - /*VGA*/ - { - .interface_pix_fmt = IPU_PIX_FMT_RGB24, - .mode_str = "1024x768M-16@60", /* Default */ - } -}; -#if defined(CONFIG_UIO_PDRV_GENIRQ) || defined(CONFIG_UIO_PDRV_GENIRQ_MODULE) -static struct uio_info gpu2d_platform_data = { - .name = "imx_gpu2d", - .version = "1", - .irq = MXC_INT_GPU2_IRQ, - .open = gpu2d_open, - .release = gpu2d_release, - .mmap = gpu2d_mmap, -}; -#endif - -#if defined(CONFIG_FB_MXC_SYNC_PANEL) || defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE) -struct ccwmx51_lcd_pdata * plcd_platform_data; - -struct ccwmx51_lcd_pdata * ccwmx51_get_display(char *name) -{ -#if defined(CONFIG_CCWMX51_LQ070Y3DG3B) || defined(CONFIG_CCWMX51_CUSTOM) - int i; - - for (i = 0; i < ARRAY_SIZE(lcd_display_list); i++) - if (!strncmp(lcd_display_list[i].fb_pdata.mode->name, - name, strlen(lcd_display_list[i].fb_pdata.mode->name))) - return &lcd_display_list[i]; -#endif - return NULL; -} - -static int __init ccwmx51_init_fb(void) -{ - char *options = NULL, *p; - - if (fb_get_options("displayfb", &options)) - pr_warning("no display information available in command line\n"); - - if (!options) - return -ENODEV; - - if (!strncasecmp(options, "VGA", 3)) { - pr_info("VGA interface is primary\n"); - - /* Get the desired configuration provided by the bootloader */ - if (options[3] != '@') { - pr_info("Video resolution for VGA interface not provided, using default\n"); - /* TODO set default video here */ - } else { - options = &options[4]; - if (((p = strsep (&options, "@")) != NULL) && *p) { - if (!strcmp(p, "640x480x16")) { - strcpy(mx51_fb_data[0].mode_str, "640x480M-16@60"); - } else if (!strcmp(p, "800x600x16")) { - strcpy(mx51_fb_data[0].mode_str, "800x600M-16@60"); - } else if (!strcmp(p, "1024x768x16")) { - strcpy(mx51_fb_data[0].mode_str, "1024x768M-16@60"); - } else if (!strcmp(p, "1280x1024x16")) { - strcpy(mx51_fb_data[0].mode_str, "1280x1024M-16@60"); - } else - pr_warning("Unsuported video resolution: %s, using default\n", p); - } - } - } else { - if ((plcd_platform_data = ccwmx51_get_display(options)) != NULL) { - memcpy(&mx51_fb_data[0], &plcd_platform_data->fb_pdata, sizeof(struct mxc_fb_platform_data)); - plcd_platform_data->vif = 0; /* Select video interface 0 */ - } - } - return 0; -} -device_initcall(ccwmx51_init_fb); -#endif - /*! * Board specific initialization. */ |