diff mbox

[04/10] dmaending: qcom_hidma: configure DMA and MSI for OF

Message ID 1468867177-15007-5-git-send-email-okaya@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sinan Kaya July 18, 2016, 6:39 p.m. UTC
Configure the DMA bindings for the device tree based firmware.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/dma/qcom/hidma_mgmt.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Vinod Koul July 24, 2016, 6:33 a.m. UTC | #1
On Tue, Jul 19, 2016 at 12:09:31AM +0530, Sinan Kaya wrote:
> Configure the DMA bindings for the device tree based firmware.
> 
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/dma/qcom/hidma_mgmt.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c
> index c0e3653..fb30730 100644
> --- a/drivers/dma/qcom/hidma_mgmt.c
> +++ b/drivers/dma/qcom/hidma_mgmt.c
> @@ -375,8 +375,10 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np)
>                         ret = -ENODEV;
>                         goto out;
>                 }
> +               of_node_get(child);
> +               new_pdev->dev.of_node = child;
>                 of_dma_configure(&new_pdev->dev, child);
> -
> +               of_msi_configure(&new_pdev->dev, child);

How would this work on non MSI platforms?
Sinan Kaya July 24, 2016, 2:40 p.m. UTC | #2
On 7/24/2016 2:33 AM, Vinod Koul wrote:
> On Tue, Jul 19, 2016 at 12:09:31AM +0530, Sinan Kaya wrote:
>> Configure the DMA bindings for the device tree based firmware.
>>
>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>> ---
>>  drivers/dma/qcom/hidma_mgmt.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c
>> index c0e3653..fb30730 100644
>> --- a/drivers/dma/qcom/hidma_mgmt.c
>> +++ b/drivers/dma/qcom/hidma_mgmt.c
>> @@ -375,8 +375,10 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np)
>>                         ret = -ENODEV;
>>                         goto out;
>>                 }
>> +               of_node_get(child);
>> +               new_pdev->dev.of_node = child;
>>                 of_dma_configure(&new_pdev->dev, child);
>> -
>> +               of_msi_configure(&new_pdev->dev, child);
> 
> How would this work on non MSI platforms?
> 

The way it works is MSI on OF platforms relies on an optional msi-parent and msi-cells attribute
present in the device tree firmware. 

If these attributes do not exist, the function bails out. The function would create the MSI bindings
only if the correct attributes are present.
diff mbox

Patch

diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c
index c0e3653..fb30730 100644
--- a/drivers/dma/qcom/hidma_mgmt.c
+++ b/drivers/dma/qcom/hidma_mgmt.c
@@ -375,8 +375,10 @@  static int __init hidma_mgmt_of_populate_channels(struct device_node *np)
 			ret = -ENODEV;
 			goto out;
 		}
+		of_node_get(child);
+		new_pdev->dev.of_node = child;
 		of_dma_configure(&new_pdev->dev, child);
-
+		of_msi_configure(&new_pdev->dev, child);
 		kfree(res);
 		res = NULL;
 	}