Re: [PATCH v3 0/3] Qualcomm Resource Power Manager driver
From: Jassi Brar <hidden>
Date: 2014-06-19 20:01:24
Also in:
linux-arm-kernel, linux-arm-msm, lkml
On 19 June 2014 23:52, Bjorn Andersson [off-list ref] wrote:
On Wed, Jun 18, 2014 at 8:55 PM, Jassi Brar [off-list ref] wrote:quoted
On 18 June 2014 22:14, Kevin Hilman [off-list ref] wrote:[...]quoted
quoted
Thinking more about what this RPM driver actually does, and since you mentioned patterns across SoCs, it seems to me the RPM driver bascially just doing the IPC. So, rather than MFD or drivers/soc, it seems to me that it should be implmented as a controller in the new common mailbox framwork[1] being worked on by Jassi Brar (added to Cc.) IIUC, RPM is actually only doing one-way IPC (it only exposes a write() interface to clients) so it seems like a rather simple implementation of a mailbox controller.Yup, qcom_rpm.c is exactly what drivers/mailbox/ is meant for.The RPM provides a register file with 80ish registers of variable size, to program the hardware you write to these registers. Then you write to a register selector register and then signal an outgoing interrupt.
For mailbox_request_channel(), you have dev_get_qcom_rpm() and qcom_rpm_write() for mbox_send_message() Rest all is what you need to fire off a message to remote or register for interrupts. So nothing new to me.
That is, the interface exposed to the kernel by the SoC is not an mailbox like interface.
I don't understand how having to program 80 registers makes it "not like mailbox"? I have used mailbox api to pass messages between CPUs (using PPI) under same instance of Linux and otoh I think it could also support IPC over gpio (if someone gets that desperate). Mailbox isn't about how you program the h/w. Do whatever is needed to send a message across. BTW I haven't looked closely, but probably you could push the data tables in DT? Cheers -Jassi