Hello Renesas SoC people,

One difference between R-Car/RZG vs RZA is that there is no status bits for the 
MSTP clocks.
This means even though you enable a clock by clearing the module-stop bit, 
you're not really guaranteed that the peripheral block is ready to be used.

For the most part, the register interface is accessible, but usage of the HW 
might not be fully ready.

Now that clock enable/disable has been fixed for RZ/A1 and actually works, you 
can start to see things break.

For RZ/A1 (r7s72100) you can see this for the I2C driver (i2c-riic.c) and SPI 
driver (spi-rspi.c).
Both of these drivers disable the clock in between EVERY TRANSFER as a means of 
runtime pm.

Since SDHI (tmio) needs to keep the clock running for the card detect logic, it 
does not implement runtime pm, so it's OK.


The only way to really fix this for RZ/A1 is to put an arbitrary delay in the 
clk-mstp.c driver:

        spin_lock_irqsave(&group->lock, flags);

        value = cpg_mstp_read(group, group->smstpcr);
        if (enable)
                value &= ~bitmask;
        else
                value |= bitmask;
        cpg_mstp_write(group, value, group->smstpcr);

        spin_unlock_irqrestore(&group->lock, flags);

+       if (enable || !group->mstpsr)
+               udelay(100);
+
        if (!enable || !group->mstpsr)
                return 0;


Or, just remove runtime PM for RZ/A1.

* i2c-riic.c: This driver is just for the RZ/A series, so just remove runtime 
pm completely
* spi-rspi.c: Disable runtime pm just for RZ/A series parts


Therefore, before I start firing off patches to remove runtime PM for RZ/A, 
does anyone have an opinion one way of the other????


Regards,
Chris

Reply via email to