[PATCH v2 05/11] rockchip: idb: add sector1 info
Johan Jonker
jbx6244 at gmail.com
Sat Jul 9 11:49:46 PDT 2022
Add Rockchip IDB sector1 info to make it easier to identify the
IDB date and version. Sector1 data is currently not added by U-boot
tools, but is generated by external tools that have support for it.
Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
---
optional
---
arch/arm/mach-rockchip/rockchip_idb.c | 46 +++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/arch/arm/mach-rockchip/rockchip_idb.c b/arch/arm/mach-rockchip/rockchip_idb.c
index 0692ce1a..37fe6ff2 100644
--- a/arch/arm/mach-rockchip/rockchip_idb.c
+++ b/arch/arm/mach-rockchip/rockchip_idb.c
@@ -59,6 +59,11 @@
#define NAND_CMD_ERASE2 0xd0
#define NAND_CMD_RESET 0xff
+#define BCD2INT(num) (((((num) >> 12) & 0x0F) * 1000) + \
+ ((((num) >> 8) & 0x0F) * 100) + \
+ ((((num) >> 4) & 0x0F) * 10) + \
+ ((num) & 0x0F))
+
#define DATA_STEP 1024
#define OOB_STEP 4
#define LBA 64 + 512 + 33
@@ -80,6 +85,35 @@ struct sector0 {
u8 reserved2[2];
} __packed;
+struct sector1 {
+ u16 sys_reserved_block;
+ u16 disk0_size;
+ u16 disk1_size;
+ u16 disk2_size;
+ u16 disk3_size;
+ u32 chip_tag;
+ u32 machine_id;
+ u16 loader_year;
+ u16 loader_date;
+ u16 loader_ver;
+ u8 reserved[72];
+ u16 flash_data_offset;
+ u16 flash_data_len;
+ u8 reserved2[384];
+ u32 flash_chip_size;
+ u8 reserved1;
+ u8 access_time;
+ u16 phy_block_size;
+ u8 phy_page_size;
+ u8 ecc_bits;
+ u8 reserved3[8];
+ u16 id_block0;
+ u16 id_block1;
+ u16 id_block2;
+ u16 id_block3;
+ u16 id_block4;
+} __packed;
+
struct nand_para_info {
u8 id_bytes;
u8 nand_id[6];
@@ -1475,10 +1509,22 @@ int rk_idb_stop(void)
void rk_idb_print_idb_data(u32 *data)
{
+ struct sector1 *sec1 = (struct sector1 *)((u8 *)data + 512);
struct sector0 *sec0 = (struct sector0 *)data;
printf("\n");
+ printf("DATE : %d-%d-%d\n",
+ BCD2INT(sec1->loader_year),
+ BCD2INT(sec1->loader_date >> 8),
+ BCD2INT(sec1->loader_date & 0xff));
+
+ printf("VERSION : %d.%d\n",
+ BCD2INT(sec1->loader_ver >> 8),
+ BCD2INT(sec1->loader_ver & 0xff));
+
+ printf("\n");
+
printf("magic : %08x\n"
"rc4_flag : %08x\n"
"boot_code1_offset: %d\n"
--
2.20.1
More information about the Linux-rockchip
mailing list