Message ID | f2e9790d8b49aeba8b43ce018d30a35b837ac1eb.1700409299.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] serial: atmel: convert not to use dma_request_slave_channel() | expand |
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 <christophe.jaillet@wanadoo.fr> > --- > 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 <christophe.jaillet@wanadoo.fr> >> --- >> 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,
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 <christophe.jaillet@wanadoo.fr> >>> --- >>> 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,
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 <christophe.jaillet@wanadoo.fr> >>> --- >>> 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,
On Sun, 19 Nov 2023 16:55:15 +0100 Christophe JAILLET <christophe.jaillet@wanadoo.fr> 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 <christophe.jaillet@wanadoo.fr> > --- > 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 <christophe.jaillet@wanadoo.fr> >>>> --- >>>> 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, >
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));
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 <christophe.jaillet@wanadoo.fr> --- v2: Also update atmel_prepare_rx_dma() --- drivers/tty/serial/atmel_serial.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)