# \[PATCH 1/3\] HID: hid-sensor-hub: Remove setting hdev-\>claimed before calling hid\_hw\_start()

- Subsystems: HID CORE LAYER, HID SENSOR HUB DRIVERS, THE REST
- Maintainers: Jiri Kosina, Benjamin Tissoires, Jonathan Cameron, Srinivas Pandruvada, Linus Torvalds
- List: linux-input
- 6 messages, 3 authors
- Page: https://ratatoskr.run/linux-input/2012/09/8920193/t

## \[PATCH 1/3\] HID: hid-sensor-hub: Remove setting hdev-\>claimed before calling hid\_hw\_start()

- From: Axel Lin \<hidden\>
- Date: 2012-09-13 22:03:35 
- Message: https://ratatoskr.run/linux-input/2012/09/8920193.md

```text
Current implementation of hid_hw_start() allows connect_mask to be 0.
Setting hdev->claimed = HID_CLAIMED_INPUT before calling hid_hw_start() is not
necessary. Remove it.

Signed-off-by: Axel Lin <redacted>
---
 drivers/hid/hid-sensor-hub.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index 4ac759c..1faacf2 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -539,7 +539,6 @@ static int sensor_hub_probe(struct hid_device *hdev,
 	}
 	INIT_LIST_HEAD(&hdev->inputs);
 
-	hdev->claimed = HID_CLAIMED_INPUT;
 	ret = hid_hw_start(hdev, 0);
 	if (ret) {
 		hid_err(hdev, "hw start failed\n");
@@ -627,7 +626,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
 	int i;
 
 	hid_dbg(hdev, " hardware removed\n");
-	hdev->claimed &= ~HID_CLAIMED_INPUT;
 	hid_hw_stop(hdev);
 	hid_hw_close(hdev);
 	spin_lock_irqsave(&data->lock, flags);
-- 
1.7.9.5



```

## \[PATCH 2/3\] HID: hid-sensor-hub: Fix sensor\_hub\_probe error handling

- From: Axel Lin \<hidden\>
- Date: 2012-09-13 22:05:17 
- Message: https://ratatoskr.run/linux-input/2012/09/8920194.md

```text
Fix below issues in sensor_hub_probe error handling:
1. In the case of goto err_close, hid_hw_stop(hdev) is called twice. Fix it.
2. If fails to allocate MFD device name, we also need to free all
   sucessfully allocated names in previous iterations.

Signed-off-by: Axel Lin <redacted>
---
 drivers/hid/hid-sensor-hub.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index 1faacf2..f9d6209 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -580,7 +580,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
 				hid_err(hdev,
 					"Failed MFD device name\n");
 					ret = -ENOMEM;
-					goto err_free_cells;
+					goto err_free_names;
 			}
 			sd->hid_sensor_hub_client_devs[
 				sd->hid_sensor_client_cnt].name = name;
@@ -604,10 +604,8 @@ static int sensor_hub_probe(struct hid_device *hdev,
 err_free_names:
 	for (i = 0; i < sd->hid_sensor_client_cnt ; ++i)
 		kfree(sd->hid_sensor_hub_client_devs[i].name);
-err_free_cells:
 	kfree(sd->hid_sensor_hub_client_devs);
 err_close:
-	hid_hw_stop(hdev);
 	hid_hw_close(hdev);
 err_stop_hw:
 	hid_hw_stop(hdev);
-- 
1.7.9.5



```

## \[PATCH 3/3\] HID: hid-sensor-hub: Call hid\_hw\_close() before hid\_hw\_stop()

- From: Axel Lin \<hidden\>
- Date: 2012-09-13 22:06:46 
- Message: https://ratatoskr.run/linux-input/2012/09/8920195.md

```text
Also adjust unnecessary change lines for hid_err.

Signed-off-by: Axel Lin <redacted>
---
 drivers/hid/hid-sensor-hub.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
index f9d6209..b9ce38e 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -564,8 +564,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
 						sizeof(struct mfd_cell),
 						GFP_KERNEL);
 	if (sd->hid_sensor_hub_client_devs == NULL) {
-		hid_err(hdev,
-			"Failed to allocate memory for mfd cells\n");
+		hid_err(hdev, "Failed to allocate memory for mfd cells\n");
 			ret = -ENOMEM;
 			goto err_close;
 	}
@@ -577,8 +576,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
 			name = kasprintf(GFP_KERNEL, "HID-SENSOR-%x",
 						field->physical);
 			if (name  == NULL) {
-				hid_err(hdev,
-					"Failed MFD device name\n");
+				hid_err(hdev, "Failed MFD device name\n");
 					ret = -ENOMEM;
 					goto err_free_names;
 			}
@@ -624,8 +622,8 @@ static void sensor_hub_remove(struct hid_device *hdev)
 	int i;
 
 	hid_dbg(hdev, " hardware removed\n");
-	hid_hw_stop(hdev);
 	hid_hw_close(hdev);
+	hid_hw_stop(hdev);
 	spin_lock_irqsave(&data->lock, flags);
 	if (data->pending.status)
 		complete(&data->pending.ready);
-- 
1.7.9.5



```

