static int __init modem_8960_init(void) { int ret; if (!cpu_is_msm8960()) return -ENODEV; ret = smsm_state_cb_register(SMSM_MODEM_STATE, SMSM_RESET, smsm_state_cb, 0); if (ret < 0) pr_err("%s: Unable to register SMSM callback! (%d)\n", __func__, ret); ret = request_irq(Q6FW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_fw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6fw watchdog IRQ. (%d)\n", __func__, ret); goto out; } ret = request_irq(Q6SW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_sw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6sw watchdog IRQ. (%d)\n", __func__, ret); disable_irq_nosync(Q6FW_WDOG_EXPIRED_IRQ); goto out; } ret = modem_subsystem_restart_init(); if (ret < 0) { pr_err("%s: Unable to reg with subsystem restart. (%d)\n", __func__, ret); goto out; } ret = modem_debugfs_init(); pr_info("%s: 8960 modem fatal driver init'ed.\n", __func__); out: return ret; }
static int __devinit modemctl_probe(struct platform_device *pdev) { int r = -ENOMEM; struct modemctl *mc; struct modemctl_data *pdata; struct resource *res; pdata = pdev->dev.platform_data; mc = kzalloc(sizeof(*mc), GFP_KERNEL); if (!mc) return -ENOMEM; init_waitqueue_head(&mc->wq); spin_lock_init(&mc->lock); mutex_init(&mc->ctl_lock); mc->irq_bp = platform_get_irq_byname(pdev, "active"); mc->irq_mbox = platform_get_irq_byname(pdev, "onedram"); mc->gpio_phone_active = pdata->gpio_phone_active; mc->gpio_pda_active = pdata->gpio_pda_active; mc->gpio_cp_reset = pdata->gpio_cp_reset; mc->gpio_phone_on = pdata->gpio_phone_on; mc->is_cdma_modem = pdata->is_cdma_modem; if (pdata->num_pdp_contexts) mc->num_pdp_contexts = pdata->num_pdp_contexts; else mc->num_pdp_contexts = 1; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) goto err_free; mc->mmbase = res->start; mc->mmsize = resource_size(res); mc->mmio = ioremap_nocache(mc->mmbase, mc->mmsize); if (!mc->mmio) goto err_free; platform_set_drvdata(pdev, mc); mc->dev.name = "modem_ctl"; mc->dev.minor = MISC_DYNAMIC_MINOR; mc->dev.fops = &modemctl_fops; r = misc_register(&mc->dev); if (r) goto err_ioremap; /* hide control registers from userspace */ mc->mmsize -= 0x800; mc->status = MODEM_OFF; wake_lock_init(&mc->ip_tx_wakelock, WAKE_LOCK_SUSPEND, "modem_ip_tx"); wake_lock_init(&mc->ip_rx_wakelock, WAKE_LOCK_SUSPEND, "modem_ip_rx"); modem_io_init(mc, mc->mmio); r = request_irq(mc->irq_bp, modemctl_bp_irq_handler, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "modemctl_bp", mc); if (r) goto err_irq_bp; r = request_irq(mc->irq_mbox, modemctl_mbox_irq_handler, IRQF_TRIGGER_LOW, "modemctl_mbox", mc); if (r) goto err_irq_mbox; enable_irq_wake(mc->irq_bp); enable_irq_wake(mc->irq_mbox); modem_debugfs_init(mc); return 0; err_irq_mbox: free_irq(mc->irq_mbox, mc); err_irq_bp: free_irq(mc->irq_bp, mc); err_ioremap: iounmap(mc->mmio); err_free: kfree(mc); return r; }
static int __init modem_8960_init(void) { int ret; if (!cpu_is_msm8960() && !cpu_is_msm8930() && !cpu_is_msm9615()) return -ENODEV; ret = smsm_state_cb_register(SMSM_MODEM_STATE, SMSM_RESET, smsm_state_cb, 0); xo1 = msm_xo_get(MSM_XO_TCXO_A0, "modem-8960"); if (IS_ERR(xo1)) { ret = PTR_ERR(xo1); goto out; } xo2 = msm_xo_get(MSM_XO_TCXO_A1, "modem-8960"); if (IS_ERR(xo2)) { ret = PTR_ERR(xo2); goto out; } if (ret < 0) pr_err("%s: Unable to register SMSM callback! (%d)\n", __func__, ret); ret = request_irq(Q6FW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_fw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6fw watchdog IRQ. (%d)\n", __func__, ret); goto out; } ret = request_irq(Q6SW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_sw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6sw watchdog IRQ. (%d)\n", __func__, ret); disable_irq_nosync(Q6FW_WDOG_EXPIRED_IRQ); goto out; } ret = modem_subsystem_restart_init(); if (ret < 0) { pr_err("%s: Unable to reg with subsystem restart. (%d)\n", __func__, ret); goto out; } modemfw_ramdump_dev = create_ramdump_device("modem_fw"); if (!modemfw_ramdump_dev) { pr_err("%s: Unable to create modem fw ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } modemsw_ramdump_dev = create_ramdump_device("modem_sw"); if (!modemsw_ramdump_dev) { pr_err("%s: Unable to create modem sw ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } smem_ramdump_dev = create_ramdump_device("smem"); if (!smem_ramdump_dev) { pr_err("%s: Unable to create smem ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } modem_coredump_dev = create_modem_coredump_device("modem"); if (!modem_coredump_dev) { pr_err("%s: Unable to create modem coredump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } ret = modem_debugfs_init(); pr_info("%s: modem fatal driver init'ed.\n", __func__); out: return ret; }
static int __init modem_8960_init(void) { int ret; if (!cpu_is_msm8960() && !cpu_is_msm8930() && !cpu_is_msm8930aa() && !cpu_is_msm9615() && !cpu_is_msm8627()) return -ENODEV; ret = smsm_state_cb_register(SMSM_MODEM_STATE, SMSM_RESET, smsm_state_cb, 0); if (ret < 0) pr_err("%s: Unable to register SMSM callback! (%d)\n", __func__, ret); ret = request_irq(Q6FW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_fw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6fw watchdog IRQ. (%d)\n", __func__, ret); goto out; } ret = request_irq(Q6SW_WDOG_EXPIRED_IRQ, modem_wdog_bite_irq, IRQF_TRIGGER_RISING, "modem_wdog_sw", NULL); if (ret < 0) { pr_err("%s: Unable to request q6sw watchdog IRQ. (%d)\n", __func__, ret); disable_irq_nosync(Q6FW_WDOG_EXPIRED_IRQ); goto out; } ret = modem_subsystem_restart_init(); if (ret < 0) { pr_err("%s: Unable to reg with subsystem restart. (%d)\n", __func__, ret); goto out; } modemfw_ramdump_dev = create_ramdump_device("modem_fw"); if (!modemfw_ramdump_dev) { pr_err("%s: Unable to create modem fw ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } modemsw_ramdump_dev = create_ramdump_device("modem_sw"); if (!modemsw_ramdump_dev) { pr_err("%s: Unable to create modem sw ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } #if defined(CONFIG_LGE_HANDLE_PANIC) if(smem_ramdump_dev==NULL) #endif smem_ramdump_dev = create_ramdump_device("smem-modem"); if (!smem_ramdump_dev) { pr_err("%s: Unable to create smem ramdump device. (%d)\n", __func__, -ENOMEM); ret = -ENOMEM; goto out; } ret = modem_debugfs_init(); pr_info("%s: modem fatal driver init'ed.\n", __func__); out: return ret; }