static int __init init_modem(void)
{
	struct sromc_bus_cfg *bus_cfg;
	struct sromc_bank_cfg *bnk_cfg;
	struct sromc_timing_cfg *tm_cfg;

	mif_err("System Revision = %d\n", system_rev);

	/*
	 * old: <EXYNOS>--hsic--<HUB>--usb--<CMC221S>
	 * new: <EXYNOS>--hsic--------------<CMC221D>
	 */

	umts_link_pm_data.has_usbhub = false;

#ifdef CONFIG_CMC_MODEM_HSIC_SYSREV
	if (system_rev < CONFIG_CMC_MODEM_HSIC_SYSREV)
		umts_link_pm_data.has_usbhub = true;
#endif

#ifdef CONFIG_MACH_BAFFIN
		umts_link_pm_data.has_usbhub = false;
#endif

	/*
	** Complete modem_data configuration including link_pm_data
	*/
	umts_modem_data.link_pm_data = &umts_link_pm_data,

	/*
	** Configure GPIO pins for the modem
	*/
	config_umts_modem_gpio();
	active_ctl.gpio_initialized = 1;

	/*
	** Configure SROM controller
	*/
	if (sromc_enable() < 0)
		return -1;

	bus_cfg = &c1_sromc_bus_cfg;
	if (sromc_config_demux_gpio(bus_cfg) < 0)
		return -1;

	bnk_cfg = &cmc_idpram_bank_cfg;
	if (sromc_config_csn_gpio(bnk_cfg->csn) < 0)
		return -1;
	sromc_config_access_attr(bnk_cfg->csn, bnk_cfg->attr);

	tm_cfg = &cmc_idpram_timing_cfg[DPRAM_SPEED_LOW];
	sromc_config_access_timing(bnk_cfg->csn, tm_cfg);

	/*
	** Register the modem device
	*/
	platform_device_register(&umts_modem);

	return 0;
}
static int __init init_modem(void)
{
	struct sromc_bus_cfg *bus_cfg;
	struct sromc_bank_cfg *bnk_cfg;
	struct sromc_timing_cfg *tm_cfg;

	mif_err("System Revision = %d\n", system_rev);

#ifdef CONFIG_MACH_C1_USA_ATT
	/* check C1-ATT rev >=0.7
	 * <=rev0.6: <EXYNOS>--hsic--<HUB>--usb--<CMC221S>
	 * >=rev0.7: <EXYNOS>--hsic--------------<CMC221D>
	 */
	if (system_rev >= C1ATT_REV_0_7)
		umts_link_pm_data.has_usbhub = false;
#endif
#ifdef CONFIG_MACH_BAFFIN
		umts_link_pm_data.has_usbhub = false;
#endif
#if defined(CONFIG_MACH_C1_KOR_SKT) || defined(CONFIG_MACH_C1_KOR_KT)
	if (system_rev >= 15)
		umts_link_pm_data.has_usbhub = false;
#endif

	/*
	** Complete modem_data configuration including link_pm_data
	*/
	umts_modem_data.link_pm_data = &umts_link_pm_data,

	/*
	** Configure GPIO pins for the modem
	*/
	config_umts_modem_gpio();
	active_ctl.gpio_initialized = 1;

	/*
	** Configure SROM controller
	*/
	if (sromc_enable() < 0)
		return -1;

	bus_cfg = &c1_sromc_bus_cfg;
	if (sromc_config_demux_gpio(bus_cfg) < 0)
		return -1;

	bnk_cfg = &cmc_idpram_bank_cfg;
	if (sromc_config_csn_gpio(bnk_cfg->csn) < 0)
		return -1;
	sromc_config_access_attr(bnk_cfg->csn, bnk_cfg->attr);

	tm_cfg = &cmc_idpram_timing_cfg[DPRAM_SPEED_LOW];
	sromc_config_access_timing(bnk_cfg->csn, tm_cfg);

	/*
	** Register the modem device
	*/
	platform_device_register(&umts_modem);

	return 0;
}
static int __init tdmb_dev_init(void)
{
#if defined(CONFIG_TDMB_EBI)
	struct sromc_bus_cfg *bus_cfg;
	struct sromc_bank_cfg *bnk_cfg;
	struct sromc_timing_cfg *tm_cfg;

	if (sromc_enable() < 0) {
		printk(KERN_DEBUG "tdmb_dev_init sromc_enable fail\n");
		return -1;
	}

	bus_cfg = &tdmb_sromc_bus_cfg;
	if (sromc_config_demux_gpio(bus_cfg) < 0) {
		printk(KERN_DEBUG "tdmb_dev_init sromc_config_demux_gpio fail\n");
		return -1;
	}

	bnk_cfg = &tdmb_ebi_bank_cfg;
	if (sromc_config_csn_gpio(bnk_cfg->csn) < 0) {
		printk(KERN_DEBUG "tdmb_dev_init sromc_config_csn_gpio fail\n");
		return -1;
	}

	sromc_config_access_attr(bnk_cfg->csn, bnk_cfg->attr);

	tm_cfg = &tdmb_ebi_timing_cfg;
	sromc_config_access_timing(bnk_cfg->csn, tm_cfg);
#endif
#if defined(CONFIG_TDMB_ANT_DET)
	{
	unsigned int tdmb_ant_det_gpio;
	unsigned int tdmb_ant_det_irq;

	s5p_register_gpio_interrupt(GPIO_TDMB_ANT_DET);
	tdmb_ant_det_gpio = GPIO_TDMB_ANT_DET;
	tdmb_ant_det_irq = GPIO_TDMB_IRQ_ANT_DET;
	
	s3c_gpio_cfgpin(tdmb_ant_det_gpio, S3C_GPIO_SFN(0xf));
	s3c_gpio_setpull(tdmb_ant_det_gpio, S3C_GPIO_PULL_NONE);
	tdmb_pdata.gpio_ant_det = tdmb_ant_det_gpio;
	tdmb_pdata.irq_ant_det = tdmb_ant_det_irq;
	}
#endif

	tdmb_set_config_poweroff();

	s5p_register_gpio_interrupt(GPIO_TDMB_INT);
	tdmb_pdata.irq = gpio_to_irq(GPIO_TDMB_INT);
	platform_device_register(&tdmb_device);

	return 0;
}
static void setup_dpram_access_timing(enum dpram_speed speed)
{
	sromc_config_access_timing(cmc_idpram_bank_cfg.csn,
				&cmc_idpram_timing_cfg[speed]);
}
static int __init init_modem(void)
{
	struct sromc_bus_cfg *bus_cfg;
	struct sromc_bank_cfg *bnk_cfg;
	struct sromc_timing_cfg *tm_cfg;

	mif_err("System Revision = %d\n", system_rev);

#ifdef CONFIG_MACH_BAFFIN
	umts_link_pm_data.has_usbhub = false;
#endif
#if defined(CONFIG_SEC_MODEM_C1_LGT)
	if (system_rev >= 11)
		umts_link_pm_data.has_usbhub = false;
#endif

	/*
	** Complete modem_data configuration including link_pm_data
	*/
	umts_modem_data.link_pm_data = &umts_link_pm_data,
	setup_umts_modem_env();
	setup_cdma_modem_env();

	/*
	** Configure GPIO pins for the modem
	*/
	config_umts_modem_gpio();
	config_cdma_modem_gpio();
	active_ctl.gpio_initialized = 1;

	/*
	** Configure SROM controller
	*/
	if (sromc_enable() < 0)
		return -1;

	bus_cfg = &c1lgt_sromc_bus_cfg;
	if (sromc_config_demux_gpio(bus_cfg) < 0)
		return -1;

	bnk_cfg = &cmc_idpram_bank_cfg;
	if (sromc_config_csn_gpio(bnk_cfg->csn) < 0)
		return -1;
	sromc_config_access_attr(bnk_cfg->csn, bnk_cfg->attr);

	tm_cfg = &cmc_idpram_timing_cfg[DPRAM_SPEED_LOW];
	sromc_config_access_timing(bnk_cfg->csn, tm_cfg);

	bnk_cfg = &cbp_edpram_bank_cfg;
	if (sromc_config_csn_gpio(bnk_cfg->csn) < 0)
		return -1;
	sromc_config_access_attr(bnk_cfg->csn, bnk_cfg->attr);

	tm_cfg = &cbp_edpram_timing_cfg;
	sromc_config_access_timing(bnk_cfg->csn, tm_cfg);

	/*
	** Register the modem devices
	*/
	platform_device_register(&umts_modem);
	platform_device_register(&cdma_modem);

	return 0;
}