static void __init mx28_init_mmc(void) { struct platform_device *pdev; if (mxs_get_type(PINID_SSP0_CMD) == PIN_FUN1) { pdev = mxs_get_device("mxs-mmc", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mmc0_resource; pdev->num_resources = ARRAY_SIZE(mmc0_resource); pdev->dev.platform_data = &mmc0_data; mxs_add_device(pdev, 2); } #if 0 if (mxs_get_type(PINID_GPMI_RDY1) == PIN_FUN2) { pdev = mxs_get_device("mxs-mmc", 1); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mmc1_resource; pdev->num_resources = ARRAY_SIZE(mmc1_resource); pdev->dev.platform_data = &mmc1_data; mxs_add_device(pdev, 2); } #endif }
static void __init mx28_init_fec(void) { struct platform_device *pdev; struct mxs_dev_lookup *lookup; int i; lookup = mxs_get_devices("mxs-fec"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; switch (pdev->id) { case 0: pdev->resource = fec0_resource; pdev->num_resources = ARRAY_SIZE(fec0_resource); pdev->dev.platform_data = &fec_pdata0; break; case 1: pdev->resource = fec1_resource; pdev->num_resources = ARRAY_SIZE(fec1_resource); pdev->dev.platform_data = &fec_pdata1; break; default: return; } mxs_add_device(pdev, 2); } }
static void __init mx28_init_i2c(void) { int i; struct mxs_dev_lookup *lookup; struct platform_device *pdev; lookup = mxs_get_devices("mxs-i2c"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; switch (pdev->id) { #ifdef CONFIG_I2C_MXS_SELECT0 case 0: pdev->resource = i2c0_resource; pdev->num_resources = ARRAY_SIZE(i2c0_resource); pdev->dev.platform_data = &i2c0_platdata; break; #endif #ifdef CONFIG_I2C_MXS_SELECT1 case 1: pdev->resource = i2c1_resource; pdev->num_resources = ARRAY_SIZE(i2c1_resource); pdev->dev.platform_data = &i2c1_platdata; break; #endif default: return; } mxs_add_device(pdev, 2); } }
void __init mx23_init_spdif(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-spdif", 0); if (pdev == NULL || IS_ERR(pdev)) return; mxs_add_device(pdev, 3); }
static void easy283_init_pwm(void) { int i; struct mxs_dev_lookup *plookup; struct platform_device *pdev; plookup = mxs_get_devices("easy283-pwm"); if (plookup == NULL || IS_ERR(plookup)) return; for (i = 0; i < plookup->size; i++) { pdev = plookup->pdev + i; switch (pdev->id) { case 4: printk("add device pwm chanel 4\r\n"); pdev->resource = NULL; pdev->num_resources = 0; pdev->dev.platform_data = &easy283_pwm4_platdata; break; case 7: pdev->resource = NULL; pdev->num_resources = 0; printk("add device pwm chanel 7\r\n"); pdev->dev.platform_data = &easy283_pwm7_platdata; break; default: break; } mxs_add_device(pdev, 3); } }
static void __init mx28_init_l2switch(void) { struct platform_device *pdev; struct switch_platform_data *pswitch; struct fec_platform_data *pfec; u32 val; __raw_writel(BM_OCOTP_CTRL_RD_BANK_OPEN, IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL_SET); while (BM_OCOTP_CTRL_BUSY & __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL)) udelay(10); pdev = mxs_get_device("mxs-l2switch", 0); if (pdev == NULL || IS_ERR(pdev)) return; val = __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CUSTn(pdev->id)); pdev->resource = l2switch_resources; pdev->num_resources = ARRAY_SIZE(l2switch_resources); pdev->dev.platform_data = &l2switch_data; pswitch = (struct switch_platform_data *)pdev->dev.platform_data; pfec = pswitch->fec_enet; pfec->mac[0] = 0x00; pfec->mac[1] = 0x04; pfec->mac[2] = (val >> 24) & 0xFF; pfec->mac[3] = (val >> 16) & 0xFF; pfec->mac[4] = (val >> 8) & 0xFF; pfec->mac[5] = (val >> 0) & 0xFF; mxs_add_device(pdev, 2); }
void __init mx23_init_auart(void) { int i; struct mxs_dev_lookup *plookup; struct platform_device *pdev; plookup = mxs_get_devices("mxs-auart"); if (plookup == NULL || IS_ERR(plookup)) return; for (i = 0; i < plookup->size; i++) { pdev = plookup->pdev + i; switch (pdev->id) { #ifdef CONFIG_MXS_AUART1_DEVICE_ENABLE case 1: pdev->resource = auart1_resource; pdev->num_resources = ARRAY_SIZE(auart1_resource); pdev->dev.platform_data = &mxs_auart1_platdata; break; #endif #ifdef CONFIG_MXS_AUART2_DEVICE_ENABLE case 2: pdev->resource = auart2_resource; pdev->num_resources = ARRAY_SIZE(auart2_resource); pdev->dev.platform_data = &mxs_auart2_platdata; break; #endif default: break; } mxs_add_device(pdev, 3); } }
static void __init mx23_canopus_init_adc(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-adc", 0); if (pdev == NULL) return; mxs_add_device(pdev, 3); }
static void __init imx233_olinuxino_init_adc(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-adc", 0); if (pdev == NULL) return; mxs_add_device(pdev, 3); }
static void __init mx28_init_pxp(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-pxp", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = pxp_resource; pdev->num_resources = ARRAY_SIZE(pxp_resource); mxs_add_device(pdev, 3); }
void __init mx28_init_audio(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-sgtl5000", 0); if (pdev == NULL || IS_ERR(pdev)) return; mxs_add_device(pdev, 3); audio_plat_data.saif_mclock = clk_get(NULL, "saif.0"); audio_clk_init(audio_plat_data.saif_mclock); pdev->dev.platform_data = &audio_plat_data; }
static inline void mx28_init_flexcan(void) { struct platform_device *pdev; pdev = mxs_get_device("FlexCAN", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = flexcan0_resources; pdev->num_resources = ARRAY_SIZE(flexcan0_resources); pdev->dev.platform_data = &flexcan_data[0]; mxs_add_device(pdev, 2); pdev = mxs_get_device("FlexCAN", 1); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = flexcan1_resources; pdev->num_resources = ARRAY_SIZE(flexcan1_resources); pdev->dev.platform_data = &flexcan_data[1]; mxs_add_device(pdev, 2); }
static void __init mx23_init_wdt(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-wdt", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = &mx23_wdt_res; pdev->num_resources = 1; mxs_add_device(pdev, 3); }
static void __init mx23_init_duart(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-duart", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = duart_resource; pdev->num_resources = ARRAY_SIZE(duart_resource); mxs_add_device(pdev, 3); }
static void __init mx28_init_rtc(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-rtc", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mx28_rtc_res; pdev->num_resources = ARRAY_SIZE(mx28_rtc_res); mxs_add_device(pdev, 3); }
static void mx28_init_battery(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-battery", 0); if (pdev) { pdev->resource = battery_resource, pdev->num_resources = ARRAY_SIZE(battery_resource), pdev->dev.platform_data = &battery_data; mxs_add_device(pdev, 3); } }
static void mx23_init_otp(void) { struct platform_device *pdev; pdev = mxs_get_device("ocotp", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->dev.platform_data = &otp_data; pdev->resource = NULL; pdev->num_resources = 0; mxs_add_device(pdev, 3); }
static void mx23_init_persistent(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-persistent", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->dev.platform_data = &mx23_persistent_data; pdev->resource = mx23_persistent_res, pdev->num_resources = ARRAY_SIZE(mx23_persistent_res), mxs_add_device(pdev, 3); }
static void __init mx23_init_kbd(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-kbd", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mx23_kbd_res; pdev->num_resources = ARRAY_SIZE(mx23_kbd_res); pdev->dev.platform_data = &mxs_kbd_data; mxs_add_device(pdev, 3); }
static void __init mx23_init_dcp(void) { struct platform_device *pdev; pdev = mxs_get_device("dcp", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = dcp_resources; pdev->num_resources = ARRAY_SIZE(dcp_resources); mxs_add_device(pdev, 3); }
static void __init mx23_init_lcdif(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-fb", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = framebuffer_resource; pdev->num_resources = ARRAY_SIZE(framebuffer_resource); pdev->dev.platform_data = &mxs_framebuffer_pdata; mxs_add_device(pdev, 3); }
static void __init mx28_init_l2switch(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-l2switch", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = l2switch_resources; pdev->num_resources = ARRAY_SIZE(l2switch_resources); pdev->dev.platform_data = &l2switch_data; mxs_add_device(pdev, 2); }
static void __init mx23_init_gpmi_nfc(void) { struct platform_device *pdev; pdev = mxs_get_device(GPMI_NFC_DRIVER_NAME, 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->dev.platform_data = &gpmi_nfc_platform_data; pdev->resource = gpmi_nfc_resources; pdev->num_resources = ARRAY_SIZE(gpmi_nfc_resources); mxs_add_device(pdev, 1); }
static void __init mx28_init_mmc(void) { struct platform_device *pdev; if (mxs_get_type(PINID_SSP0_CMD) == PIN_FUN1) { pdev = mxs_get_device("mxs-mmc", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mmc0_resource; pdev->num_resources = ARRAY_SIZE(mmc0_resource); pdev->dev.platform_data = &mmc0_data; mxs_add_device(pdev, 2); } if (mxs_get_type(PINID_GPMI_RDY1) == PIN_FUN2) { pdev = mxs_get_device("mxs-mmc", 1); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mmc1_resource; pdev->num_resources = ARRAY_SIZE(mmc1_resource); pdev->dev.platform_data = &mmc1_data; mxs_add_device(pdev, 2); } #if defined(CONFIG_BCMDHD_WEXT) && defined(CONFIG_iMX_287) && !defined(CONFIG_SPI_MXS) /*---------------modified by luozhizhuo for imx287 wifi------------*/ if (mxs_get_type(PINID_SSP0_DATA6) == PIN_FUN2) { pdev = mxs_get_device("mxs-mmc",2); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mmc2_resource; pdev->num_resources = ARRAY_SIZE(mmc2_resource); pdev->dev.platform_data = &mmc2_data; mxs_add_device(pdev, 2); } #endif }
static void __init mx23_init_mmc(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-mmc", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = mx23_mmc0_resource; pdev->num_resources = ARRAY_SIZE(mx23_mmc0_resource); pdev->dev.platform_data = &mx23_mmc0_data; mxs_add_device(pdev, 2); }
static void __init mx23_init_viim(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs_viim", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = viim_resources; pdev->num_resources = ARRAY_SIZE(viim_resources); mxs_add_device(pdev, 2); }
static void __init mx23_canopus_init_leds(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-leds", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = &mx23_canopus_led_res; pdev->num_resources = 1; pdev->dev.platform_data = &mx23_canopus_led_data; mxs_add_device(pdev, 3); }
static void __init mx28_init_spi(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-spi", 0); if (pdev == NULL || IS_ERR(pdev)) return; pdev->resource = ssp2_resources; pdev->num_resources = ARRAY_SIZE(ssp2_resources); pdev->dev.platform_data = &spi_data; mxs_add_device(pdev, 3); }
static void __init mx28_init_fec(void) { struct platform_device *pdev; struct mxs_dev_lookup *lookup; struct fec_platform_data *pfec; int i; u32 val; __raw_writel(BM_OCOTP_CTRL_RD_BANK_OPEN, IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL_SET); while (BM_OCOTP_CTRL_BUSY & __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CTRL)) udelay(10); lookup = mxs_get_devices("mxs-fec"); if (lookup == NULL || IS_ERR(lookup)) return; for (i = 0; i < lookup->size; i++) { pdev = lookup->pdev + i; val = __raw_readl(IO_ADDRESS(OCOTP_PHYS_ADDR) + HW_OCOTP_CUSTn(pdev->id)); switch (pdev->id) { case 0: pdev->resource = fec0_resource; pdev->num_resources = ARRAY_SIZE(fec0_resource); pdev->dev.platform_data = &fec_pdata0; break; case 1: pdev->resource = fec1_resource; pdev->num_resources = ARRAY_SIZE(fec1_resource); pdev->dev.platform_data = &fec_pdata1; break; default: return; } pfec = (struct fec_platform_data *)pdev->dev.platform_data; pfec->mac[0] = 0x00; pfec->mac[1] = 0x04; pfec->mac[2] = (val >> 24) & 0xFF; pfec->mac[3] = (val >> 16) & 0xFF; pfec->mac[4] = (val >> 8) & 0xFF; pfec->mac[5] = (val >> 0) & 0xFF; mxs_add_device(pdev, 2); } }
static void __init mx28_init_spi(void) { struct platform_device *pdev; pdev = mxs_get_device("mxs-spi",0); if (pdev == NULL || IS_ERR(pdev)) return; /* modefy by zhuguojun 287 280 283是用spi3*/ #if defined(CONFIG_iMX_283) || defined(CONFIG_iMX_280) || defined(CONFIG_iMX_287) pdev->resource = ssp3_resources; pdev->num_resources = ARRAY_SIZE(ssp3_resources); pdev->dev.platform_data = &spi3_data; #else /* modefy by zhuguojun */ pdev->resource = ssp2_resources; pdev->num_resources = ARRAY_SIZE(ssp2_resources); pdev->dev.platform_data = &spi2_data; #endif mxs_add_device(pdev, 3); }