From eec442be4d2dd0a1630a820ee43220e635450aa7 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Tue, 26 Nov 2024 21:42:50 +0100 Subject: test: Add a DT test for a VisionFive2 board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- test/test_dt.c | 41 +++++++++++++++++++++++++++++++++++------ test/testdata/vf2.dtb | Bin 0 -> 41088 bytes 2 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 test/testdata/vf2.dtb diff --git a/test/test_dt.c b/test/test_dt.c index 1eb9751..f606d2e 100644 --- a/test/test_dt.c +++ b/test/test_dt.c @@ -4,32 +4,61 @@ #include -int main(void) +void dt_info_from(const char *const path, struct dt_info *info) { - FILE *fh = fopen("./test/testdata/qemu.dtb", "rb"); + FILE *fh = fopen(path, "rb"); assert(fh); fseek(fh, 0, SEEK_END); long fsize = ftell(fh); rewind(fh); - uint32_t *contents = malloc((unsigned long)fsize + 1); - fread(contents, (unsigned long)fsize, sizeof(uint32_t *), fh); + char *contents = malloc((unsigned long)fsize + 1); + assert(contents); + + fread(contents, (unsigned long)fsize, sizeof(char), fh); fclose(fh); contents[fsize] = 0; + get_dt_info((uint32_t *)contents, info); + free(contents); +} + +void test_qemu(void) +{ struct dt_info info = { .cpu_freq = 0, .initrd_start = 0, .initrd_end = 0, }; - get_dt_info(contents, &info); - free(contents); + + dt_info_from("./test/testdata/qemu.dtb", &info); assert(info.initrd_start == 0x84200000); assert(info.initrd_end == 0x84200c00); assert(info.cpu_freq == 0x989680); +} + +void test_vf2(void) +{ + struct dt_info info = { + .cpu_freq = 0, + .initrd_start = 0, + .initrd_end = 0, + }; + + dt_info_from("./test/testdata/vf2.dtb", &info); + + assert(info.initrd_start == 0x46100000); + assert(info.initrd_end == 0x47139ce3); + assert(info.cpu_freq == 0x3d0900); +} + +int main(void) +{ + test_qemu(); + test_vf2(); exit(0); } diff --git a/test/testdata/vf2.dtb b/test/testdata/vf2.dtb new file mode 100644 index 0000000..9dbf194 Binary files /dev/null and b/test/testdata/vf2.dtb differ -- cgit v1.2.3