Am Mittwoch, dem 21.06.2023 um 17:20 +0800 schrieb Sui Jingfeng:
Hi,And debugging is a very different use-case than normal operation. If
On 2023/6/21 17:07, Lucas Stach wrote:
Am Dienstag, dem 20.06.2023 um 17:47 +0800 schrieb Sui Jingfeng:I want to see the IRQ of the device when debugging,
From: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>There is no reason to put this into the kernel log.
Because getting IRQ from a device is platform-dependent, PCI devices have
different methods for getting an IRQ. This patch is a preparation to extend
this driver for supporting the PCI devices.
Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
Cc: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
Cc: Daniel Vetter <daniel@xxxxxxxx>
Signed-off-by: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>
---
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 32 +++++++++++++++++++--------
1 file changed, 23 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index de8c9894967c..a03e81337d8f 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1817,6 +1817,27 @@ static const struct of_device_id etnaviv_gpu_match[] = {
};
MODULE_DEVICE_TABLE(of, etnaviv_gpu_match);
+static int etnaviv_gpu_register_irq(struct etnaviv_gpu *gpu, int irq)
+{
+ struct device *dev = gpu->dev;
+ int err;
+
+ if (irq < 0)
+ return irq;
+
+ err = devm_request_irq(dev, irq, irq_handler, 0, dev_name(dev), gpu);
+ if (err) {
+ dev_err(dev, "failed to request irq %u: %d\n", irq, err);
+ return err;
+ }
+
+ gpu->irq = irq;
+
+ dev_info(dev, "irq(%d) handler registered\n", irq);
etnaviv actually print very less.
This serve as a minimal signal to us the etnaviv_gpu_register_irq()
function is successful at driver load time.
it's needed at all, downgrade this to dev_dbg. This isn't interesting
information for a ordinary user of a system.
What I'm saying is that I don't see the need to introduce this functionIt's no differentThis is to make the patch easy to review, each patch is only introduce a
than other resources to the driver and we don't log each one of those
either.
In fact I don't see any reason for this change in the first place.
Effectively you are moving a single function call into a new function,
which doesn't seem like an improvement.
small function,
at all. All you need to do is move platform_get_irq out into the
platform device code path. The devm_request_irq can stay where it is,
as the only difference between platform and PCI device is how the irq
number is retrieved from the platform.
Regards,
Lucas
which is paving the way for we introducing the PCI device driver.
Otherwise when we introducing the PCI device driver, the patch is looks
ugly,
It is difficult to review.
Regards,
Lucas
+
+ return 0;
+}
+
static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -1837,16 +1858,9 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
return PTR_ERR(gpu->mmio);
/* Get Interrupt: */
- gpu->irq = platform_get_irq(pdev, 0);
- if (gpu->irq < 0)
- return gpu->irq;
-
- err = devm_request_irq(&pdev->dev, gpu->irq, irq_handler, 0,
- dev_name(gpu->dev), gpu);
- if (err) {
- dev_err(dev, "failed to request IRQ%u: %d\n", gpu->irq, err);
+ err = etnaviv_gpu_register_irq(gpu, platform_get_irq(pdev, 0));
+ if (err)
return err;
- }
/* Get Clocks: */
gpu->clk_reg = devm_clk_get_optional(&pdev->dev, "reg");