diff options
Diffstat (limited to 'drivers/rtc/rtc-hid-sensor-time.c')
| -rw-r--r-- | drivers/rtc/rtc-hid-sensor-time.c | 15 | 
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/rtc/rtc-hid-sensor-time.c b/drivers/rtc/rtc-hid-sensor-time.c index 4e2a81854f51..45560ffb038d 100644 --- a/drivers/rtc/rtc-hid-sensor-time.c +++ b/drivers/rtc/rtc-hid-sensor-time.c @@ -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;  | 
