Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

imx233: fix ocotop/debug and usb-core for stmp3600

Currently we don't know where the serial number is stored on the
stmp3600. It is probably using the laser fuses but this needs to
be investigated

Change-Id: I1ac25e38b8f65635abb68788ceb65df0a740dabd

+36 -9
+18 -7
firmware/target/arm/imx233/debug-imx233.c
··· 537 537 } 538 538 } 539 539 540 - #if IMX233_SUBTARGET >= 3700 541 540 struct 542 541 { 543 542 const char *name; 544 543 volatile uint32_t *addr; 545 544 } dbg_ocotp[] = 546 545 { 546 + #if IMX233_SUBTARGET >= 3700 547 547 #define E(n,v) { .name = n, .addr = &v } 548 548 E("CUST0", HW_OCOTP_CUSTn(0)), E("CUST1", HW_OCOTP_CUSTn(1)), 549 549 E("CUST2", HW_OCOTP_CUSTn(2)), E("CUST0", HW_OCOTP_CUSTn(3)), ··· 559 559 E("ROM2", HW_OCOTP_ROMn(2)), E("ROM3", HW_OCOTP_ROMn(3)), 560 560 E("ROM4", HW_OCOTP_ROMn(4)), E("ROM5", HW_OCOTP_ROMn(5)), 561 561 E("ROM6", HW_OCOTP_ROMn(6)), E("ROM7", HW_OCOTP_ROMn(7)), 562 + #undef E 563 + #else 564 + #define E(n,v) { .name = n, .addr = &v } 565 + E("LASERFUSE0", HW_RTC_LASERFUSEn(0)), 566 + E("LASERFUSE1", HW_RTC_LASERFUSEn(1)), 567 + E("LASERFUSE2", HW_RTC_LASERFUSEn(2)), 568 + E("LASERFUSE3", HW_RTC_LASERFUSEn(3)), 569 + E("LASERFUSE4", HW_RTC_LASERFUSEn(4)), 570 + E("LASERFUSE5", HW_RTC_LASERFUSEn(5)), 571 + E("LASERFUSE6", HW_RTC_LASERFUSEn(6)), 572 + E("LASERFUSE7", HW_RTC_LASERFUSEn(7)), 573 + E("LASERFUSE8", HW_RTC_LASERFUSEn(8)), 574 + E("LASERFUSE9", HW_RTC_LASERFUSEn(9)), 575 + E("LASERFUSE10", HW_RTC_LASERFUSEn(10)), 576 + E("LASERFUSE11", HW_RTC_LASERFUSEn(11)), 577 + #undef E 578 + #endif 562 579 }; 563 580 564 581 bool dbg_hw_info_ocotp(void) ··· 608 625 yield(); 609 626 } 610 627 } 611 - #else 612 - bool dbg_hw_info_ocotp(void) 613 - { 614 - return true; 615 - } 616 - #endif 617 628 618 629 bool dbg_hw_info_pwm(void) 619 630 {
+16 -1
firmware/target/arm/imx233/ocotp-imx233.h
··· 24 24 #include "config.h" 25 25 #include "system.h" 26 26 27 + /** STMP3700 and over have OCOTP registers 28 + * where STMP3600 has laser fuses. */ 29 + 30 + #if IMX233_SUBTARGET >= 3700 27 31 #include "regs/regs-ocotp.h" 28 32 29 - #if IMX233_SUBTARGET >= 3700 30 33 #define IMX233_NUM_OCOTP_CUST 4 31 34 #define IMX233_NUM_OCOTP_CRYPTO 4 32 35 #define IMX233_NUM_OCOTP_HWCAP 6 ··· 51 54 imx233_ocotp_open_banks(true); 52 55 uint32_t val = *reg; 53 56 imx233_ocotp_open_banks(false); 57 + return val; 58 + } 59 + #else 60 + #include "regs/regs-rtc.h" 61 + 62 + #define IMX233_NUM_OCOTP_LASERFUSE 12 63 + 64 + static inline uint32_t imx233_ocotp_read(volatile uint32_t *reg) 65 + { 66 + BF_WR_V(RTC_UNLOCK, KEY, VAL); 67 + uint32_t val = *reg; 68 + BF_WR(RTC_UNLOCK, KEY, 0); 54 69 return val; 55 70 } 56 71 #endif
+2 -1
firmware/usbstack/usb_core.c
··· 333 333 } 334 334 usb_string_iSerial.bLength = 36 + (2 * AS3514_UID_LEN); 335 335 } 336 - #elif (CONFIG_CPU == IMX233) 336 + #elif (CONFIG_CPU == IMX233) && IMX233_SUBTARGET >= 3700 337 + // FIXME where is the STMP3600 serial number stored ? 337 338 static void set_serial_descriptor(void) 338 339 { 339 340 short* p = &usb_string_iSerial.wString[1];