/*! * Board specific initialization. */ static void __init mx6_evk_init(void) { u32 i; mxc_iomux_v3_setup_multiple_pads(mx6sl_brd_pads, ARRAY_SIZE(mx6sl_brd_pads)); elan_ts_init(); gp_reg_id = mx6sl_evk_dvfscore_data.reg_id; soc_reg_id = mx6sl_evk_dvfscore_data.soc_id; imx6q_add_imx_snvs_rtc(); imx6q_add_imx_i2c(0, &mx6_evk_i2c0_data); imx6q_add_imx_i2c(1, &mx6_evk_i2c1_data); i2c_register_board_info(0, mxc_i2c0_board_info, ARRAY_SIZE(mxc_i2c0_board_info)); /* setting sii902x address when hdmi enabled */ if (hdmi_enabled) { for (i = 0; i < ARRAY_SIZE(mxc_i2c1_board_info); i++) { if (!strcmp(mxc_i2c1_board_info[i].type, "sii902x")) { mxc_i2c1_board_info[i].addr = 0x39; break; } } } i2c_register_board_info(1, mxc_i2c1_board_info, ARRAY_SIZE(mxc_i2c1_board_info)); /* only camera on I2C3, that's why we can do so */ if (csi_enabled == 1) { mxc_register_device(&csi_v4l2_devices, NULL); imx6q_add_imx_i2c(2, &mx6_evk_i2c2_data); i2c_register_board_info(2, mxc_i2c2_board_info, ARRAY_SIZE(mxc_i2c2_board_info)); } /* SPI */ imx6q_add_ecspi(0, &mx6_evk_spi_data); spi_device_init(); mx6sl_evk_init_pfuze100(0); imx6q_add_anatop_thermal_imx(1, &mx6sl_anatop_thermal_data); mx6_evk_init_uart(); /* get enet tx reference clk from FEC_REF_CLK pad. * GPR1[14] = 0, GPR1[18:17] = 00 */ mxc_iomux_set_gpr_register(1, 14, 1, 0); mxc_iomux_set_gpr_register(1, 17, 2, 0); imx6_init_fec(fec_data); platform_device_register(&evk_vmmc_reg_devices); imx6q_add_sdhci_usdhc_imx(1, &mx6_evk_sd2_data); imx6q_add_sdhci_usdhc_imx(0, &mx6_evk_sd1_data); imx6q_add_sdhci_usdhc_imx(2, &mx6_evk_sd3_data); mx6_evk_init_usb(); imx6q_add_otp(); imx6q_add_mxc_pwm(0); imx6q_add_mxc_pwm_backlight(0, &mx6_evk_pwm_backlight_data); if (hdmi_enabled) { imx6dl_add_imx_elcdif(&hdmi_fb_data[0]); } else { imx6dl_add_imx_elcdif(&wvga_fb_data[0]); gpio_request(MX6_BRD_LCD_PWR_EN, "elcdif-power-on"); gpio_direction_output(MX6_BRD_LCD_PWR_EN, 1); mxc_register_device(&lcd_wvga_device, NULL); } imx6dl_add_imx_pxp(); imx6dl_add_imx_pxp_client(); mxc_register_device(&max17135_sensor_device, NULL); setup_spdc(); if (csi_enabled) { imx6sl_add_fsl_csi(); } else { if (!spdc_sel) imx6dl_add_imx_epdc(&epdc_data); else imx6sl_add_imx_spdc(&spdc_data); } imx6q_add_dvfs_core(&mx6sl_evk_dvfscore_data); imx6q_init_audio(); /* uart2 for bluetooth */ #ifdef SXSDMAN_BLUETOOTH_ENABLE if (uart4_enabled) uart4_init(); #else if (uart2_enabled) uart2_init(); #endif mxc_register_device(&mxc_bt_rfkill, &mxc_bt_rfkill_data); imx6q_add_viim(); imx6q_add_imx2_wdt(0, NULL); imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); imx6sl_add_imx_keypad(&mx6sl_evk_map_data); imx6q_add_busfreq(); imx6sl_add_dcp(); imx6sl_add_rngb(); imx6sl_add_imx_pxp_v4l2(); mxc_spdif_data.spdif_core_clk = clk_get_sys("mxc_spdif.0", NULL); clk_put(mxc_spdif_data.spdif_core_clk); imx6q_add_spdif(&mxc_spdif_data); imx6q_add_spdif_dai(); imx6q_add_spdif_audio_device(); imx6q_add_perfmon(0); imx6q_add_perfmon(1); imx6q_add_perfmon(2); /* Register charger chips */ platform_device_register(&evk_max8903_charger_1); pm_power_off = mx6_snvs_poweroff; imx6q_add_pm_imx(0, &mx6sl_evk_pm_data); if (imx_ion_data.heaps[0].size) platform_device_register_resndata(NULL, "ion-mxc", 0, NULL, 0, \ &imx_ion_data, sizeof(imx_ion_data) + sizeof(struct ion_platform_heap)); }
/*! * Board specific initialization. */ static void __init mx6_evk_init(void) { mxc_iomux_v3_setup_multiple_pads(mx6sl_brd_pads, ARRAY_SIZE(mx6sl_brd_pads)); elan_ts_init(); #ifdef CONFIG_MX6_INTER_LDO_BYPASS gp_reg_id = mx6sl_evk_dvfscore_data.reg_id; soc_reg_id = mx6sl_evk_dvfscore_data.soc_id; #else gp_reg_id = mx6sl_evk_dvfscore_data.reg_id; soc_reg_id = mx6sl_evk_dvfscore_data.soc_id; pu_reg_id = mx6sl_evk_dvfscore_data.pu_id; mx6_cpu_regulator_init(); #endif imx6q_add_imx_snvs_rtc(); imx6q_add_imx_i2c(0, &mx6_evk_i2c0_data); imx6q_add_imx_i2c(1, &mx6_evk_i2c1_data); i2c_register_board_info(0, mxc_i2c0_board_info, ARRAY_SIZE(mxc_i2c0_board_info)); i2c_register_board_info(1, mxc_i2c1_board_info, ARRAY_SIZE(mxc_i2c1_board_info)); imx6q_add_imx_i2c(2, &mx6_evk_i2c2_data); i2c_register_board_info(2, mxc_i2c2_board_info, ARRAY_SIZE(mxc_i2c2_board_info)); /* SPI */ imx6q_add_ecspi(0, &mx6_evk_spi_data); spi_device_init(); mx6sl_evk_init_pfuze100(0); imx6q_add_anatop_thermal_imx(1, &mx6sl_anatop_thermal_data); mx6_evk_init_uart(); /* get enet tx reference clk from FEC_REF_CLK pad. * GPR1[14] = 0, GPR1[18:17] = 00 */ mxc_iomux_set_gpr_register(1, 14, 1, 0); mxc_iomux_set_gpr_register(1, 17, 2, 0); imx6_init_fec(fec_data); platform_device_register(&evk_vmmc_reg_devices); imx6q_add_sdhci_usdhc_imx(0, &mx6_evk_sd1_data); imx6q_add_sdhci_usdhc_imx(1, &mx6_evk_sd2_data); imx6q_add_sdhci_usdhc_imx(2, &mx6_evk_sd3_data); mx6_evk_init_usb(); imx6q_add_otp(); imx6q_add_mxc_pwm(0); imx6q_add_mxc_pwm_backlight(0, &mx6_evk_pwm_backlight_data); imx6dl_add_imx_elcdif(&fb_data[0]); gpio_request(MX6_BRD_LCD_PWR_EN, "elcdif-power-on"); gpio_direction_output(MX6_BRD_LCD_PWR_EN, 1); mxc_register_device(&lcd_wvga_device, NULL); imx6dl_add_imx_pxp(); imx6dl_add_imx_pxp_client(); mxc_register_device(&max17135_sensor_device, NULL); setup_spdc(); if (!spdc_sel) imx6dl_add_imx_epdc(&epdc_data); else imx6sl_add_imx_spdc(&spdc_data); imx6q_add_dvfs_core(&mx6sl_evk_dvfscore_data); imx6q_init_audio(); imx6q_add_viim(); imx6q_add_imx2_wdt(0, NULL); imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); imx6sl_add_imx_keypad(&mx6sl_evk_map_data); imx6q_add_busfreq(); imx6sl_add_dcp(); imx6sl_add_rngb(); imx6sl_add_imx_pxp_v4l2(); imx6q_add_perfmon(0); imx6q_add_perfmon(1); imx6q_add_perfmon(2); /* Register charger chips */ platform_device_register(&evk_max8903_charger_1); pm_power_off = mx6_snvs_poweroff; }
/*! * Board specific initialization. */ static void __init mx6_evk_init(void) { u32 i; mxc_iomux_v3_setup_multiple_pads(mx6sl_brd_pads, ARRAY_SIZE(mx6sl_brd_pads)); #ifdef CONFIG_MX6_INTER_LDO_BYPASS gp_reg_id = mx6sl_evk_dvfscore_data.reg_id; soc_reg_id = mx6sl_evk_dvfscore_data.soc_id; #else gp_reg_id = mx6sl_evk_dvfscore_data.reg_id; soc_reg_id = mx6sl_evk_dvfscore_data.soc_id; pu_reg_id = mx6sl_evk_dvfscore_data.pu_id; mx6_cpu_regulator_init(); #endif imx6q_add_imx_snvs_rtc(); imx6q_add_imx_i2c(0, &mx6_evk_i2c0_data); imx6q_add_imx_i2c(1, &mx6_evk_i2c1_data); /* setting sii902x address when hdmi enabled */ switch (display_panel_mode) { case PANEL_MODE_EINK: for (i = 0; i < ARRAY_SIZE(mxc_i2c0_board_info); i++) if (!strcmp(mxc_i2c0_board_info[i].type, "max17135")) mxc_i2c0_board_info[i].addr = 0x48; for (i = 0; i < ARRAY_SIZE(mxc_i2c0_board_info); i++) if (!strcmp(mxc_i2c0_board_info[i].type, "elan-touch")) mxc_i2c0_board_info[i].addr = 0x10; elan_ts_init(); mxc_register_device(&max17135_sensor_device, NULL); setup_spdc(); if (!spdc_sel) imx6dl_add_imx_epdc(&epdc_data); else imx6sl_add_imx_spdc(&spdc_data); break; case PANEL_MODE_HDMI: for (i = 0; i < ARRAY_SIZE(mxc_i2c1_board_info); i++) if (!strcmp(mxc_i2c1_board_info[i].type, "sii902x")) mxc_i2c1_board_info[i].addr = 0x39; #ifdef CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF//[ imx6dl_add_imx_elcdif(&hdmi_fb_data[0]); #endif //]CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF mxc_spdif_data.spdif_core_clk = clk_get_sys("mxc_spdif.0", NULL); clk_put(mxc_spdif_data.spdif_core_clk); imx6q_add_spdif(&mxc_spdif_data); imx6q_add_spdif_dai(); imx6q_add_spdif_audio_device(); break; case PANEL_MODE_LCD: #ifdef CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF//[ imx6dl_add_imx_elcdif(&wvga_fb_data[0]); #endif //]CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF gpio_request(MX6_BRD_LCD_PWR_EN, "elcdif-power-on"); gpio_direction_output(MX6_BRD_LCD_PWR_EN, 1); mxc_register_device(&lcd_wvga_device, NULL); break; default: pr_err("Error display_panel_mode\n"); } i2c_register_board_info(0, mxc_i2c0_board_info, ARRAY_SIZE(mxc_i2c0_board_info)); i2c_register_board_info(1, mxc_i2c1_board_info, ARRAY_SIZE(mxc_i2c1_board_info)); /* only camera on I2C2, that's why we can do so */ if (csi_enabled == 1) { mxc_register_device(&csi_v4l2_devices, NULL); imx6q_add_imx_i2c(2, &mx6_evk_i2c2_data); i2c_register_board_info(2, mxc_i2c2_board_info, ARRAY_SIZE(mxc_i2c2_board_info)); } /* SPI */ imx6q_add_ecspi(0, &mx6_evk_spi_data); spi_device_init(); mx6sl_evk_init_pfuze100(0); imx6q_add_anatop_thermal_imx(1, &mx6sl_anatop_thermal_data); mx6_evk_init_uart(); /* get enet tx reference clk from FEC_REF_CLK pad. * GPR1[14] = 0, GPR1[18:17] = 00 */ mxc_iomux_set_gpr_register(1, 14, 1, 0); mxc_iomux_set_gpr_register(1, 17, 2, 0); imx6_init_fec(fec_data); platform_device_register(&evk_vmmc_reg_devices); imx6q_add_sdhci_usdhc_imx(1, &mx6_evk_sd2_data); imx6q_add_sdhci_usdhc_imx(0, &mx6_evk_sd1_data); imx6q_add_sdhci_usdhc_imx(2, &mx6_evk_sd3_data); mx6_evk_init_usb(); imx6q_add_otp(); imx6q_add_mxc_pwm(0); imx6q_add_mxc_pwm_backlight(0, &mx6_evk_pwm_backlight_data); #ifdef CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF//[ imx6dl_add_imx_elcdif(&wvga_fb_data[0]); #endif //] CONFIG_IMX_HAVE_PLATFORM_IMX_ELCDIF gpio_request(MX6_BRD_LCD_PWR_EN, "elcdif-power-on"); gpio_direction_output(MX6_BRD_LCD_PWR_EN, 1); mxc_register_device(&lcd_wvga_device, NULL); imx6dl_add_imx_pxp(); imx6dl_add_imx_pxp_client(); if (csi_enabled) { imx6sl_add_fsl_csi(); } imx6q_add_dvfs_core(&mx6sl_evk_dvfscore_data); imx6q_init_audio(); /* uart2 for bluetooth */ if (uart2_enabled) uart2_init(); //mxc_register_device(&mxc_bt_rfkill, &mxc_bt_rfkill_data); imx6q_add_viim(); imx6q_add_imx2_wdt(0, NULL); imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); imx6sl_add_device_buttons(); imx6sl_add_imx_keypad(&mx6sl_evk_map_data); imx6q_add_busfreq(); imx6sl_add_dcp(); imx6sl_add_rngb(); imx6sl_add_imx_pxp_v4l2(); imx6q_add_perfmon(0); imx6q_add_perfmon(1); imx6q_add_perfmon(2); /* Register charger chips */ platform_device_register(&evk_max8903_charger_1); pm_power_off = mx6_snvs_poweroff; }