The riscv,isa devicetree property appears not to be fully populated on
some real-world systems. For example, the Sipeed Lichee Pi 4A
(running the vendor U-Boot) reports itself as "rv64imafdcvsu", which
does not include the "zicntr" extension even though the time CSR is
present and functional.
Ignore the riscv,isa property and rely solely on CSR testing to
determine whether or not extensions are present.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
#include <string.h>
#include <errno.h>
#include <ipxe/fdt.h>
-#include <ipxe/hart.h>
+#include <ipxe/csr.h>
#include <ipxe/timer.h>
/** Timer increment per microsecond */
} u;
int rc;
- /* Check if Zicntr extension is supported */
- if ( ( rc = hart_supported ( "_zicntr" ) ) != 0 ) {
- DBGC ( colour, "ZICNTR not supported: %s\n", strerror ( rc ) );
- return rc;
+ /* Check if time CSR can be read */
+ if ( ! csr_can_read ( "time" ) ) {
+ DBGC ( colour, "ZICNTR cannot read TIME CSR\n" );
+ return -ENOTSUP;
}
/* Get timer frequency */
*/
#include <errno.h>
-#include <ipxe/hart.h>
#include <ipxe/csr.h>
#include <ipxe/entropy.h>
#include <ipxe/drbg.h>
* @ret rc Return status code
*/
static int zkr_entropy_enable ( void ) {
- int rc;
-
- /* Check if Zkr extension is supported */
- if ( ( rc = hart_supported ( "_zkr" ) ) != 0 ) {
- DBGC ( colour, "ZKR not supported: %s\n", strerror ( rc ) );
- return rc;
- }
/* Check if seed CSR is accessible in S-mode */
if ( ! csr_can_write ( "seed", 0 ) ) {