Skip to content

Commit 9a4514f

Browse files
Ben Skeggsairlied
authored andcommitted
drm/nouveau/disp: split sor dp funcs out to their own struct
Signed-off-by: Ben Skeggs <[email protected]> Reviewed-by: Lyude Paul <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
1 parent 79c453a commit 9a4514f

File tree

16 files changed

+157
-154
lines changed

16 files changed

+157
-154
lines changed

drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ nvkm_dp_train_drive(struct lt_state *lt, bool pc)
142142
if (!data)
143143
continue;
144144

145-
ior->func->dp.drive(ior, i, ocfg.pc, ocfg.dc, ocfg.pe, ocfg.tx_pu);
145+
ior->func->dp->drive(ior, i, ocfg.pc, ocfg.dc, ocfg.pe, ocfg.tx_pu);
146146
}
147147

148148
if (lt->repeater)
@@ -171,7 +171,7 @@ nvkm_dp_train_pattern(struct lt_state *lt, u8 pattern)
171171
u8 sink_tp;
172172

173173
OUTP_TRACE(outp, "training pattern %d", pattern);
174-
outp->ior->func->dp.pattern(outp->ior, pattern);
174+
outp->ior->func->dp->pattern(outp->ior, pattern);
175175

176176
if (lt->repeater)
177177
addr = DPCD_LTTPR_PATTERN_SET(lt->repeater);
@@ -328,7 +328,7 @@ nvkm_dp_train_links(struct nvkm_outp *outp, int rate)
328328
);
329329
}
330330

