Skip to content

Commit 346bb7f

Browse files
committed
chickens: Initial T8122 Everest/Sawtooth support
Signed-off-by: Janne Grunau <j@jannau.net>
1 parent ecd9646 commit 346bb7f

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

src/chickens.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ void init_t6020_blizzard(int rev);
2626
void init_t6020_avalanche(int rev);
2727
void init_t6021_blizzard(int rev);
2828
void init_t6021_avalanche(int rev);
29+
void init_t8122_sawtooth(int rev);
30+
void init_t8122_everest(int rev);
2931
void init_t6030_sawtooth(int rev);
3032
void init_t6030_everest(int rev);
3133
void init_t6031_sawtooth(int rev);
@@ -147,6 +149,8 @@ const struct midr_part_info midr_parts[] = {
147149
{MIDR_PART_T6030_SAWTOOTH, "M3 Pro Sawtooth", init_t6030_sawtooth, &features_m3},
148150
{MIDR_PART_T6031_EVEREST, "M3 Max Everest", init_t6031_everest, &features_m3},
149151
{MIDR_PART_T6031_SAWTOOTH, "M3 Max Sawtooth", init_t6031_sawtooth, &features_m3},
152+
{MIDR_PART_T8122_EVEREST, "M3 Everest", init_t8122_everest, &features_m3},
153+
{MIDR_PART_T8122_SAWTOOTH, "M3 Sawtooth", init_t8122_sawtooth, &features_m3},
150154
{MIDR_PART_T8132_DONAN_ECORE, "M4 Donan (E core)", NULL, &features_m4},
151155
{MIDR_PART_T8132_DONAN_PCORE, "M4 Donan (P core)", NULL, &features_m4},
152156
};

src/chickens_everest.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,43 @@ static void init_common_everest(void)
3636
reg_clr(s3_0_c15_c2_4, BIT(0) | BIT(1) | BIT(16) | BIT(17) | BIT(18) | BIT(22));
3737
}
3838

39+
void init_t8122_everest(int rev)
40+
{
41+
UNUSED(rev);
42+
43+
reg_clr(SYS_IMP_APL_HID3, BIT(2));
44+
reg_mask(SYS_IMP_APL_HID3, GENMASK(62, 56), BIT(59));
45+
reg_set(SYS_IMP_APL_HID9, BIT(17));
46+
47+
reg_mask(SYS_IMP_APL_HID13,
48+
HID13_POST_OFF_CYCLES_MASK | HID13_POST_ON_CYCLES_MASK | HID13_GROUP0_FF1_DELAY_MASK |
49+
HID13_GROUP0_FF2_DELAY_MASK | HID13_GROUP0_FF3_DELAY_MASK |
50+
HID13_GROUP0_FF4_DELAY_MASK | HID13_GROUP0_FF5_DELAY_MASK |
51+
HID13_GROUP0_FF6_DELAY_MASK | HID13_GROUP0_FF7_DELAY_MASK |
52+
HID13_RESET_CYCLES_MASK,
53+
HID13_POST_OFF_CYCLES(4) | HID13_POST_ON_CYCLES(5) | HID13_GROUP0_FF1_DELAY(4) |
54+
HID13_GROUP0_FF2_DELAY(4) | HID13_GROUP0_FF3_DELAY(4) | HID13_GROUP0_FF4_DELAY(4) |
55+
HID13_GROUP0_FF5_DELAY(4) | HID13_GROUP0_FF6_DELAY(4) | HID13_GROUP0_FF7_DELAY(4) |
56+
HID13_RESET_CYCLES(0));
57+
58+
msr(SYS_IMP_APL_HID26,
59+
HID26_GROUP1_OFFSET(0x16 | (0x2 << 8) | (0x2 << 12) | (0x2 << 16) | (0x2 << 20) |
60+
(0x2 << 24) | (0x2 << 28) | (0x2uL << 32)) |
61+
HID26_GROUP2_OFFSET(0x23 | (0x1 << 8) | (0x1 << 12) | (0x1 << 16) | (0x1 << 20) |
62+
(0x1 << 24)));
63+
64+
reg_mask(SYS_IMP_APL_HID27,
65+
GENMASK(43, 40) | GENMASK(39, 36) | GENMASK(35, 32) | GENMASK(31, 28) |
66+
GENMASK(27, 24) | GENMASK(23, 20) | GENMASK(19, 16) | GENMASK(15, 8) |
67+
GENMASK(7, 4) | GENMASK(3, 0),
68+
BIT(40) | BIT(36) | BIT(32) | BIT(28) | BIT(24) | BIT(20) | BIT(16) | 0x2b00uL |
69+
BIT(4) | BIT(0));
70+
reg_set(SYS_IMP_APL_HID18,
71+
HID18_GEXIT_EL_SPECULATION_DISABLE | HID18_GENTER_SPECULATION_DISABLE);
72+
reg_clr(s3_0_c15_c2_4, BIT(0) | BIT(1) | BIT(16) | BIT(17) | BIT(18) | BIT(22));
73+
reg_set(SYS_IMP_APL_HID16, BIT(54));
74+
}
75+
3976
void init_t6030_everest(int rev)
4077
{
4178
UNUSED(rev);

src/chickens_sawtooth.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ static void init_common_sawtooth(void)
88
reg_set(SYS_IMP_APL_EHID0, EHID0_BLI_UNK32);
99
}
1010

11+
void init_t8122_sawtooth(void)
12+
{
13+
reg_clr(SYS_IMP_APL_EHID9, EHID9_DEV_2_THROTTLE_ENABLE);
14+
reg_clr(SYS_IMP_APL_EHID9, BIT(53));
15+
reg_mask(SYS_IMP_APL_EHID9, EHID9_DEV_2_THROTTLE_LIMIT_MASK, EHID9_DEV_2_THROTTLE_LIMIT(8));
16+
reg_set(SYS_IMP_APL_EHID10, BIT(47));
17+
reg_set(SYS_IMP_APL_EHID7, BIT(6));
18+
}
19+
1120
void init_t6030_sawtooth(int rev)
1221
{
1322
UNUSED(rev);

src/cpu_regs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,8 @@
293293
#define HID7_FORCE_NONSPEC_TARGET_TIMER_SEL(x) ((ULONG(x)) << 24)
294294
#define HID7_FORCE_NONSPEC_TARGET_TIMER_SEL_MASK (3UL << 24)
295295

296+
#define SYS_IMP_APL_EHID7 sys_reg(3, 0, 15, 7, 1)
297+
296298
#define SYS_IMP_APL_HID8 sys_reg(3, 0, 15, 8, 0)
297299
#define HID8_DATA_SET_ID0_VALUE(x) ((ULONG(x)) << 4)
298300
#define HID8_DATA_SET_ID0_VALUE_MASK GENMASK(7, 4)

0 commit comments

Comments
 (0)