static void __init bravo_init(void) { int ret; printk("bravo_init() revision=%d\n", system_rev); printk(KERN_INFO "%s: microp version = %s\n", __func__, microp_ver); /* Must set msm_hw_reset_hook before first proc comm */ msm_hw_reset_hook = bravo_reset; if (system_rev >= 2) { mdp_pmem_pdata.start = MSM_PMEM_MDP_BASE + MSM_MEM_128MB_OFFSET; android_pmem_adsp_pdata.start = MSM_PMEM_ADSP_BASE + MSM_MEM_128MB_OFFSET; } gpio_request(BRAVO_GPIO_LS_EN, "ls_en"); msm_acpu_clock_init(&bravo_clock_data); perflock_init(&bravo_perflock_data); #if defined(CONFIG_MSM_SERIAL_DEBUGGER) msm_serial_debug_init(MSM_UART1_PHYS, INT_UART1, &msm_device_uart1.dev, 1, MSM_GPIO_TO_INT(139)); #endif #ifdef CONFIG_ARCH_QSD8X50 bt_export_bd_address(); #endif #ifdef CONFIG_SERIAL_MSM_HS msm_device_uart_dm1.dev.platform_data = &msm_uart_dm1_pdata; msm_device_uart_dm1.name = "msm_serial_hs_bcm"; /* for bcm */ #endif bravo_config_serial_debug_gpios(); config_gpio_table(camera_off_gpio_table, ARRAY_SIZE(camera_off_gpio_table)); gpio_request(BRAVO_GPIO_TP_LS_EN, "tp_ls_en"); gpio_direction_output(BRAVO_GPIO_TP_LS_EN, 0); gpio_request(BRAVO_GPIO_TP_EN, "tp_en"); gpio_direction_output(BRAVO_GPIO_TP_EN, 0); bravo_audio_init(); msm_device_i2c_init(); #ifdef CONFIG_MICROP_COMMON bravo_microp_init(); #endif /* set the gpu power rail to manual mode so clk en/dis will not * turn off gpu power, and hang it on resume */ bravo_kgsl_power_rail_mode(0); bravo_kgsl_power(true); platform_add_devices(devices, ARRAY_SIZE(devices)); bravo_init_panel(); if (!opt_usb_h2w_sw) { #ifdef CONFIG_USB_FUNCTION msm_register_usb_phy_init_seq(bravo_phy_init_seq); msm_add_usb_devices(bravo_usb_phy_reset, NULL); #endif #ifdef CONFIG_USB_ANDROID bravo_add_usb_devices(); #endif } for (ret = 0; ret < ARRAY_SIZE(i2c_devices); ret++) { if (!strcmp(i2c_devices[ret].type, AKM8973_I2C_NAME)) i2c_devices[ret].irq = MSM_GPIO_TO_INT(BRAVO_GPIO_COMPASS_INT); } compass_platform_data.intr = BRAVO_GPIO_COMPASS_INT; i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); ret = bravo_init_mmc(system_rev); if (ret != 0) pr_crit("%s: Unable to initialize MMC\n", __func__); ret = platform_device_register(&android_timed_gpios); if (ret != 0) pr_err("failed to register vibrator\n"); headset_init(); }
static void __init bravo_init(void) { int ret; printk("bravo_init() revision=%d\n", system_rev); if (is_cdma_version(system_rev)) smd_set_channel_list(smd_cdma_default_channels, ARRAY_SIZE(smd_cdma_default_channels)); msm_hw_reset_hook = bravo_reset; if (is_cdma_version(system_rev)) msm_acpu_clock_init(&bravo_cdma_clock_data); else msm_acpu_clock_init(&bravo_clock_data); msm_serial_debug_init(MSM_UART1_PHYS, INT_UART1, &msm_device_uart1.dev, 1, MSM_GPIO_TO_INT(139)); config_gpio_table(misc_gpio_table, ARRAY_SIZE(misc_gpio_table)); if (is_cdma_version(system_rev)) { bcm_bt_lpm_pdata.gpio_wake = BRAVO_CDMA_GPIO_BT_WAKE; bravo_flashlight_data.torch = BRAVO_CDMA_GPIO_FLASHLIGHT_TORCH; config_gpio_table(bt_gpio_table_rev_CX, ARRAY_SIZE(bt_gpio_table_rev_CX)); } else { config_gpio_table(bt_gpio_table, ARRAY_SIZE(bt_gpio_table)); } gpio_request(BRAVO_GPIO_TP_LS_EN, "tp_ls_en"); gpio_direction_output(BRAVO_GPIO_TP_LS_EN, 0); gpio_request(BRAVO_GPIO_TP_EN, "tp_en"); gpio_direction_output(BRAVO_GPIO_TP_EN, 0); // gpio_request(BRAVO_GPIO_PROXIMITY_EN, "proximity_en"); // gpio_direction_output(BRAVO_GPIO_PROXIMITY_EN, 1); gpio_request(BRAVO_GPIO_LS_EN_N, "ls_en"); gpio_request(BRAVO_GPIO_COMPASS_RST_N, "compass_rst"); gpio_direction_output(BRAVO_GPIO_COMPASS_RST_N, 1); gpio_request(BRAVO_GPIO_COMPASS_INT_N, "compass_int"); gpio_direction_input(BRAVO_GPIO_COMPASS_INT_N); gpio_request(BRAVO_GPIO_DS2482_SLP_N, "ds2482_slp_n"); /* set the gpu power rail to manual mode so clk en/dis will not * turn off gpu power, and hang it on resume */ bravo_kgsl_power_rail_mode(0); bravo_kgsl_power(true); msm_device_hsusb.dev.platform_data = &msm_hsusb_pdata; msm_device_uart_dm1.dev.platform_data = &msm_uart_dm1_pdata; platform_add_devices(devices, ARRAY_SIZE(devices)); i2c_register_board_info(0, base_i2c_devices, ARRAY_SIZE(base_i2c_devices)); if (is_cdma_version(system_rev)) { i2c_register_board_info(0, rev_CX_i2c_devices, ARRAY_SIZE(rev_CX_i2c_devices)); } ret = bravo_init_mmc(system_rev, debug_uart); if (ret != 0) pr_crit("%s: Unable to initialize MMC\n", __func__); bravo_audio_init(); bravo_headset_init(); platform_device_register(&bravo_timed_gpios); ds2784_battery_init(); serialno_setup(board_serialno()); }