dma_request_slave_channel() is deprecated. dma_request_chan() should
be used directly instead.
Switch to the preferred function and update the error handling accordingly.
Signed-off-by: Christophe JAILLET <[email protected]>
---
v2: Also update atmel_prepare_rx_dma()
---
drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
index 1946fafc3f3e..6aeb4648843b 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
struct device *mfd_dev = port->dev->parent;
dma_cap_mask_t mask;
struct dma_slave_config config;
+ struct dma_chan *chan;
int ret, nent;
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
- atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
- if (atmel_port->chan_tx == NULL)
+ chan = dma_request_chan(mfd_dev, "tx");
+ if (IS_ERR(chan)) {
+ atmel_port->chan_tx = NULL;
goto chan_err;
+ }
+ atmel_port->chan_tx = chan;
dev_info(port->dev, "using %s for tx DMA transfers\n",
dma_chan_name(atmel_port->chan_tx));
@@ -1188,6 +1192,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
dma_cap_mask_t mask;
struct dma_slave_config config;
struct circ_buf *ring;
+ struct dma_chan *chan;
int ret, nent;
ring = &atmel_port->rx_ring;
@@ -1195,9 +1200,12 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
dma_cap_zero(mask);
dma_cap_set(DMA_CYCLIC, mask);
- atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
- if (atmel_port->chan_rx == NULL)
+ chan = dma_request_chan(mfd_dev, "rx");
+ if (IS_ERR(chan)) {
+ atmel_port->chan_rx = NULL;
goto chan_err;
+ }
+ atmel_port->chan_rx = chan;
dev_info(port->dev, "using %s for rx DMA transfers\n",
dma_chan_name(atmel_port->chan_rx));
--
2.34.1
Hi, Christophe,
On 19.11.2023 17:55, Christophe JAILLET wrote:
> dma_request_slave_channel() is deprecated. dma_request_chan() should
> be used directly instead.
>
> Switch to the preferred function and update the error handling accordingly.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> v2: Also update atmel_prepare_rx_dma()
> ---
> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 1946fafc3f3e..6aeb4648843b 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
> struct device *mfd_dev = port->dev->parent;
> dma_cap_mask_t mask;
> struct dma_slave_config config;
> + struct dma_chan *chan;
There is no need for this.
> int ret, nent;
>
> dma_cap_zero(mask);
> dma_cap_set(DMA_SLAVE, mask);
>
> - atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
> - if (atmel_port->chan_tx == NULL)
> + chan = dma_request_chan(mfd_dev, "tx");
> + if (IS_ERR(chan)) {
> + atmel_port->chan_tx = NULL;
> goto chan_err;
> + }
> + atmel_port->chan_tx = chan;
> dev_info(port->dev, "using %s for tx DMA transfers\n",
> dma_chan_name(atmel_port->chan_tx));
>
> @@ -1188,6 +1192,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
> dma_cap_mask_t mask;
> struct dma_slave_config config;
> struct circ_buf *ring;
> + struct dma_chan *chan;
Ditto
> int ret, nent;
>
> ring = &atmel_port->rx_ring;
> @@ -1195,9 +1200,12 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
> dma_cap_zero(mask);
> dma_cap_set(DMA_CYCLIC, mask);
>
> - atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
> - if (atmel_port->chan_rx == NULL)
> + chan = dma_request_chan(mfd_dev, "rx");
> + if (IS_ERR(chan)) {
> + atmel_port->chan_rx = NULL;
> goto chan_err;
> + }
> + atmel_port->chan_rx = chan;
> dev_info(port->dev, "using %s for rx DMA transfers\n",
> dma_chan_name(atmel_port->chan_rx));
>
On 20. 11. 23, 7:14, claudiu beznea wrote:
> Hi, Christophe,
>
> On 19.11.2023 17:55, Christophe JAILLET wrote:
>> dma_request_slave_channel() is deprecated. dma_request_chan() should
>> be used directly instead.
>>
>> Switch to the preferred function and update the error handling accordingly.
>>
>> Signed-off-by: Christophe JAILLET <[email protected]>
>> ---
>> v2: Also update atmel_prepare_rx_dma()
>> ---
>> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
>> 1 file changed, 12 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
>> index 1946fafc3f3e..6aeb4648843b 100644
>> --- a/drivers/tty/serial/atmel_serial.c
>> +++ b/drivers/tty/serial/atmel_serial.c
>> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
>> struct device *mfd_dev = port->dev->parent;
>> dma_cap_mask_t mask;
>> struct dma_slave_config config;
>> + struct dma_chan *chan;
>
> There is no need for this.
How'd you avoid crash in here then:
if (atmel_port->chan_tx)
atmel_release_tx_dma(port);
?
thanks,
--
js
suse labs
On 20. 11. 23, 8:04, Jiri Slaby wrote:
> On 20. 11. 23, 7:14, claudiu beznea wrote:
>> Hi, Christophe,
>>
>> On 19.11.2023 17:55, Christophe JAILLET wrote:
>>> dma_request_slave_channel() is deprecated. dma_request_chan() should
>>> be used directly instead.
>>>
>>> Switch to the preferred function and update the error handling
>>> accordingly.
>>>
>>> Signed-off-by: Christophe JAILLET <[email protected]>
>>> ---
>>> v2: Also update atmel_prepare_rx_dma()
>>> ---
>>> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
>>> 1 file changed, 12 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/tty/serial/atmel_serial.c
>>> b/drivers/tty/serial/atmel_serial.c
>>> index 1946fafc3f3e..6aeb4648843b 100644
>>> --- a/drivers/tty/serial/atmel_serial.c
>>> +++ b/drivers/tty/serial/atmel_serial.c
>>> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct
>>> uart_port *port)
>>> struct device *mfd_dev = port->dev->parent;
>>> dma_cap_mask_t mask;
>>> struct dma_slave_config config;
>>> + struct dma_chan *chan;
>>
>> There is no need for this.
>
> How'd you avoid crash in here then:
> if (atmel_port->chan_tx)
> atmel_release_tx_dma(port);
> ?
I will answer myself: easily. As there is
atmel_port->chan_tx = NULL;
which I overlooked at first.
> thanks,
--
js
suse labs
On Sun, 19 Nov 2023 16:55:15 +0100
Christophe JAILLET <[email protected]> wrote:
Hi,
change the subject to:
"... replace deprecated dma_request_slave_channel()"
Hugo.
> dma_request_slave_channel() is deprecated. dma_request_chan() should
> be used directly instead.
>
> Switch to the preferred function and update the error handling accordingly.
>
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> v2: Also update atmel_prepare_rx_dma()
> ---
> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 1946fafc3f3e..6aeb4648843b 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port *port)
> struct device *mfd_dev = port->dev->parent;
> dma_cap_mask_t mask;
> struct dma_slave_config config;
> + struct dma_chan *chan;
> int ret, nent;
>
> dma_cap_zero(mask);
> dma_cap_set(DMA_SLAVE, mask);
>
> - atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
> - if (atmel_port->chan_tx == NULL)
> + chan = dma_request_chan(mfd_dev, "tx");
> + if (IS_ERR(chan)) {
> + atmel_port->chan_tx = NULL;
> goto chan_err;
> + }
> + atmel_port->chan_tx = chan;
> dev_info(port->dev, "using %s for tx DMA transfers\n",
> dma_chan_name(atmel_port->chan_tx));
>
> @@ -1188,6 +1192,7 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
> dma_cap_mask_t mask;
> struct dma_slave_config config;
> struct circ_buf *ring;
> + struct dma_chan *chan;
> int ret, nent;
>
> ring = &atmel_port->rx_ring;
> @@ -1195,9 +1200,12 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
> dma_cap_zero(mask);
> dma_cap_set(DMA_CYCLIC, mask);
>
> - atmel_port->chan_rx = dma_request_slave_channel(mfd_dev, "rx");
> - if (atmel_port->chan_rx == NULL)
> + chan = dma_request_chan(mfd_dev, "rx");
> + if (IS_ERR(chan)) {
> + atmel_port->chan_rx = NULL;
> goto chan_err;
> + }
> + atmel_port->chan_rx = chan;
> dev_info(port->dev, "using %s for rx DMA transfers\n",
> dma_chan_name(atmel_port->chan_rx));
>
> --
> 2.34.1
>
Le 20/11/2023 à 08:12, claudiu beznea a écrit :
>
>
> On 20.11.2023 09:04, Jiri Slaby wrote:
>> On 20. 11. 23, 7:14, claudiu beznea wrote:
>>> Hi, Christophe,
>>>
>>> On 19.11.2023 17:55, Christophe JAILLET wrote:
>>>> dma_request_slave_channel() is deprecated. dma_request_chan() should
>>>> be used directly instead.
>>>>
>>>> Switch to the preferred function and update the error handling accordingly.
>>>>
>>>> Signed-off-by: Christophe JAILLET <[email protected]>
>>>> ---
>>>> v2: Also update atmel_prepare_rx_dma()
>>>> ---
>>>> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
>>>> 1 file changed, 12 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/drivers/tty/serial/atmel_serial.c
>>>> b/drivers/tty/serial/atmel_serial.c
>>>> index 1946fafc3f3e..6aeb4648843b 100644
>>>> --- a/drivers/tty/serial/atmel_serial.c
>>>> +++ b/drivers/tty/serial/atmel_serial.c
>>>> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port
>>>> *port)
>>>> struct device *mfd_dev = port->dev->parent;
>>>> dma_cap_mask_t mask;
>>>> struct dma_slave_config config;
>>>> + struct dma_chan *chan;
>>>
>>> There is no need for this.
>>
>> How'd you avoid crash in here then:
>> if (atmel_port->chan_tx)
>> atmel_release_tx_dma(port);
>> ?
>
> I wanted to say that instead of adding the chan variable the
> atmel_port->chan_tx would be used instead.
You mean something like:
- atmel_port->chan_tx = dma_request_slave_channel(mfd_dev, "tx");
- if (atmel_port->chan_tx == NULL)
+ atmel_port->chan_tx = dma_request_chan(mfd_dev, "tx");
+ if (IS_ERR(atmel_port->chan_tx)) {
+ atmel_port->chan_tx = NULL;
?
Mostly a mater of taste. I can send a v3 with that if it is the
preferred style.
CJ
>
>>
>> thanks,
>
On 20.11.2023 09:04, Jiri Slaby wrote:
> On 20. 11. 23, 7:14, claudiu beznea wrote:
>> Hi, Christophe,
>>
>> On 19.11.2023 17:55, Christophe JAILLET wrote:
>>> dma_request_slave_channel() is deprecated. dma_request_chan() should
>>> be used directly instead.
>>>
>>> Switch to the preferred function and update the error handling accordingly.
>>>
>>> Signed-off-by: Christophe JAILLET <[email protected]>
>>> ---
>>> v2: Also update atmel_prepare_rx_dma()
>>> ---
>>> drivers/tty/serial/atmel_serial.c | 16 ++++++++++++----
>>> 1 file changed, 12 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/tty/serial/atmel_serial.c
>>> b/drivers/tty/serial/atmel_serial.c
>>> index 1946fafc3f3e..6aeb4648843b 100644
>>> --- a/drivers/tty/serial/atmel_serial.c
>>> +++ b/drivers/tty/serial/atmel_serial.c
>>> @@ -1013,14 +1013,18 @@ static int atmel_prepare_tx_dma(struct uart_port
>>> *port)
>>> struct device *mfd_dev = port->dev->parent;
>>> dma_cap_mask_t mask;
>>> struct dma_slave_config config;
>>> + struct dma_chan *chan;
>>
>> There is no need for this.
>
> How'd you avoid crash in here then:
> if (atmel_port->chan_tx)
> atmel_release_tx_dma(port);
> ?
I wanted to say that instead of adding the chan variable the
atmel_port->chan_tx would be used instead.
>
> thanks,