Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 150
the general rpmsg drivers#177
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
f31530c711da46536a9a19b824e69b6888e4dec7c9a5ba292dc4e35866f963d83f150e824f11b987590d52850c7d7e8241cc205348898b56ac492e99e229638b2b2c0329994e9a1571b63e37a0330f5ef9b4fd6046f92e82129f6c0166e8a5866022d0d428b52111fb939d6740cfec54db3e86089f6c1a6097f86d1580aaadd9e40eaaef45405e42af4610dcc1ace861a44448151cc1a146c95733508477d765b445ef82432806abc246d82e083c0e79d00ad322c314d724b0a88331a35c1565b7518715eb22dc78ebf69caeef8c7df794aa135409bd8c38b0ad87762f6a48c607b6657279ff352463c2d66fd51d5fcfc39620f9a69f8f7dd481a6834e40639765f264132f58c626ba3b35ecce540487fbc28b18b0a73ab7a43386ba9bb297c465461b73d79a875f4359ccf65039e9b7670c7b0c5baad2eb7555dc4dbb2f8e534d9aa7dcfd055762c8a0838aceb55e37e87dbd3e7fa8331cbab242308262ca94346400156b90004ed2cae655d61fa4524bf99a283ba0c5d4007b13c0a0d245a556abfbcb4339d9ed23528d2efe9ea38ada60ce66bc038f766b9384e18019e2bd9ffc1e2511fec04e5c0f8df3a1f5aa7a2440c142507d58e0466e7b81d22a564e3bdd3787481f7a4a2a987f40e581f9c923ea31aa5fcc6e80ee3a048e6850813677418f841de56da1a2a312da3daef2a4bb8ca6d9c9dcd5d51df31d72b8efe438acdc5bafb59050599f9481177ea9b06dd0a68844e66de014677968ad91b06744a59ebe2a38acc34b22f89c39d2d3478a7889a7a41b8f5de04cc9cb647da23c289606f71197128ff8ceeb4f6caa9b276fcb87edf0cc5ea7cf3630c9d77b10f9af239f93a3a2170a5666dc735679b29164cf3e3ae5f868b0266de09bb006d582fbe5e6431460d3d041fb7cfa3e80cfb540aea4a224ab250792bca84d54bc3ba91f71e321c0ec5600801d176bc51a6f9544ae5108d9cf7128681556f44a0064eda1b0749453c732e9d17c653d863dbaa838fd342b260b5cde88ea4b0358befd75160b45fe0097b03f22cc6323c12c51ebd5dabc68881f6c9cf940fa1c4180d409fd442132f5efe1a7503cc6e4dbab0f8a2b93853cb2a28aca856bb513309529bf67a285300a52c250eb34a0e72f481973ce1f6cec89bef7a34f2d7df725efaf4b3c30c3bec6f7ef809d2d6cd920bd4aa4a0b7009590e5e0179600cb362430499cd3922a81bdf04d2381a41be3File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| // FIXME: which SPI bus is the card connected to? | ||
| @spi { | ||
| status = "okay"; | ||
| sue-creek: sof-sue-creek@0 { | ||
| reg = <0>; | ||
| compatible = "sof,spi-sue-creek"; | ||
| // FIXME: frequency value | ||
| spi-max-frequency = <54000000>; | ||
| fw_filename = "intel/sof-spi.ri"; | ||
| tplg_filename = "intel/sof-spi.tplg"; | ||
| // FIXME: GPIO controller and IRQ number and sense | ||
| interrupt-parent = <&gpio1>; | ||
| interrupts = <9 IRQ_TYPE_EDGE_FALLING>; | ||
| irq-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; | ||
| }; | ||
| }; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -15,6 +15,57 @@ config RPMSG_CHAR | ||
| in /dev. They make it possible for user-space programs to send and | ||
| receive rpmsg packets. | ||
| config RPMSG_CLK | ||
| tristate "RPMSG clock API redirection" | ||
| depends on COMMON_CLK | ||
| depends on RPMSG | ||
| help | ||
| Say Y here to redirect clock API from the remote processor. | ||
| With this driver, the remote processor could: | ||
| 1.Reuse the clock driver in the kernel side, or | ||
| 2.Form a hybrid(kernel plus RTOS) clock tree. | ||
| config RPMSG_HOSTFS | ||
| bool "RPMSG fs API redirection" | ||
| depends on RPMSG | ||
| help | ||
| Say Y here to redirect fs API from the remote processor. | ||
| With this driver, the remote processor could: | ||
| 1.Save the tuning parameter during manufacture. | ||
| 2.Load the tuning parameter file in production. | ||
| 3.Save the dump to file for the tuning or debugging. | ||
| 4.Load the module from host dynamically. | ||
| config RPMSG_RTC | ||
| tristate "RPMSG rtc API redirection" | ||
| depends on RPMSG | ||
| help | ||
| Say Y here to redirect rtc API from the remote processor. | ||
| With this driver, the remote processor could: | ||
| 1.Get the wall clock from kernel. | ||
| 2.Wake up from power off state. | ||
| config RPMSG_SYSLOG | ||
| tristate "RPMSG syslog redirection" | ||
| depends on RPMSG | ||
| help | ||
| Say Y here to redirect the syslog/printf from remote processor into | ||
| the kernel log which is very useful to see what happen in the remote | ||
| side. | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure I see the benefit from your explanations. if there is already an access to the syslog, pushing it into the kernel log will add more noise. Unless this helps correlate between activity on the remote processor and the main host I don't see the value. Author There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. syslog/printf here mean the function in the remote processor, not the linux kernel syslog function.:) | ||
| If the remote processor hang during bootup or panic at the runtime, | ||
| We can even cat /sys/kernel/debug/remoteproc/remoteprocX/trace0 to | ||
| get the last log which doesn't output yet. | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this isn't very clear and tells me that the actual usage is simpler and more complete if you directly access to the trace buffer of the remote processor. Author There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since the buffer in DSP/MCU is limited, rpmsg-syslog client will send the log to kernel regularly to avoid loss the log. | ||
| config RPMSG_USRSOCK | ||
| tristate "RPMSG socket API redirection" | ||
| depends on RPMSG | ||
| depends on NET | ||
| help | ||
| Say Y here to redirect sock API from the remote processor. | ||
| This driver could give the remote processor the capability | ||
| to access the internet through any host network interface. | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I just don't understand this explanation either. Author There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Normally, the small DSP/MCU in SoC can't directly access Ethernet/WiFi/Modem hardware and difficult to integrate a full TCP/IP stack. Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I understand this example. However I don't understand how this might be used for audio stuff typically handled by the SOF firmware (pipelines, processing, etc). On most platforms I am aware of, the host runs Linux and there is a small DSP/MCU taking care of audio tasks. That latter unit is under complete control of the host and will run some sort of RTOS/scheduler along with the SOF firmware. In short, I don't see what SOF and this rpmsg IPC have to do with each other. Author There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, rpmsg-usrsock isn't directly relate to audio stuff, but other driver could be used in audio: | ||
| config RPMSG_QCOM_GLINK_NATIVE | ||
| tristate | ||
| select RPMSG | ||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just don't get what this does. No idea...
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SOF defines a simple clock API here;

sof/src/include/sof/clock.h
Since all clocks normally form a tree structure, the leaf clock frequency decide by:
1.The parent clock frequency
2.The current clock hardware setting
But the parent clock instance normally put into the kernel side, DSP/MCU could use this driver to get the parent clock frequency from kernel to avoid the hard code value.
Sometime we have to change the parent clock frequency, this driver can do so too.
We can even move MCU/DSP leaf clock definition to kernel side to reuse kernel clock infrastructure as much as possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Humm, that's ambitious. the platforms I know have a lot of restrictions on how clock changes are done, and to synchronize the operations between what the RTOS requests and the kernel does is no small task.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's not a trival task. Our clk driver expert spend several months to achieve the above picture.