diff options
-rw-r--r-- | firmware/target/arm/imx233/debug-imx233.c | 25 | ||||
-rw-r--r-- | firmware/target/arm/imx233/ocotp-imx233.h | 17 | ||||
-rw-r--r-- | firmware/usbstack/usb_core.c | 3 |
3 files changed, 36 insertions, 9 deletions
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c index 76f2c6b066..84d68a780d 100644 --- a/firmware/target/arm/imx233/debug-imx233.c +++ b/firmware/target/arm/imx233/debug-imx233.c | |||
@@ -537,13 +537,13 @@ bool dbg_hw_info_pinctrl(void) | |||
537 | } | 537 | } |
538 | } | 538 | } |
539 | 539 | ||
540 | #if IMX233_SUBTARGET >= 3700 | ||
541 | struct | 540 | struct |
542 | { | 541 | { |
543 | const char *name; | 542 | const char *name; |
544 | volatile uint32_t *addr; | 543 | volatile uint32_t *addr; |
545 | } dbg_ocotp[] = | 544 | } dbg_ocotp[] = |
546 | { | 545 | { |
546 | #if IMX233_SUBTARGET >= 3700 | ||
547 | #define E(n,v) { .name = n, .addr = &v } | 547 | #define E(n,v) { .name = n, .addr = &v } |
548 | E("CUST0", HW_OCOTP_CUSTn(0)), E("CUST1", HW_OCOTP_CUSTn(1)), | 548 | E("CUST0", HW_OCOTP_CUSTn(0)), E("CUST1", HW_OCOTP_CUSTn(1)), |
549 | E("CUST2", HW_OCOTP_CUSTn(2)), E("CUST0", HW_OCOTP_CUSTn(3)), | 549 | E("CUST2", HW_OCOTP_CUSTn(2)), E("CUST0", HW_OCOTP_CUSTn(3)), |
@@ -559,6 +559,23 @@ struct | |||
559 | E("ROM2", HW_OCOTP_ROMn(2)), E("ROM3", HW_OCOTP_ROMn(3)), | 559 | E("ROM2", HW_OCOTP_ROMn(2)), E("ROM3", HW_OCOTP_ROMn(3)), |
560 | E("ROM4", HW_OCOTP_ROMn(4)), E("ROM5", HW_OCOTP_ROMn(5)), | 560 | E("ROM4", HW_OCOTP_ROMn(4)), E("ROM5", HW_OCOTP_ROMn(5)), |
561 | E("ROM6", HW_OCOTP_ROMn(6)), E("ROM7", HW_OCOTP_ROMn(7)), | 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 | bool dbg_hw_info_ocotp(void) | 581 | bool dbg_hw_info_ocotp(void) |
@@ -608,12 +625,6 @@ bool dbg_hw_info_ocotp(void) | |||
608 | yield(); | 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 | bool dbg_hw_info_pwm(void) | 629 | bool dbg_hw_info_pwm(void) |
619 | { | 630 | { |
diff --git a/firmware/target/arm/imx233/ocotp-imx233.h b/firmware/target/arm/imx233/ocotp-imx233.h index 635d7c9267..0827ea0d19 100644 --- a/firmware/target/arm/imx233/ocotp-imx233.h +++ b/firmware/target/arm/imx233/ocotp-imx233.h | |||
@@ -24,9 +24,12 @@ | |||
24 | #include "config.h" | 24 | #include "config.h" |
25 | #include "system.h" | 25 | #include "system.h" |
26 | 26 | ||
27 | #include "regs/regs-ocotp.h" | 27 | /** STMP3700 and over have OCOTP registers |
28 | * where STMP3600 has laser fuses. */ | ||
28 | 29 | ||
29 | #if IMX233_SUBTARGET >= 3700 | 30 | #if IMX233_SUBTARGET >= 3700 |
31 | #include "regs/regs-ocotp.h" | ||
32 | |||
30 | #define IMX233_NUM_OCOTP_CUST 4 | 33 | #define IMX233_NUM_OCOTP_CUST 4 |
31 | #define IMX233_NUM_OCOTP_CRYPTO 4 | 34 | #define IMX233_NUM_OCOTP_CRYPTO 4 |
32 | #define IMX233_NUM_OCOTP_HWCAP 6 | 35 | #define IMX233_NUM_OCOTP_HWCAP 6 |
@@ -53,6 +56,18 @@ static inline uint32_t imx233_ocotp_read(volatile uint32_t *reg) | |||
53 | imx233_ocotp_open_banks(false); | 56 | imx233_ocotp_open_banks(false); |
54 | return val; | 57 | return val; |
55 | } | 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); | ||
69 | return val; | ||
70 | } | ||
56 | #endif | 71 | #endif |
57 | 72 | ||
58 | #endif /* OCOTP_IMX233_H */ | 73 | #endif /* OCOTP_IMX233_H */ |
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c index dbc9367dfb..406f2a71e4 100644 --- a/firmware/usbstack/usb_core.c +++ b/firmware/usbstack/usb_core.c | |||
@@ -333,7 +333,8 @@ static void set_serial_descriptor(void) | |||
333 | } | 333 | } |
334 | usb_string_iSerial.bLength = 36 + (2 * AS3514_UID_LEN); | 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 | static void set_serial_descriptor(void) | 338 | static void set_serial_descriptor(void) |
338 | { | 339 | { |
339 | short* p = &usb_string_iSerial.wString[1]; | 340 | short* p = &usb_string_iSerial.wString[1]; |