You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The 4 UIO devices I added, appear to be read ONLY, where as the 3 UIO devices that came with the devkit are RW. See attached logs for proof of inference. How do I make the newly added UIO devices RW like their predecessors?
Here is how I added the UIO devices to the BSP of the icicle dev kit:
Modified ~/yocto-dev/build/tmp-glibc/work-shared/icicle-kit-es/kernel-source/arch/riscv/boot/dts/microchip/mpfs-icicle-kit-fabric.dtsi like this:
buffer_device4:buffer@60004000{
compatible = "generic-uio";
reg = <0x0 0x60004000 0x0 0x1000>;
};
6. These modifications were made to the node &fpgalsram:
7. &fpgalsram {
status = "okay";
memory-region = <&buffer_device0>;
};
&fpgalsram_1 {
status = "okay";
memory-region = <&buffer_device1>;
};
&fpgalsram_2 {
status = "okay";
memory-region = <&buffer_device2>;
};
&fpgalsram_3 {
status = "okay";
memory-region = <&buffer_device3>;
};
&fpgalsram_4 {
status = "okay";
memory-region = <&buffer_device4>;
};
8.Modified the reserved-memory node contained here: ~/yocto-dev/build/tmp-glibc/work-shared/icicle-kit-es/kernel-source/arch/riscv/boot/dts/microchip/mpfs-icicle-kit-context-a.dts to include these:
&fpgalsram_1 {
status = "okay";
};
&fpgalsram_2 {
status = "okay";
};
&fpgalsram_3 {
status = "okay";
};
&fpgalsram_4 {
status = "okay";
};
I successfully rebuilt the BSP, by making the modifications a patch and including the patch here: ~/yocto-dev/meta-polarfire-soc-yocto-bsp/meta-polarfire-soc-bsp/recipes-kernel/linux/mpfs-linux.bb
I attached the UIO test app logs that shows that only the first 3 uio devices (i.e. uio0, uio1, uio2) which all have their addresses at 60000000 on the fabric were successfully written to. The other uio devices the app attempted writing to (i.e. uio3, uio4, uio5), did NOT successfully write to the UIO devices, as their previously read values were still the same values at their addresses 60001000, 60002000, and 60003000, after the write attempt to them.
Can anyone please give me an insight as to what I need to do to make these newly added devices Read-Write as opposed to Read ONLY?
I intentionally did not provide the source code for the test app as I don't think it's relevant to the question as I'm sure the test app works as intended.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hello,
The 4 UIO devices I added, appear to be read ONLY, where as the 3 UIO devices that came with the devkit are RW. See attached logs for proof of inference. How do I make the newly added UIO devices RW like their predecessors?
Here is how I added the UIO devices to the BSP of the icicle dev kit:
compatible = "generic-uio";
linux,uio-name = "fpga_lsram_1";
reg = <0x0 0x60001000 0x0 0x1000>;
status = "disabled";
};
fpgalsram_2: uio@60002000 {
compatible = "generic-uio";
linux,uio-name = "fpga_lsram_2";
reg = <0x0 0x60002000 0x0 0x1000>;
status = "disabled";
};
fpgalsram_3: uio@60003000 {
compatible = "generic-uio";
linux,uio-name = "fpga_lsram_3";
reg = <0x0 0x60003000 0x0 0x1000>;
status = "disabled";
};
fpgalsram_4: uio@60004000 {
compatible = "generic-uio";
linux,uio-name = "fpga_lsram_4";
reg = <0x0 0x60004000 0x0 0x1000>;
status = "disabled";
};
compatible = "generic-uio";
reg = <0x0 0x60000000 0x0 0x1000>;
};
buffer_device1:buffer@60001000{
compatible = "generic-uio";
reg = <0x0 0x60001000 0x0 0x1000>;
};
buffer_device2:buffer@60002000{
compatible = "generic-uio";
reg = <0x0 0x60002000 0x0 0x1000>;
};
buffer_device3:buffer@60003000{
compatible = "generic-uio";
reg = <0x0 0x60003000 0x0 0x1000>;
};
buffer_device4:buffer@60004000{
compatible = "generic-uio";
reg = <0x0 0x60004000 0x0 0x1000>;
};
6. These modifications were made to the node &fpgalsram:
7. &fpgalsram {
status = "okay";
memory-region = <&buffer_device0>;
};
&fpgalsram_1 {
status = "okay";
memory-region = <&buffer_device1>;
};
&fpgalsram_2 {
status = "okay";
memory-region = <&buffer_device2>;
};
&fpgalsram_3 {
status = "okay";
memory-region = <&buffer_device3>;
};
&fpgalsram_4 {
status = "okay";
memory-region = <&buffer_device4>;
};
8.Modified the reserved-memory node contained here: ~/yocto-dev/build/tmp-glibc/work-shared/icicle-kit-es/kernel-source/arch/riscv/boot/dts/microchip/mpfs-icicle-kit-context-a.dts to include these:
status = "okay";
};
&fpgalsram_2 {
status = "okay";
};
&fpgalsram_3 {
status = "okay";
};
&fpgalsram_4 {
status = "okay";
};
PolarFire_UIO_TestApp_logs.txt
I attached the UIO test app logs that shows that only the first 3 uio devices (i.e. uio0, uio1, uio2) which all have their addresses at 60000000 on the fabric were successfully written to. The other uio devices the app attempted writing to (i.e. uio3, uio4, uio5), did NOT successfully write to the UIO devices, as their previously read values were still the same values at their addresses 60001000, 60002000, and 60003000, after the write attempt to them.
Can anyone please give me an insight as to what I need to do to make these newly added devices Read-Write as opposed to Read ONLY?
I intentionally did not provide the source code for the test app as I don't think it's relevant to the question as I'm sure the test app works as intended.
Thanks,
SG
Beta Was this translation helpful? Give feedback.
All reactions