static int baseband_init(void) { int irq; int ret; ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios)); if (ret) return ret; /* enable pull-up for ULPI STP */ tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_ULPI_STP, TEGRA_PUPD_PULL_UP); /* enable pull-up for MDM2AP_ACK2 */ tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_GPIO_PV0, TEGRA_PUPD_PULL_UP); tegra_gpio_enable(MODEM_PWR_ON); tegra_gpio_enable(MODEM_RESET); tegra_gpio_enable(AP2MDM_ACK2); tegra_gpio_enable(BB_RST_OUT); tegra_gpio_enable(AP2MDM_ACK); tegra_gpio_enable(MDM2AP_ACK); tegra_gpio_enable(TEGRA_GPIO_PY3); tegra_gpio_enable(TEGRA_GPIO_PO1); tegra_gpio_enable(TEGRA_GPIO_PO2); /* export GPIO for user space access through sysfs */ gpio_export(MODEM_PWR_ON, false); /* phy init */ tegra_null_ulpi_init(); wake_lock_init(&mdm_wake_lock, WAKE_LOCK_SUSPEND, "mdm_lock"); /* enable IRQ for BB_RST_OUT */ irq = gpio_to_irq(BB_RST_OUT); ret = request_threaded_irq(irq, NULL, mdm_start_thread, IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, "mdm_start", NULL); if (ret < 0) { pr_err("%s: request_threaded_irq error\n", __func__); return ret; } ret = enable_irq_wake(irq); if (ret) { pr_err("%s: enable_irq_wake error\n", __func__); free_irq(irq, NULL); return ret; } return 0; }
int __init whistler_baseband_ph450_init(void) { int ret; tegra_pinmux_config_table(whistler_null_ulpi_pinmux, ARRAY_SIZE(whistler_null_ulpi_pinmux)); ret = rainbow_570_init(); if (ret) { pr_err("modem init failed\n"); return ret; } tegra_null_ulpi_init(); return 0; }