|
@@ -275,6 +275,12 @@ static int hid_time_probe(struct platform_device *pdev)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+ ret = sensor_hub_device_open(hsdev);
|
|
|
+ if (ret) {
|
|
|
+ dev_err(&pdev->dev, "failed to open sensor hub device!\n");
|
|
|
+ goto err_open;
|
|
|
+ }
|
|
|
+
|
|
|
time_state->rtc = devm_rtc_device_register(&pdev->dev,
|
|
|
"hid-sensor-time", &hid_time_rtc_ops,
|
|
|
THIS_MODULE);
|
|
@@ -282,17 +288,24 @@ static int hid_time_probe(struct platform_device *pdev)
|
|
|
if (IS_ERR_OR_NULL(time_state->rtc)) {
|
|
|
ret = time_state->rtc ? PTR_ERR(time_state->rtc) : -ENODEV;
|
|
|
time_state->rtc = NULL;
|
|
|
- sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_TIME);
|
|
|
dev_err(&pdev->dev, "rtc device register failed!\n");
|
|
|
+ goto err_rtc;
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
+
|
|
|
+err_rtc:
|
|
|
+ sensor_hub_device_close(hsdev);
|
|
|
+err_open:
|
|
|
+ sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_TIME);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int hid_time_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
|
|
|
|
|
|
+ sensor_hub_device_close(hsdev);
|
|
|
sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_TIME);
|
|
|
|
|
|
return 0;
|