331-
ret = ior->func->dp.links(ior, outp->dp.aux);
331+
ret = ior->func->dp->links(ior, outp->dp.aux);
332332
if (ret) {
333333
if (ret < 0) {
334334
OUTP_ERR(outp, "train failed with %d", ret);
@@ -337,7 +337,7 @@ nvkm_dp_train_links(struct nvkm_outp *outp, int rate)
337337
return 0;
338338
}
339339

340-
ior->func->dp.power(ior, ior->dp.nr);
340+
ior->func->dp->power(ior, ior->dp.nr);
341341

342342
/* Select LTTPR non-transparent mode if we have a valid configuration,
343343
* use transparent mode otherwise.

drivers/gpu/drm/nouveau/nvkm/engine/disp/g94.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ g94_sor_dp_drive(struct nvkm_ior *sor, int ln, int pc, int dc, int pe, int pu)
6565
{
6666
struct nvkm_device *device = sor->disp->engine.subdev.device;
6767
const u32 loff = nv50_sor_link(sor);
68-
const u32 shift = sor->func->dp.lanes[ln] * 8;
68+
const u32 shift = sor->func->dp->lanes[ln] * 8;
6969
u32 data[3];
7070

7171
data[0] = nvkm_rd32(device, 0x61c118 + loff) & ~(0x000000ff << shift);
@@ -107,7 +107,7 @@ g94_sor_dp_power(struct nvkm_ior *sor, int nr)
107107
u32 mask = 0, i;
108108

109109
for (i = 0; i < nr; i++)
110-
mask |= 1 << sor->func->dp.lanes[i];
110+
mask |= 1 << sor->func->dp->lanes[i];
111111

112112
nvkm_mask(device, 0x61c130 + loff, 0x0000000f, mask);
113113
nvkm_mask(device, 0x61c034 + soff, 0x80000000, 0x80000000);
@@ -137,6 +137,18 @@ g94_sor_dp_links(struct nvkm_ior *sor, struct nvkm_i2c_aux *aux)
137137
return 0;
138138
}
139139

140+
const struct nvkm_ior_func_dp
141+
g94_sor_dp = {
142+
.lanes = { 2, 1, 0, 3},
143+
.links = g94_sor_dp_links,
144+
.power = g94_sor_dp_power,
145+
.pattern = g94_sor_dp_pattern,
146+
.drive = g94_sor_dp_drive,
147+
.audio_sym = g94_sor_dp_audio_sym,
148+
.activesym = g94_sor_dp_activesym,
149+
.watermark = g94_sor_dp_watermark,
150+
};
151+
140152
static bool
141153
g94_sor_war_needed(struct nvkm_ior *sor)
142154
{
@@ -283,16 +295,7 @@ g94_sor = {
283295
.clock = nv50_sor_clock,
284296
.war_2 = g94_sor_war_2,
285297
.war_3 = g94_sor_war_3,
286-
.dp = {
287-
.lanes = { 2, 1, 0, 3},
288-
.links = g94_sor_dp_links,
289-
.power = g94_sor_dp_power,
290-
.pattern = g94_sor_dp_pattern,
291-
.drive = g94_sor_dp_drive,
292-
.audio_sym = g94_sor_dp_audio_sym,
293-
.activesym = g94_sor_dp_activesym,
294-
.watermark = g94_sor_dp_watermark,
295-
},
298+
.dp = &g94_sor_dp,
296299
};
297300

298301
static int

drivers/gpu/drm/nouveau/nvkm/engine/disp/ga102.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,19 @@ ga102_sor_dp_links(struct nvkm_ior *sor, struct nvkm_i2c_aux *aux)
6868
return 0;
6969
}
7070

71+
static const struct nvkm_ior_func_dp
72+
ga102_sor_dp = {
73+
.lanes = { 0, 1, 2, 3 },
74+
.links = ga102_sor_dp_links,
75+
.power = g94_sor_dp_power,
76+
.pattern = gm107_sor_dp_pattern,
77+
.drive = gm200_sor_dp_drive,
78+
.vcpi = tu102_sor_dp_vcpi,
79+
.audio = gv100_sor_dp_audio,
80+
.audio_sym = gv100_sor_dp_audio_sym,
81+
.watermark = gv100_sor_dp_watermark,
82+
};
83+
7184
static void
7285
ga102_sor_clock(struct nvkm_ior *sor)
7386
{
@@ -96,17 +109,7 @@ ga102_sor = {
96109
.ctrl = gv100_sor_hdmi_ctrl,
97110
.scdc = gm200_sor_hdmi_scdc,
98111
},
99-
.dp = {
100-
.lanes = { 0, 1, 2, 3 },
101-
.links = ga102_sor_dp_links,
102-
.power = g94_sor_dp_power,
103-
.pattern = gm107_sor_dp_pattern,
104-
.drive = gm200_sor_dp_drive,
105-
.vcpi = tu102_sor_dp_vcpi,
106-
.audio = gv100_sor_dp_audio,
107-
.audio_sym = gv100_sor_dp_audio_sym,
108-
.watermark = gv100_sor_dp_watermark,
109-
},
112+
.dp = &ga102_sor_dp,
110113
.hda = {
111114
.hpd = gf119_sor_hda_hpd,
112115
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ gf119_sor_dp_drive(struct nvkm_ior *sor, int ln, int pc, int dc, int pe, int pu)
123123
{
124124
struct nvkm_device *device = sor->disp->engine.subdev.device;
125125
const u32 loff = nv50_sor_link(sor);
126-
const u32 shift = sor->func->dp.lanes[ln] * 8;
126+
const u32 shift = sor->func->dp->lanes[ln] * 8;
127127
u32 data[4];
128128

129129
data[0] = nvkm_rd32(device, 0x61c118 + loff) & ~(0x000000ff << shift);
@@ -140,7 +140,7 @@ gf119_sor_dp_drive(struct nvkm_ior *sor, int ln, int pc, int dc, int pe, int pu)
140140
nvkm_wr32(device, 0x61c13c + loff, data[3] | (pc << shift));
141141
}
142142

143-
void
143+
static void
144144
gf119_sor_dp_pattern(struct nvkm_ior *sor, int pattern)
145145
{
146146
struct nvkm_device *device = sor->disp->engine.subdev.device;
@@ -181,6 +181,19 @@ gf119_sor_dp_links(struct nvkm_ior *sor, struct nvkm_i2c_aux *aux)
181181
return 0;
182182
}
183183

184+
const struct nvkm_ior_func_dp
185+
gf119_sor_dp = {
186+
.lanes = { 2, 1, 0, 3 },
187+
.links = gf119_sor_dp_links,
188+
.power = g94_sor_dp_power,
189+
.pattern = gf119_sor_dp_pattern,
190+
.drive = gf119_sor_dp_drive,
191+
.vcpi = gf119_sor_dp_vcpi,
192+
.audio = gf119_sor_dp_audio,
193+
.audio_sym = gf119_sor_dp_audio_sym,
194+
.watermark = gf119_sor_dp_watermark,
195+
};
196+
184197
static void
185198
gf119_sor_hdmi_ctrl(struct nvkm_ior *ior, int head, bool enable, u8 max_ac_packet,
186199
u8 rekey, u8 *avi, u8 avi_size, u8 *vendor, u8 vendor_size)
@@ -288,17 +301,7 @@ gf119_sor = {
288301
.hdmi = {
289302
.ctrl = gf119_sor_hdmi_ctrl,
290303
},
291-
.dp = {
292-
.lanes = { 2, 1, 0, 3 },
293-
.links = gf119_sor_dp_links,
294-
.power = g94_sor_dp_power,
295-
.pattern = gf119_sor_dp_pattern,
296-
.drive = gf119_sor_dp_drive,
297-
.vcpi = gf119_sor_dp_vcpi,
298-
.audio = gf119_sor_dp_audio,
299-
.audio_sym = gf119_sor_dp_audio_sym,
300-
.watermark = gf119_sor_dp_watermark,
301-
},
304+
.dp = &gf119_sor_dp,
302305
.hda = {
303306
.hpd = gf119_sor_hda_hpd,
304307
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gk104.c

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,7 @@ gk104_sor = {
9595
.hdmi = {
9696
.ctrl = gk104_sor_hdmi_ctrl,
9797
},
98-
.dp = {
99-
.lanes = { 2, 1, 0, 3 },
100-
.links = gf119_sor_dp_links,
101-
.power = g94_sor_dp_power,
102-
.pattern = gf119_sor_dp_pattern,
103-
.drive = gf119_sor_dp_drive,
104-
.vcpi = gf119_sor_dp_vcpi,
105-
.audio = gf119_sor_dp_audio,
106-
.audio_sym = gf119_sor_dp_audio_sym,
107-
.watermark = gf119_sor_dp_watermark,
108-
},
98+
.dp = &gf119_sor_dp,
10999
.hda = {
110100
.hpd = gf119_sor_hda_hpd,
111101
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,19 @@ gm107_sor_dp_pattern(struct nvkm_ior *sor, int pattern)
5252
nvkm_mask(device, 0x61c12c + soff, mask, data);
5353
}
5454

55+
static const struct nvkm_ior_func_dp
56+
gm107_sor_dp = {
57+
.lanes = { 0, 1, 2, 3 },
58+
.links = gf119_sor_dp_links,
59+
.power = g94_sor_dp_power,
60+
.pattern = gm107_sor_dp_pattern,
61+
.drive = gf119_sor_dp_drive,
62+
.vcpi = gf119_sor_dp_vcpi,
63+
.audio = gf119_sor_dp_audio,
64+
.audio_sym = gf119_sor_dp_audio_sym,
65+
.watermark = gf119_sor_dp_watermark,
66+
};
67+
5568
static const struct nvkm_ior_func
5669
gm107_sor = {
5770
.state = gf119_sor_state,
@@ -60,17 +73,7 @@ gm107_sor = {
6073
.hdmi = {
6174
.ctrl = gk104_sor_hdmi_ctrl,
6275
},
63-
.dp = {
64-
.lanes = { 0, 1, 2, 3 },
65-
.links = gf119_sor_dp_links,
66-
.power = g94_sor_dp_power,
67-
.pattern = gm107_sor_dp_pattern,
68-
.drive = gf119_sor_dp_drive,
69-
.vcpi = gf119_sor_dp_vcpi,
70-
.audio = gf119_sor_dp_audio,
71-
.audio_sym = gf119_sor_dp_audio_sym,
72-
.watermark = gf119_sor_dp_watermark,
73-
},
76+
.dp = &gm107_sor_dp,
7477
.hda = {
7578
.hpd = gf119_sor_hda_hpd,
7679
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gm200.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ gm200_sor_dp_drive(struct nvkm_ior *sor, int ln, int pc, int dc, int pe, int pu)
3535
{
3636
struct nvkm_device *device = sor->disp->engine.subdev.device;
3737
const u32 loff = nv50_sor_link(sor);
38-
const u32 shift = sor->func->dp.lanes[ln] * 8;
38+
const u32 shift = sor->func->dp->lanes[ln] * 8;
3939
u32 data[4];
4040

4141
pu &= 0x0f;
@@ -54,6 +54,19 @@ gm200_sor_dp_drive(struct nvkm_ior *sor, int ln, int pc, int dc, int pe, int pu)
5454
nvkm_wr32(device, 0x61c13c + loff, data[3] | (pc << shift));
5555
}
5656

57+
const struct nvkm_ior_func_dp
58+
gm200_sor_dp = {
59+
.lanes = { 0, 1, 2, 3 },
60+
.links = gf119_sor_dp_links,
61+
.power = g94_sor_dp_power,
62+
.pattern = gm107_sor_dp_pattern,
63+
.drive = gm200_sor_dp_drive,
64+
.vcpi = gf119_sor_dp_vcpi,
65+
.audio = gf119_sor_dp_audio,
66+
.audio_sym = gf119_sor_dp_audio_sym,
67+
.watermark = gf119_sor_dp_watermark,
68+
};
69+
5770
void
5871
gm200_sor_hdmi_scdc(struct nvkm_ior *ior, u8 scdc)
5972
{
@@ -122,17 +135,7 @@ gm200_sor = {
122135
.ctrl = gk104_sor_hdmi_ctrl,
123136
.scdc = gm200_sor_hdmi_scdc,
124137
},
125-
.dp = {
126-
.lanes = { 0, 1, 2, 3 },
127-
.links = gf119_sor_dp_links,
128-
.power = g94_sor_dp_power,
129-
.pattern = gm107_sor_dp_pattern,
130-
.drive = gm200_sor_dp_drive,
131-
.vcpi = gf119_sor_dp_vcpi,
132-
.audio = gf119_sor_dp_audio,
133-
.audio_sym = gf119_sor_dp_audio_sym,
134-
.watermark = gf119_sor_dp_watermark,
135-
},
138+
.dp = &gm200_sor_dp,
136139
.hda = {
137140
.hpd = gf119_sor_hda_hpd,
138141
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gp100.c

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,7 @@ gp100_sor = {
4141
.ctrl = gk104_sor_hdmi_ctrl,
4242
.scdc = gm200_sor_hdmi_scdc,
4343
},
44-
.dp = {
45-
.lanes = { 0, 1, 2, 3 },
46-
.links = gf119_sor_dp_links,
47-
.power = g94_sor_dp_power,
48-
.pattern = gm107_sor_dp_pattern,
49-
.drive = gm200_sor_dp_drive,
50-
.vcpi = gf119_sor_dp_vcpi,
51-
.audio = gf119_sor_dp_audio,
52-
.audio_sym = gf119_sor_dp_audio_sym,
53-
.watermark = gf119_sor_dp_watermark,
54-
},
44+
.dp = &gm200_sor_dp,
5545
.hda = {
5646
.hpd = gf119_sor_hda_hpd,
5747
.eld = gf119_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gt215.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,19 @@ gt215_sor_dp_audio(struct nvkm_ior *sor, int head, bool enable)
7373
);
7474
}
7575

76+
static const struct nvkm_ior_func_dp
77+
gt215_sor_dp = {
78+
.lanes = { 2, 1, 0, 3 },
79+
.links = g94_sor_dp_links,
80+
.power = g94_sor_dp_power,
81+
.pattern = g94_sor_dp_pattern,
82+
.drive = g94_sor_dp_drive,
83+
.audio = gt215_sor_dp_audio,
84+
.audio_sym = g94_sor_dp_audio_sym,
85+
.activesym = g94_sor_dp_activesym,
86+
.watermark = g94_sor_dp_watermark,
87+
};
88+
7689
void
7790
gt215_sor_hdmi_ctrl(struct nvkm_ior *ior, int head, bool enable, u8 max_ac_packet,
7891
u8 rekey, u8 *avi, u8 avi_size, u8 *vendor, u8 vendor_size)
@@ -148,17 +161,7 @@ gt215_sor = {
148161
.hdmi = {
149162
.ctrl = gt215_sor_hdmi_ctrl,
150163
},
151-
.dp = {
152-
.lanes = { 2, 1, 0, 3 },
153-
.links = g94_sor_dp_links,
154-
.power = g94_sor_dp_power,
155-
.pattern = g94_sor_dp_pattern,
156-
.drive = g94_sor_dp_drive,
157-
.audio = gt215_sor_dp_audio,
158-
.audio_sym = g94_sor_dp_audio_sym,
159-
.activesym = g94_sor_dp_activesym,
160-
.watermark = g94_sor_dp_watermark,
161-
},
164+
.dp = &gt215_sor_dp,
162165
.hda = {
163166
.hpd = gt215_sor_hda_hpd,
164167
.eld = gt215_sor_hda_eld,

drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.c

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,18 @@ gv100_sor_dp_audio(struct nvkm_ior *sor, int head, bool enable)
7979
);
8080
}
8181

82+
static const struct nvkm_ior_func_dp
83+
gv100_sor_dp = {
84+
.lanes = { 0, 1, 2, 3 },
85+
.links = gf119_sor_dp_links,
86+
.power = g94_sor_dp_power,
87+
.pattern = gm107_sor_dp_pattern,
88+
.drive = gm200_sor_dp_drive,
89+
.audio = gv100_sor_dp_audio,
90+
.audio_sym = gv100_sor_dp_audio_sym,
91+
.watermark = gv100_sor_dp_watermark,
92+
};
93+
8294
void
8395
gv100_sor_hdmi_ctrl(struct nvkm_ior *ior, int head, bool enable, u8 max_ac_packet,
8496
u8 rekey, u8 *avi, u8 avi_size, u8 *vendor, u8 vendor_size)
@@ -177,16 +189,7 @@ gv100_sor = {
177189
.ctrl = gv100_sor_hdmi_ctrl,
178190
.scdc = gm200_sor_hdmi_scdc,
179191
},
180-
.dp = {
181-
.lanes = { 0, 1, 2, 3 },
182-
.links = gf119_sor_dp_links,
183-
.power = g94_sor_dp_power,
184-
.pattern = gm107_sor_dp_pattern,
185-
.drive = gm200_sor_dp_drive,
186-
.audio = gv100_sor_dp_audio,
187-
.audio_sym = gv100_sor_dp_audio_sym,
188-
.watermark = gv100_sor_dp_watermark,
189-
},
192+
.dp = &gv100_sor_dp,
190193
.hda = {
191194
.hpd = gf119_sor_hda_hpd,
192195
.eld = gf119_sor_hda_eld,

0 commit comments

Comments
 (0)