Re: [PATCH v9 2/3] spi: Add Renesas R-Car Gen3 RPC-IF SPI controller driver

From: Sergei Shtylyov
Date: Wed Apr 17 2019 - 14:44:14 EST


On 04/15/2019 05:36 AM, masonccyang@xxxxxxxxxxx wrote:

>> >> Add a driver for Renesas R-Car Gen3 RPC-IF SPI controller.
>> >>
>> >> Signed-off-by: Mason Yang <masonccyang@xxxxxxxxxxx>
>> >> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx>
>> > [...]
>> >> diff --git a/drivers/spi/spi-renesas-rpc.c b/drivers/spi/spi-renesas-rpc.c
>> >> new file mode 100644
>> >> index 0000000..037f273
>> >> --- /dev/null
>> >> +++ b/drivers/spi/spi-renesas-rpc.c
>> > [...]
>> >> +static int rpc_spi_probe(struct platform_device *pdev)
>> >> +{
>> >> + struct spi_controller *ctlr;
>> >> + struct rpc_mfd *rpc_mfd = dev_get_drvdata(pdev->dev.parent);
>> >> + struct rpc_spi *rpc;
>> >> + int ret;
>> >> +
>> >> + ctlr = spi_alloc_master(&pdev->dev, sizeof(*rpc));
>> >> + if (!ctlr)
>> >> + return -ENOMEM;
>> >> +
>> >> + platform_set_drvdata(pdev, ctlr);
>> >> +
>> >> + rpc = spi_controller_get_devdata(ctlr);
>> >> +
>> >> + ctlr->dev.of_node = pdev->dev.of_node;
>> > [...]
>> >> +
>> >> + pm_runtime_enable(&pdev->dev);
>> >> + ctlr->auto_runtime_pm = true;
>> >
>> > I think this line no longer works as expected with the new
>> probing scheme.

That's because we added another (SPI) device under our MFD.

>> > Have you tested reading? v8 patch still works while v9 patches
>> > hang on doing:
>> >
>> > $ cat /dev/mtd<n>...
>>
>> Sorry, 'od -x', not 'cat'.
>
> root@draak:/# cat /proc/mtd
> dev: size erasesize name
> mtd0: 00040000 00001000 "Bank 1 - Boot parameter"
> mtd1: 00140000 00001000 "Bank 1 - Loader-BL2"
> mtd2: 00040000 00001000 "Bank 1 - Certification"
> mtd3: 00080000 00001000 "Bank 1 - ARM Trusted FW"
> mtd4: 00400000 00001000 "Bank 1 - Reserved-1"
> mtd5: 00300000 00001000 "Bank 1 - U-Boot"
> mtd6: 00200000 00001000 "Bank 1 - Reserved-2"
> mtd7: 00480000 00001000 "Bank 1 - Splash"
> mtd8: 00040000 00001000 "Bank 1 - Device Tree"
> root@draak:/# od -x /dev/mtd1
> 0000000 0000 d280 0001 d280 0002 d280 0003 d280
> 0000020 0004 d280 0005 d280 0006 d280 0007 d280
> 0000040 0008 d280 0009 d280 000a d280 000b d280
> 0000060 000c d280 000d d280 000e d280 000f d280
> 0000100 0010 d280 0011 d280 0012 d280 0013 d280
> 0000120 0014 d280 0015 d280 0016 d280 0017 d280
> 0000140 0018 d280 0019 d280 001a d280 001b d280
> 0000160 001c d280 001d d280 001e d280 1000 d53e
> 0000200 f800 9266 1000 d51e 3fdf d503 3ba0 1005

Still hangs for me. After I patches spi-mem.c and the driver to
call RPM for the MFD, it started working again. Perhaps, that clock
is still enabled on your target. What does the following print (for
the RPC clocks)?

$ mount none -t debugfs /sys/kernel/debug/
$ cat /sys/kernel/debug/clk/clk_summary

> fyi~
>
> best regards,
> Mason

MBR, Sergei