RTEMS | Improve arm/xilinx-zynqmp-rpu BSP familiy (!230)

Chris Johns (@chris) gitlab at rtems.org
Fri Sep 20 03:21:16 UTC 2024




Chris Johns commented on a discussion on bsps/arm/xilinx-zynqmp-rpu/start/bspreset.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/230#note_112341

 >    (void) source;
 >    (void) code;
 >  
 >    zynqmp_debug_console_flush();
 >  
 > +  /*
 > +   * This is a workaround for:
 > +   *
 > +   * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108658
 > +   */
 > +  __asm__ volatile ("");
 > +
 >    while (true) {
 > -    /* Wait */
 > +    /* Request a soft system reset */
 > +    *reset_ctrl |= UINT32_C(0x10);

I have been look and the PM and there an interface to assert a reset but that may be one of the PL reset signals. 

My PM via SMC gives:

```
zynqmp [/] # pm features   
PM_GET_API_VERSION           (0x0001) : Success
PM_SET_CONFIGURATION         (0x0002) : Success
PM_GET_NODE_STATUS           (0x0003) : Success
PM_GET_OP_CHARACTERISTIC     (0x0004) : Success
PM_REGISTER_NOTIFIER         (0x0005) : Success
PM_REQUEST_SUSPEND           (0x0006) : Success
PM_SELF_SUSPEND              (0x0007) : Success
PM_FORCE_POWERDOWN           (0x0008) : Success
PM_ABORT_SUSPEND             (0x0009) : Success
PM_REQUEST_WAKEUP            (0x000a) : Success
PM_SET_WAKEUP_SOURCE         (0x000b) : Success
PM_SYSTEM_SHUTDOWN           (0x000c) : Success
PM_REQUEST_NODE              (0x000d) : Success
PM_RELEASE_NODE              (0x000e) : Success
PM_SET_REQUIREMENT           (0x000f) : Success
PM_SET_MAX_LATENCY           (0x0010) : Success
PM_RESET_ASSERT              (0x0011) : Success
PM_RESET_GET_STATUS          (0x0012) : Success
PM_MMIO_WRITE                (0x0013) : Success
PM_MMIO_READ                 (0x0014) : Success
PM_INIT_FINALIZE             (0x0015) : Success
PM_FPGA_LOAD                 (0x0016) : Success
PM_FPGA_GET_STATUS           (0x0017) : Success
PM_GET_CHIPID                (0x0018) : Success
PM_SECURE_RSA_AES            (0x0019) : Success
PM_SECURE_SHA                (0x001a) : Success
PM_SECURE_RSA                (0x001b) : Success
PM_PINCTRL_REQUEST           (0x001c) : Success
PM_PINCTRL_RELEASE           (0x001d) : Success
PM_PINCTRL_GET_FUNCTION      (0x001e) : Success
PM_PINCTRL_SET_FUNCTION      (0x001f) : Success
PM_PINCTRL_CONFIG_PARAM_GET  (0x0020) : Success
PM_PINCTRL_CONFIG_PARAM_SET  (0x0021) : Success
PM_IOCTL                     (0x0022) : Success
PM_QUERY_DATA                (0x0023) : Success
PM_CLOCK_ENABLE              (0x0024) : Success
PM_CLOCK_DISABLE             (0x0025) : Success
PM_CLOCK_GETSTATE            (0x0026) : Success
PM_CLOCK_SETDIVIDER          (0x0027) : Success
PM_CLOCK_GETDIVIDER          (0x0028) : Success
PM_CLOCK_SETRATE             (0x0029) : Success
PM_CLOCK_GETRATE             (0x002a) : Success
PM_CLOCK_SETPARENT           (0x002b) : Success
PM_CLOCK_GETPARENT           (0x002c) : Success
PM_SECURE_IMAGE              (0x002d) : Success
PM_FPGA_READ                 (0x002e) : Success
PM_API_RESERVED_1            (0x002f) : Success
PM_PLL_SET_PARAMETER         (0x0030) : Success
PM_PLL_GET_PARAMETER         (0x0031) : Success
PM_PLL_SET_MODE              (0x0032) : Success
PM_PLL_GET_MODE              (0x0033) : Success
PM_REGISTER_ACCESS           (0x0034) : Success
PM_EFUSE_ACCESS              (0x0035) : Success
PM_ADD_SUBSYSTEM             (0x0036) : Not supported
PM_DESTROY_SUBSYSTEM         (0x0037) : Not supported
PM_DESCRIBE_NODES            (0x0038) : Not supported
PM_ADD_NODE                  (0x0039) : Not supported
PM_ADD_NODE_PARENT           (0x003a) : Not supported
PM_ADD_NODE_NAME             (0x003b) : Not supported
PM_ADD_REQUIREMENT           (0x003c) : Not supported
PM_SET_CURRENT_SUBSYSTEM     (0x003d) : Not supported
PM_INIT_NODE                 (0x003e) : Not supported
PM_FEATURE_CHECK             (0x003f) : Success
PM_ISO_CONTROL               (0x0040) : Not supported
PM_ACTIVATE_SUBSYSTEM        (0x0041) : Not supported
PM_WRITE_AES_KEY             (0x0568) : Not supported
PM_LOAD_PDI                  (0x0701) : Not supported
PM_GET_UID_INFO_LIST         (0x0705) : Not supported
PM_GET_META_HEADER_INFO_LIST (0x0706) : Not supported
GET_CALLBACK_DATA            (0x0a01) : Success
PM_SET_SUSPEND_MODE          (0x0a02) : Success
PM_GET_TRUSTZONE_VERSION     (0x0a03) : Success
TF_A_PM_REGISTER_SGI         (0x0a04) : Not supported
PM_BBRAM_WRITE_KEY           (0x0b01) : Not supported
PM_BBRAM_ZEROIZE             (0x0b02) : Not supported
PM_BBRAM_WRITE_USERDATA      (0x0b03) : Not supported
PM_BBRAM_READ_USERDATA       (0x0b04) : Not supported
PM_BBRAM_LOCK_USERDATA       (0x0b05) : Not supported
```

but there maybe more since I defined the id set. 

There is this https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841820/Zynq+UltraScale+MPSoC+Restart+solution#ZynqUltraScale+MPSoCRestartsolution-RPUSubsystemRestart?

I see a couple of conflicting parts here, your desire to have a simple test solution and this is the case with the change and the ability to evolve this BSP and not break yours or others test setup. At the moment I cannot see us meeting both with this change.

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/230#note_112341
You're receiving this email because of your account on gitlab.rtems.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20240920/1e1e47de/attachment-0001.htm>


More information about the bugs mailing list