## RE: \[PATCH 3/3\] HID: hid-sensor-hub: Call hid\_hw\_close() before hid\_hw\_stop()

- From: Pandruvada, Srinivas \<hidden\>
- Date: 2012-09-13 22:31:40 
- Message: https://ratatoskr.run/linux-input/2012/09/8920197.md

```text
I think you can merge this patch with your patch 2/3 as both are addressing hid_hw_close and hid_hw_stop.

Thanks,
Srinivas
-----Original Message-----
From: Axel Lin [mailto:<redacted>] 
Sent: Thursday, September 13, 2012 3:07 PM
To: Jiri Kosina
Cc: Pandruvada, Srinivas; Jonathan Cameron; <redacted>
Subject: [PATCH 3/3] HID: hid-sensor-hub: Call hid_hw_close() before hid_hw_stop()

Also adjust unnecessary change lines for hid_err.

Signed-off-by: Axel Lin <redacted>
---
 drivers/hid/hid-sensor-hub.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c index f9d6209..b9ce38e 100644
--- a/drivers/hid/hid-sensor-hub.c
+++ b/drivers/hid/hid-sensor-hub.c
@@ -564,8 +564,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
 						sizeof(struct mfd_cell),
 						GFP_KERNEL);
 	if (sd->hid_sensor_hub_client_devs == NULL) {
-		hid_err(hdev,
-			"Failed to allocate memory for mfd cells\n");
+		hid_err(hdev, "Failed to allocate memory for mfd cells\n");
 			ret = -ENOMEM;
 			goto err_close;
 	}
@@ -577,8 +576,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
 			name = kasprintf(GFP_KERNEL, "HID-SENSOR-%x",
 						field->physical);
 			if (name  == NULL) {
-				hid_err(hdev,
-					"Failed MFD device name\n");
+				hid_err(hdev, "Failed MFD device name\n");
 					ret = -ENOMEM;
 					goto err_free_names;
 			}
@@ -624,8 +622,8 @@ static void sensor_hub_remove(struct hid_device *hdev)
 	int i;
 
 	hid_dbg(hdev, " hardware removed\n");
-	hid_hw_stop(hdev);
 	hid_hw_close(hdev);
+	hid_hw_stop(hdev);
 	spin_lock_irqsave(&data->lock, flags);
 	if (data->pending.status)
 		complete(&data->pending.ready);
--
1.7.9.5



```

## RE: \[PATCH 3/3\] HID: hid-sensor-hub: Call hid\_hw\_close() before hid\_hw\_stop()

- From: Jiri Kosina \<hidden\>
- Date: 2012-09-17 10:58:12 
- Message: https://ratatoskr.run/linux-input/2012/09/8920226.md

```text
On Thu, 13 Sep 2012, Pandruvada, Srinivas wrote:

> I think you can merge this patch with your patch 2/3 as both are 
> addressing hid_hw_close and hid_hw_stop.

Agreed. In addition to that, I am fine with the changes. As this whole lot 
is going through Jonathan to Greg, I just add my

	Acked-by: Jiri Kosina [ref]

and let Jonathan take it. Thanks,

-- 
Jiri Kosina
SUSE Labs
```

## RE: \[PATCH 3/3\] HID: hid-sensor-hub: Call hid\_hw\_close() before hid\_hw\_stop()

- From: Pandruvada, Srinivas \<hidden\>
- Date: 2012-09-17 15:20:41 
- Message: https://ratatoskr.run/linux-input/2012/09/8920241.md

```text
Hi Alex,

Can you resubmit your patches merging 2/3 and 3/3?

Thanks,
Srinivas

-----Original Message-----
From: Jiri Kosina [mailto:<redacted>] 
Sent: Monday, September 17, 2012 3:58 AM
To: Pandruvada, Srinivas
Cc: Axel Lin; Jonathan Cameron; <redacted>
Subject: RE: [PATCH 3/3] HID: hid-sensor-hub: Call hid_hw_close() before hid_hw_stop()

On Thu, 13 Sep 2012, Pandruvada, Srinivas wrote:

> I think you can merge this patch with your patch 2/3 as both are 
> addressing hid_hw_close and hid_hw_stop.

Agreed. In addition to that, I am fine with the changes. As this whole lot is going through Jonathan to Greg, I just add my

	Acked-by: Jiri Kosina [ref]

and let Jonathan take it. Thanks,

--
Jiri Kosina
SUSE Labs
```
