static ssize_t bt_test_mode_show(struct device *dev, struct device_attribute *attr, char *buf) { struct bt_rfkill_info *bt_info = dev_get_drvdata(dev); if(bt_info->bt_test_mode) return sprintf(buf, "1\n"); mutex_lock(&bt_info->bt_lock); if(mx_is_factory_test_mode(MX_FACTORY_TEST_BT)) { msleep(100); if(mx_is_factory_test_mode(MX_FACTORY_TEST_BT)) { printk("in BT_TEST_MODE\n"); bt_info->bt_test_mode = 1; //test mode bt_info->monitor_wqueue = create_freezable_workqueue("wifi_test_led_wqueue"); INIT_DELAYED_WORK_DEFERRABLE(&bt_info->test_work, test_work); INIT_DELAYED_WORK_DEFERRABLE(&bt_info->led_delay_on_work, led_delay_on_work); queue_delayed_work(bt_info->monitor_wqueue, &bt_info->led_delay_on_work, msecs_to_jiffies(BT_LED_DELAY)); } } mutex_unlock(&bt_info->bt_lock); return sprintf(buf, "%d\n", bt_info->bt_test_mode); }
static int __devinit gps_probe(struct platform_device *pdev) { int ret; gps_power = MEIZU_GPS_PWR_ON; ret = sysfs_create_group(&pdev->dev.kobj, &gps_attribute_group); if (ret < 0) { pr_err("%s():sys create group fail !!\n", __func__); return ret; } ret = gpio_request(gps_power, "GPS_PWR"); if (ret) { pr_err("%s():fail to request gpio (GPS_nRST)\n", __func__); goto gpio_req; } s3c_gpio_setpull(gps_power, GPIO_PULL_NONE); gpio_direction_output(gps_power, 0); if (mx_is_factory_test_mode(MX_FACTORY_TEST_BT)) { s3c_gpio_cfgpin(MEIZU_GPS_RTS, S3C_GPIO_INPUT); s3c_gpio_cfgpin(MEIZU_GPS_CTS, S3C_GPIO_INPUT); s3c_gpio_cfgpin(MEIZU_GPS_RXD, S3C_GPIO_INPUT); s3c_gpio_cfgpin(MEIZU_GPS_TXD, S3C_GPIO_INPUT); s3c_gpio_setpull(MEIZU_GPS_RTS, GPIO_PULL_DOWN); s3c_gpio_setpull(MEIZU_GPS_CTS, GPIO_PULL_DOWN); s3c_gpio_setpull(MEIZU_GPS_RXD, GPIO_PULL_DOWN); gpio_direction_output(gps_power, 1); printk("GPS in test mode!\n"); } pr_info("gps successfully probed!\n"); return 0; gpio_req: sysfs_remove_group(&pdev->dev.kobj, &gps_attribute_group); return ret; }
static int __devinit gps_probe(struct platform_device *pdev) { int ret; struct gps_data *data; data = kzalloc(sizeof(struct gps_data), GFP_KERNEL); if(!data) { pr_err("%s()->%d:kzalloc fail !!\n", __FUNCTION__, __LINE__); return -ENOMEM; } dev_set_drvdata(&pdev->dev, data); ret = sysfs_create_group(&pdev->dev.kobj, &gps_attribute_group); if (ret < 0) { pr_err("%s()->%d:sys create group fail !!\n", __FUNCTION__, __LINE__); kfree(data); return ret; } #ifdef CONFIG_HAS_EARLYSUSPEND data->early_suspend.suspend = gps_early_suspend; data->early_suspend.resume = gps_late_resume; data->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN; register_early_suspend(&data->early_suspend); #endif if(mx_is_factory_test_mode(MX_FACTORY_TEST_BT)) { pr_info("%s():now is in factory test mode!\n", __func__); if (!gps_power(1)) data->enabled = 1; } pr_info("gps successfully probed!\n"); return 0; }
static bool m6mo_is_factory_test_mode(void) { return !!mx_is_factory_test_mode(MX_FACTORY_TEST_CAMERA); }