static int loox550_rfk_probe(struct platform_device *dev) { int rc; rc = request_gpios_bt(); if (rc) goto err_gpios; bt_rfk = rfkill_alloc("loox550-bt", &dev->dev, RFKILL_TYPE_BLUETOOTH, &loox550_bt_rfkill_ops, NULL); if (!bt_rfk) goto err_rfkill; rfkill_set_led_trigger_name(bt_rfk, "loox550-bt"); rc = rfkill_register(bt_rfk); if (rc) goto err_rfkill; platform_set_drvdata(dev, NULL); return 0; err_rfkill: rfkill_destroy(bt_rfk); err_gpios: free_gpios(); return rc; }
static int __devinit h1940bt_probe(struct platform_device *pdev) { struct rfkill *rfk; int ret = 0; ret = gpio_request(S3C2410_GPH(1), dev_name(&pdev->dev)); if (ret) { dev_err(&pdev->dev, "could not get GPH1\n"); return ret; } ret = gpio_request(H1940_LATCH_BLUETOOTH_POWER, dev_name(&pdev->dev)); if (ret) { gpio_free(S3C2410_GPH(1)); dev_err(&pdev->dev, "could not get BT_POWER\n"); return ret; } /* Configures BT serial port GPIOs */ s3c_gpio_cfgpin(S3C2410_GPH(0), S3C2410_GPH0_nCTS0); s3c_gpio_setpull(S3C2410_GPH(0), S3C_GPIO_PULL_NONE); s3c_gpio_cfgpin(S3C2410_GPH(1), S3C2410_GPIO_OUTPUT); s3c_gpio_setpull(S3C2410_GPH(1), S3C_GPIO_PULL_NONE); s3c_gpio_cfgpin(S3C2410_GPH(2), S3C2410_GPH2_TXD0); s3c_gpio_setpull(S3C2410_GPH(2), S3C_GPIO_PULL_NONE); s3c_gpio_cfgpin(S3C2410_GPH(3), S3C2410_GPH3_RXD0); s3c_gpio_setpull(S3C2410_GPH(3), S3C_GPIO_PULL_NONE); rfk = rfkill_alloc(DRV_NAME, &pdev->dev, RFKILL_TYPE_BLUETOOTH, &h1940bt_rfkill_ops, NULL); if (!rfk) { ret = -ENOMEM; goto err_rfk_alloc; } rfkill_set_led_trigger_name(rfk, "h1940-bluetooth"); ret = rfkill_register(rfk); if (ret) goto err_rfkill; platform_set_drvdata(pdev, rfk); return 0; err_rfkill: rfkill_destroy(rfk); err_rfk_alloc: return ret; }
static int tosa_bt_probe(struct platform_device *dev) { int rc; struct rfkill *rfk; struct tosa_bt_data *data = dev->dev.platform_data; rc = gpio_request(data->gpio_reset, "Bluetooth reset"); if (rc) goto err_reset; rc = gpio_direction_output(data->gpio_reset, 0); if (rc) goto err_reset_dir; rc = gpio_request(data->gpio_pwr, "Bluetooth power"); if (rc) goto err_pwr; rc = gpio_direction_output(data->gpio_pwr, 0); if (rc) goto err_pwr_dir; rfk = rfkill_alloc("tosa-bt", &dev->dev, RFKILL_TYPE_BLUETOOTH, &tosa_bt_rfkill_ops, data); if (!rfk) { rc = -ENOMEM; goto err_rfk_alloc; } rfkill_set_led_trigger_name(rfk, "tosa-bt"); rc = rfkill_register(rfk); if (rc) goto err_rfkill; platform_set_drvdata(dev, rfk); return 0; err_rfkill: rfkill_destroy(rfk); err_rfk_alloc: tosa_bt_off(data); err_pwr_dir: gpio_free(data->gpio_pwr); err_pwr: err_reset_dir: gpio_free(data->gpio_reset); err_reset: return rc; }
static int __devinit h1940bt_probe(struct platform_device *pdev) { struct rfkill *rfk; int ret = 0; /* Configures BT serial port GPIOs */ s3c2410_gpio_cfgpin(S3C2410_GPH(0), S3C2410_GPH0_nCTS0); s3c2410_gpio_pullup(S3C2410_GPH(0), 1); s3c2410_gpio_cfgpin(S3C2410_GPH(1), S3C2410_GPIO_OUTPUT); s3c2410_gpio_pullup(S3C2410_GPH(1), 1); s3c2410_gpio_cfgpin(S3C2410_GPH(2), S3C2410_GPH2_TXD0); s3c2410_gpio_pullup(S3C2410_GPH(2), 1); s3c2410_gpio_cfgpin(S3C2410_GPH(3), S3C2410_GPH3_RXD0); s3c2410_gpio_pullup(S3C2410_GPH(3), 1); rfk = rfkill_alloc(DRV_NAME, &pdev->dev, RFKILL_TYPE_BLUETOOTH, &h1940bt_rfkill_ops, NULL); if (!rfk) { ret = -ENOMEM; goto err_rfk_alloc; } rfkill_set_led_trigger_name(rfk, "h1940-bluetooth"); ret = rfkill_register(rfk); if (ret) goto err_rfkill; platform_set_drvdata(pdev, rfk); return 0; err_rfkill: rfkill_destroy(rfk); err_rfk_alloc: return ret; }