Re: [PATCH] HID: sfh: fix address space confusion

2021-01-04 Thread Jiri Kosina
On Sun, 3 Jan 2021, Arnd Bergmann wrote:

> From: Arnd Bergmann 
> 
> The new driver uses a phys_addr_t to store a DMA address,
> which does not work when the two are different size:
> 
> drivers/hid/amd-sfh-hid/amd_sfh_client.c:157:11: error: incompatible pointer 
> types passing 'phys_addr_t *' (aka 'unsigned int *') to parameter of type 
> 'dma_addr_t *' (aka 'unsigned long long *') 
> [-Werror,-Wincompatible-pointer-types]
>   
> _data->sensor_phys_addr[i],
>   
> ^
> include/linux/dma-mapping.h:393:15: note: passing argument to parameter 
> 'dma_handle' here
> dma_addr_t *dma_handle, gfp_t gfp)
> ^
> 
> Change both the type and the variable name to dma_addr for consistency.
> 
> Fixes: 4b2c53d93a4b ("SFH:Transport Driver to add support of AMD Sensor 
> Fusion Hub (SFH)")
> Signed-off-by: Arnd Bergmann 

Good catch; queued for 5.11, thanks.

-- 
Jiri Kosina
SUSE Labs



[PATCH] HID: sfh: fix address space confusion

2021-01-03 Thread Arnd Bergmann
From: Arnd Bergmann 

The new driver uses a phys_addr_t to store a DMA address,
which does not work when the two are different size:

drivers/hid/amd-sfh-hid/amd_sfh_client.c:157:11: error: incompatible pointer 
types passing 'phys_addr_t *' (aka 'unsigned int *') to parameter of type 
'dma_addr_t *' (aka 'unsigned long long *') 
[-Werror,-Wincompatible-pointer-types]
  
_data->sensor_phys_addr[i],
  
^
include/linux/dma-mapping.h:393:15: note: passing argument to parameter 
'dma_handle' here
dma_addr_t *dma_handle, gfp_t gfp)
^

Change both the type and the variable name to dma_addr for consistency.

Fixes: 4b2c53d93a4b ("SFH:Transport Driver to add support of AMD Sensor Fusion 
Hub (SFH)")
Signed-off-by: Arnd Bergmann 
---
 drivers/hid/amd-sfh-hid/amd_sfh_client.c | 8 
 drivers/hid/amd-sfh-hid/amd_sfh_hid.h| 2 +-
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c   | 2 +-
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.h   | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_client.c 
b/drivers/hid/amd-sfh-hid/amd_sfh_client.c
index 3d1ccac5d99a..2ab38b715347 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_client.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_client.c
@@ -154,7 +154,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
 
for (i = 0; i < cl_data->num_hid_devices; i++) {
cl_data->sensor_virt_addr[i] = dma_alloc_coherent(dev, 
sizeof(int) * 8,
- 
_data->sensor_phys_addr[i],
+ 
_data->sensor_dma_addr[i],
  GFP_KERNEL);
cl_data->sensor_sts[i] = 0;
cl_data->sensor_requested_cnt[i] = 0;
@@ -187,7 +187,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
}
info.period = msecs_to_jiffies(AMD_SFH_IDLE_LOOP);
info.sensor_idx = cl_idx;
-   info.phys_address = cl_data->sensor_phys_addr[i];
+   info.dma_address = cl_data->sensor_dma_addr[i];
 
cl_data->report_descr[i] = kzalloc(cl_data->report_descr_sz[i], 
GFP_KERNEL);
if (!cl_data->report_descr[i]) {
@@ -212,7 +212,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
if (cl_data->sensor_virt_addr[i]) {
dma_free_coherent(>pdev->dev, 8 * sizeof(int),
  cl_data->sensor_virt_addr[i],
- cl_data->sensor_phys_addr[i]);
+ cl_data->sensor_dma_addr[i]);
}
kfree(cl_data->feature_report[i]);
kfree(cl_data->input_report[i]);
@@ -238,7 +238,7 @@ int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
if (cl_data->sensor_virt_addr[i]) {
dma_free_coherent(>pdev->dev, 8 * sizeof(int),
  cl_data->sensor_virt_addr[i],
- cl_data->sensor_phys_addr[i]);
+ cl_data->sensor_dma_addr[i]);
}
}
kfree(cl_data);
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_hid.h 
b/drivers/hid/amd-sfh-hid/amd_sfh_hid.h
index 6be0783d885c..d7eac1728e31 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_hid.h
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_hid.h
@@ -27,7 +27,7 @@ struct amdtp_cl_data {
int hid_descr_size[MAX_HID_DEVICES];
phys_addr_t phys_addr_base;
u32 *sensor_virt_addr[MAX_HID_DEVICES];
-   phys_addr_t sensor_phys_addr[MAX_HID_DEVICES];
+   dma_addr_t sensor_dma_addr[MAX_HID_DEVICES];
u32 sensor_sts[MAX_HID_DEVICES];
u32 sensor_requested_cnt[MAX_HID_DEVICES];
u8 report_type[MAX_HID_DEVICES];
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c 
b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index a51c7b76283b..dbac16641662 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -41,7 +41,7 @@ void amd_start_sensor(struct amd_mp2_dev *privdata, struct 
amd_mp2_sensor_info i
cmd_param.s.buf_layout = 1;
cmd_param.s.buf_length = 16;
 
-   writeq(info.phys_address, privdata->mmio + AMD_C2P_MSG2);
+   writeq(info.dma_address, privdata->mmio + AMD_C2P_MSG2);
writel(cmd_param.ul, privdata->mmio + AMD_C2P_MSG1);
writel(cmd_base.ul, privdata->mmio + AMD_C2P_MSG0);
 }
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h 
b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h
index e8be94f935b7..8f8d19b2cfe5 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h
+++