1.1 --- a/pkg/devices/lib/cpm/src/x1600.cc Fri Nov 17 14:09:35 2023 +0100
1.2 +++ b/pkg/devices/lib/cpm/src/x1600.cc Fri Nov 17 18:38:44 2023 +0100
1.3 @@ -203,6 +203,7 @@
1.4 Clock_gate_cdbus (Clock_gate1, 1, 2, true), // CDBUS
1.5 Clock_gate_can1 (Clock_gate1, 1, 1, true), // CAN1
1.6 Clock_gate_can0 (Clock_gate1, 1, 0, true), // CAN0
1.7 + Clock_gate_usb_phy (Sleep_control, 1, 23, true), // gate_usbphy_clk
1.8
1.9 Pll_enable_A (Pll_control_A, 1, 0), // APLLEN
1.10 Pll_enable_E (Pll_control_E, 1, 0), // EPLLEN
1.11 @@ -237,8 +238,9 @@
1.12 // Multiplexer instances.
1.13
1.14 #define Clocks(...) ((enum Clock_identifiers []) {__VA_ARGS__})
1.15 +#define Specific(CLOCK) ((enum Clock_identifiers) (CLOCK))
1.16
1.17 -static Mux mux_external (Clock_external),
1.18 +static Mux mux_external (Clock_external),
1.19
1.20 // Clocks being propagated to others.
1.21
1.22 @@ -248,6 +250,7 @@
1.23 mux_hclock2_pclock (Clock_hclock2_pclock),
1.24 mux_i2s0_rx (Clock_i2s0),
1.25 mux_i2s0_tx (Clock_i2s1),
1.26 + mux_usb_phy (Specific(Clock_usb_phy_12MHz)),
1.27
1.28 // Main peripheral and bus clock sources.
1.29
1.30 @@ -265,7 +268,8 @@
1.31 static Clock_null clock_none;
1.32
1.33 static Clock_passive clock_external(24000000),
1.34 - clock_rtc_external(32768);
1.35 + clock_rtc_external(32768),
1.36 + clock_usb_phy_12MHz(12000000);
1.37
1.38 // Note the use of extra parentheses due to the annoying C++ "most vexing parse"
1.39 // problem. See: https://en.wikipedia.org/wiki/Most_vexing_parse
1.40 @@ -300,6 +304,8 @@
1.41
1.42 clock_uart3((Source(mux_external)), (Control(Clock_gate_uart3))),
1.43
1.44 + clock_usb_phy((Source(mux_usb_phy)), (Control(Clock_gate_usb_phy))),
1.45 +
1.46 // Special parent clock for hclock2 and pclock.
1.47
1.48 clock_hclock2_pclock(Source(mux_core, Clock_source_hclock2),
1.49 @@ -414,7 +420,9 @@
1.50
1.51 // Clock register.
1.52
1.53 -static Clock_base *clocks[Clock_identifier_count] = {
1.54 +static Clock_base *clocks[Clock_x1600_identifier_count] = {
1.55 + &clock_none,
1.56 +
1.57 &clock_aic,
1.58 &clock_none, // Clock_aic_bitclk
1.59 &clock_none, // Clock_aic_pclk
1.60 @@ -455,7 +463,6 @@
1.61 &clock_msc0,
1.62 &clock_msc1,
1.63 &clock_none, // Clock_msc2
1.64 - &clock_none, // Clock_none
1.65 &clock_otg0,
1.66 &clock_none, // Clock_otg1
1.67 &clock_pclock,
1.68 @@ -483,7 +490,12 @@
1.69 &clock_none, // Clock_udc
1.70 &clock_none, // Clock_uhc
1.71 &clock_none, // Clock_uprt
1.72 + &clock_usb_phy,
1.73 &clock_none, // Clock_vpu
1.74 +
1.75 + /* X1600-specific clocks. */
1.76 +
1.77 + &clock_usb_phy_12MHz,
1.78 };
1.79
1.80