]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
board: cssi: Read and display MCR board address
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Sun, 14 Apr 2024 14:47:06 +0000 (16:47 +0200)
committerChristophe Leroy <christophe.leroy@csgroup.eu>
Thu, 18 Apr 2024 13:47:46 +0000 (15:47 +0200)
MCR boards are plugged in racks. The position in the rack can be read
in a register.

For MCR3000, that's provided by the FPGA so check it is loaded before
reading the address.

For the other boards, the FPGA is loaded by hardware so it can be
read inconditionnaly.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
board/cssi/common/common.c
board/cssi/mcr3000/mcr3000.c

index 6848efd43be51c39e53d3048842cbc424e259991..0292a9016e89333eede7738428a98d6809d1223c 100644 (file)
@@ -164,7 +164,7 @@ int checkboard_common(void)
 
 void misc_init_r_common(void)
 {
-       u8 tmp, far_id;
+       u8 tmp, far_id, addr;
        int count = 3;
 
        switch (in_8(ADDR_FPGA_R_BASE)) {
@@ -173,6 +173,10 @@ void misc_init_r_common(void)
                if ((in_8(ADDR_FPGA_R_BASE + 0x31) & FPGA_R_ACQ_AL_FAV) == 0)
                        env_set("bootdelay", "60");
 
+               addr = in_8(ADDR_FPGA_R_BASE + 0x43);
+               printf("Board address: 0x%2.2x (System %d Rack %d Slot %d)\n",
+                      addr, addr >> 7, (addr >> 4) & 7, addr & 15);
+
                env_set("config", CFG_BOARD_MCR3000_2G);
                env_set("hostname", CFG_BOARD_MCR3000_2G);
                break;
index 15a2d0d946fbd3a6c65fda0f4d0e20ca102f0231..48e82a902d5f4e317863a560004fb09e592efb2e 100644 (file)
@@ -167,7 +167,12 @@ int misc_init_r(void)
        setbits_be32(&immr->im_cpm.cp_pbdir, 0xf);
        clrbits_be32(&immr->im_cpm.cp_pbdat, 0x1);
 
-       load_fpga();
+       if (!load_fpga()) {
+               u8 addr = in_be16((void *)0x1400009c);
+
+               printf("Board address: 0x%2.2x (System %d Rack %d Slot %d)\n",
+                      addr, addr >> 7, (addr >> 4) & 7, addr & 15);
+       }
 
        /* if BTN_ACQ_AL is pressed then bootdelay is changed to 60 second */
        if ((in_be16(&iop->iop_pcdat) & 0x0004) == 0)