Re: [PATCH 1/2] dmaengine: sprd: delete enable opreation in probe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 12/19/2023 1:21 PM, liu kaiwei wrote:
On Mon, Dec 11, 2023 at 7:41 PM Vinod Koul <vkoul@xxxxxxxxxx> wrote:

On 06-12-23, 17:32, liu kaiwei wrote:
On Fri, Nov 24, 2023 at 9:11 PM Vinod Koul <vkoul@xxxxxxxxxx> wrote:

On 02-11-23, 20:16, Kaiwei Liu wrote:
From: "kaiwei.liu" <kaiwei.liu@xxxxxxxxxx>

Typo is subject line


In the probe of dma, it will allocate device memory and do some
initalization settings. All operations are only at the software
level and don't need the DMA hardware power on. It doesn't need
to resume the device and set the device active as well. here
delete unnecessary operation.

Don't you need to read or write to the device? Without enable that wont
work right?


Yes, it doesn't need to read or write to the device in the probe of DMA.
We will enable the DMA when allocating the DMA channel.

So you will probe even if device is not present! I think it makes sense
to access device registers in probe!

There is another reason why we delete enable/disable and not to access
device in probe. The current driver is applicable to two DMA devices
in different
power domain. For some scenes, one of the domain is power off and when you
probe,  enable the dma with the domain power off may cause crash.

For example, one case is for audio co-processor and DMA serves for it,
DMA's power domain is off during initialization since audio is not used
at that time, so we cannot read/write DMA's register for this kind of cases.

@Baolin Wang
Hi baolin,what's your opinion?

Please add your explanation into the commit message.

Moreover, I think Vinod's concern is reasonable, so you can not move the pm_runtime_enable() after registering the devices, which means users can access the device without powering on.

To solve your problem, I think you can move the pm_runtime_enable() before dma_async_device_register(), then if users want to use DMA in probe stage, the dma_chan_get()--->sprd_dma_alloc_chan_resources() will help to power on it.




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux