static void __init qrd7627a_otg_gadget(void) { if (cpu_is_msm8625() || cpu_is_msm8625q()) { msm_otg_pdata.swfi_latency = msm8625_pm_data [MSM_PM_SLEEP_MODE_WAIT_FOR_INTERRUPT].latency; msm8625_device_otg.dev.platform_data = &msm_otg_pdata; msm8625_device_gadget_peripheral.dev.platform_data = &msm_gadget_pdata; } else { msm_otg_pdata.swfi_latency = msm7627a_pm_data [MSM_PM_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT].latency; msm_device_otg.dev.platform_data = &msm_otg_pdata; msm_device_gadget_peripheral.dev.platform_data = &msm_gadget_pdata; } }
static void __init msm_qrd_init(void) { msm7x2x_misc_init(); msm7627a_init_regulators(); msmqrd_adsp_add_pdev(); if (cpu_is_msm8625() || cpu_is_msm8625q()) msm8625_device_i2c_init(); else msm7627a_device_i2c_init(); /* uart1dm*/ qrd7627a_uart1dm_config(); /*OTG gadget*/ qrd7627a_otg_gadget(); msm_add_footswitch_devices(); add_platform_devices(); /* Ensure ar6000pm device is registered before MMC/SDC */ msm_qrd_init_ar6000pm(); msm7627a_init_mmc(); #ifdef CONFIG_USB_EHCI_MSM_72K msm7627a_init_host(); #endif msm_pm_init(); msm_pm_register_irqs(); msm_fb_add_devices(); if (machine_is_qrd_skud_prime()) i2c_register_board_info(2, i2c2_info, ARRAY_SIZE(i2c2_info)); #if defined(CONFIG_BT) && defined(CONFIG_MARIMBA_CORE) msm7627a_bt_power_init(); #endif msm7627a_camera_init(); qrd7627a_add_io_devices(); msm7x25a_kgsl_3d0_init(); msm8x25_kgsl_3d0_init(); }
static void __init msm8625_device_i2c_init(void) { int i, rc; msm8625_gsbi0_qup_i2c_device.dev.platform_data = &msm_gsbi0_qup_i2c_pdata; msm8625_gsbi1_qup_i2c_device.dev.platform_data = &msm_gsbi1_qup_i2c_pdata; if (machine_is_qrd_skud_prime() || cpu_is_msm8625q()) { for (i = 0 ; i < ARRAY_SIZE(msm8625q_i2c_gpio_config); i++) { rc = gpio_tlmm_config( msm8625q_i2c_gpio_config[i].gpio_cfg, GPIO_CFG_ENABLE); if (rc) pr_err("I2C-gpio tlmm config failed\n"); } rc = platform_device_register(&msm8625q_i2c_gpio); if (rc) pr_err("%s: could not register i2c-gpio device: %d\n", __func__, rc); } }
static void msmqrd_adsp_add_pdev(void) { int rc = 0; struct rpc_board_dev *rpc_adsp_pdev; rpc_adsp_pdev = kzalloc(sizeof(struct rpc_board_dev), GFP_KERNEL); if (rpc_adsp_pdev == NULL) { pr_err("%s: Memory Allocation failure\n", __func__); return; } rpc_adsp_pdev->prog = ADSP_RPC_PROG; if (cpu_is_msm8625() || cpu_is_msm8625q()) rpc_adsp_pdev->pdev = msm8625_device_adsp; else rpc_adsp_pdev->pdev = msm_adsp_device; rc = msm_rpc_add_board_dev(rpc_adsp_pdev, 1); if (rc < 0) { pr_err("%s: return val: %d\n", __func__, rc); kfree(rpc_adsp_pdev); } }
static void __init msm7x2x_init(void) { msm7x2x_misc_init(); /* Initialize regulators first so that other devices can use them */ msm7x27a_init_regulators(); msm_adsp_add_pdev(); if (cpu_is_msm8625() || cpu_is_msm8625q()) msm8625_device_i2c_init(); else msm7x27a_device_i2c_init(); msm7x27a_init_ebi2(); msm7x27a_uartdm_config(); msm7x27a_otg_gadget(); msm7x27a_cfg_smsc911x(); msm7x27a_add_footswitch_devices(); msm7x27a_add_platform_devices(); /* Ensure ar6000pm device is registered before MMC/SDC */ msm7x27a_init_ar6000pm(); msm7627a_init_mmc(); msm_fb_add_devices(); msm7x2x_init_host(); msm7x27a_pm_init(); register_i2c_devices(); #if defined(CONFIG_BT) && defined(CONFIG_MARIMBA_CORE) msm7627a_bt_power_init(); #endif msm7627a_camera_init(); msm7627a_add_io_devices(); /*7x25a kgsl initializations*/ msm7x25a_kgsl_3d0_init(); /*8x25 kgsl initializations*/ msm8x25_kgsl_3d0_init(); }
static int __init smd_tty_init(void) { int ret; int n; int idx; smd_tty_driver = alloc_tty_driver(MAX_SMD_TTYS); if (smd_tty_driver == 0) return -ENOMEM; smd_tty_driver->owner = THIS_MODULE; smd_tty_driver->driver_name = "smd_tty_driver"; smd_tty_driver->name = "smd"; smd_tty_driver->major = 0; smd_tty_driver->minor_start = 0; smd_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; smd_tty_driver->subtype = SERIAL_TYPE_NORMAL; smd_tty_driver->init_termios = tty_std_termios; smd_tty_driver->init_termios.c_iflag = 0; smd_tty_driver->init_termios.c_oflag = 0; smd_tty_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; smd_tty_driver->init_termios.c_lflag = 0; smd_tty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(smd_tty_driver, &smd_tty_ops); ret = tty_register_driver(smd_tty_driver); if (ret) { put_tty_driver(smd_tty_driver); pr_err("%s: driver registration failed %d\n", __func__, ret); return ret; } for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_configs[n].dev_name == NULL) smd_configs[n].dev_name = smd_configs[n].port_name; if (idx == DS_IDX) { int legacy_ds = 0; legacy_ds |= cpu_is_msm7x01() || cpu_is_msm7x25(); legacy_ds |= cpu_is_msm7x27() || cpu_is_msm7x30() || cpu_is_msm8625() ||cpu_is_msm8625q(); legacy_ds |= cpu_is_qsd8x50() || cpu_is_msm8x55(); legacy_ds |= cpu_is_msm8x60() && (socinfo_get_platform_subtype() == 0x0); if (!legacy_ds) continue; } tty_register_device(smd_tty_driver, idx, 0); init_completion(&smd_tty[idx].ch_allocated); smd_tty[idx].driver.probe = smd_tty_dummy_probe; smd_tty[idx].driver.driver.name = smd_configs[n].dev_name; smd_tty[idx].driver.driver.owner = THIS_MODULE; spin_lock_init(&smd_tty[idx].reset_lock); smd_tty[idx].is_open = 0; setup_timer(&smd_tty[idx].buf_req_timer, buf_req_retry, (unsigned long)&smd_tty[idx]); init_waitqueue_head(&smd_tty[idx].ch_opened_wait_queue); ret = platform_driver_register(&smd_tty[idx].driver); if (ret) { pr_err("%s: init failed %d (%d)\n", __func__, idx, ret); smd_tty[idx].driver.probe = NULL; goto out; } smd_tty[idx].smd = &smd_configs[n]; } INIT_DELAYED_WORK(&loopback_work, loopback_probe_worker); return 0; out: for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_tty[idx].driver.probe) { platform_driver_unregister(&smd_tty[idx].driver); tty_unregister_device(smd_tty_driver, idx); } } tty_unregister_driver(smd_tty_driver); put_tty_driver(smd_tty_driver); return ret; }
void __init msm_fb_add_devices(void) { int rc = 0; #if 1 // #suwg. printk("xxx %s \n",__func__); printk("machine_is_msm7627a_qrd1 %d\n",machine_is_msm7627a_qrd1()); printk("machine_is_msm8625q_skud %d\n",machine_is_msm8625q_skud()); printk("machine_is_msm7x27a_qrd5a %d\n",machine_is_msm7x27a_qrd5a()); printk("machine_is_msm8625_qrd5 %d\n",machine_is_msm8625_qrd5()); printk("disable_splash %d\n",disable_splash); msm7x27a_set_display_params(prim_panel_name); if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(odmm_fb_devices, ARRAY_SIZE(odmm_fb_devices)); msm_fb_register_device("mdp", &mdp_pdata); //#ifdef CONFIG_FB_MSM_MIPI_DSI msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); //#endif return; #endif msm7x27a_set_display_params(prim_panel_name); if (machine_is_msm7627a_qrd1()) platform_add_devices(qrd_fb_devices, ARRAY_SIZE(qrd_fb_devices)); else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { mipi_NT35510_pdata.bl_lock = 1; mipi_NT35516_pdata.bl_lock = 1; if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(evb_fb_devices, ARRAY_SIZE(evb_fb_devices)); } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { sku3_lcdc_lcd_camera_power_init(); mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(qrd3_fb_devices, ARRAY_SIZE(qrd3_fb_devices)); } else if (machine_is_msm8625q_skud() || machine_is_msm8625q_evbd()) { if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; /* SKUD and SKUD' use different lane connection */ if (cpu_is_msm8625q()){ if(!strncmp((char *)prim_panel_name, "mipi_video_hx8392a_720p", 23)) mipi_dsi_pdata.dlane_swap = 3; else mipi_dsi_pdata.dlane_swap = 0; pr_info("[DISP] The prim panel name is %s, Swap lane is %d\n", prim_panel_name,mipi_dsi_pdata.dlane_swap); } platform_add_devices(skud_fb_devices, ARRAY_SIZE(skud_fb_devices)); } else if (machine_is_msm8625q_skue()) { if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; /* SKUE and SKUE' use different lane connection */ if (cpu_is_msm8625q()) mipi_dsi_pdata.dlane_swap = 0; platform_add_devices(skue_fb_devices, ARRAY_SIZE(skue_fb_devices)); } else { mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(msm_fb_devices, ARRAY_SIZE(msm_fb_devices)); } msm_fb_register_device("mdp", &mdp_pdata); if (machine_is_msm7625a_surf() || machine_is_msm7x27a_surf() || machine_is_msm8625_surf() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) msm_fb_register_device("lcdc", &lcdc_pdata); #ifdef CONFIG_FB_MSM_MIPI_DSI msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); #endif if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm8625q_evbd()) { gpio_reg_2p85v = regulator_get(&mipi_dsi_device.dev, "lcd_vdd"); if (IS_ERR(gpio_reg_2p85v)) pr_err("%s:ext_2p85v regulator get failed", __func__); gpio_reg_1p8v = regulator_get(&mipi_dsi_device.dev, "lcd_vddi"); if (IS_ERR(gpio_reg_1p8v)) pr_err("%s:ext_1p8v regulator get failed", __func__); if (mdp_pdata.cont_splash_enabled) { /*Enable EXT_2.85 and 1.8 regulators*/ rc = regulator_enable(gpio_reg_2p85v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); rc = regulator_enable(gpio_reg_1p8v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); } } }
static void __init msm_qrd_init(void) { msm7x2x_misc_init(); msm7627a_init_regulators(); msmqrd_adsp_add_pdev(); if (cpu_is_msm8625() || cpu_is_msm8625q()) msm8625_device_i2c_init(); else msm7627a_device_i2c_init(); /* uart1dm*/ qrd7627a_uart1dm_config(); /*OTG gadget*/ qrd7627a_otg_gadget(); msm_add_footswitch_devices(); add_platform_devices(); /* Ensure ar6000pm device is registered before MMC/SDC */ /* modified by fanjiankang begin*/ //msm_qrd_init_ar6000pm(); wlan_init_power(); msm_read_nv(NV_ITEM_WLAN_MAC_ADDR, wlan_mac_addr); msm7627a_init_mmc(); #ifdef CONFIG_USB_EHCI_MSM_72K msm7627a_init_host(); #endif msm_pm_init(); msm_pm_register_irqs(); msm_fb_add_devices(); // zhangji modify for del mp8845c // platform_device_register(&mp8845c_platform_device); platform_device_register(&ncp6335d_platform_device); #ifdef CONFIG_I2C_GPIO //if (machine_is_msm8625q_evbd() || machine_is_msm8625q_skud() // || machine_is_msm8625q_skue()) // i2c_register_board_info(2, i2c2_info, ARRAY_SIZE(i2c2_info)); #endif #if defined(CONFIG_BT) && defined(CONFIG_MARIMBA_CORE) msm7627a_bt_power_init(); #endif //msm7627a_sensor_init(); msm7627a_camera_init(); qrd7627a_add_io_devices(); msm7x25a_kgsl_3d0_init(); msm8x25_kgsl_3d0_init(); msm7x27a_sensor_init(); #ifdef CONFIG_PN544_NFC nfc_init(); #endif }