Lines Matching refs:outp
36 struct nvkm_output_dp *outp = (void *)base; in nvkm_output_dp_train() local
43 ret = nv_rdaux(outp->base.edid, DPCD_LC00_LINK_BW_SET, link, 2); in nvkm_output_dp_train()
58 ret = nv_rdaux(outp->base.edid, DPCD_LS02, stat, 3); in nvkm_output_dp_train()
80 if (retrain || !atomic_read(&outp->lt.done)) { in nvkm_output_dp_train()
82 if (outp->dpcd[DPCD_RC00_DPCD_REV] == 0x00) { in nvkm_output_dp_train()
83 outp->dpcd[DPCD_RC01_MAX_LINK_RATE] = in nvkm_output_dp_train()
84 outp->base.info.dpconf.link_bw; in nvkm_output_dp_train()
85 outp->dpcd[DPCD_RC02] = in nvkm_output_dp_train()
86 outp->base.info.dpconf.link_nr; in nvkm_output_dp_train()
88 atomic_set(&outp->lt.done, 0); in nvkm_output_dp_train()
89 schedule_work(&outp->lt.work); in nvkm_output_dp_train()
91 nvkm_notify_get(&outp->irq); in nvkm_output_dp_train()
95 if (!wait_event_timeout(outp->lt.wait, in nvkm_output_dp_train()
96 atomic_read(&outp->lt.done), in nvkm_output_dp_train()
105 nvkm_output_dp_enable(struct nvkm_output_dp *outp, bool present) in nvkm_output_dp_enable() argument
107 struct nvkm_i2c_port *port = outp->base.edid; in nvkm_output_dp_enable()
109 if (!outp->present) { in nvkm_output_dp_enable()
112 outp->present = true; in nvkm_output_dp_enable()
114 nvkm_output_dp_train(&outp->base, 0, true); in nvkm_output_dp_enable()
116 if (outp->present) { in nvkm_output_dp_enable()
119 outp->present = false; in nvkm_output_dp_enable()
121 atomic_set(&outp->lt.done, 0); in nvkm_output_dp_enable()
126 nvkm_output_dp_detect(struct nvkm_output_dp *outp) in nvkm_output_dp_detect() argument
128 struct nvkm_i2c_port *port = outp->base.edid; in nvkm_output_dp_detect()
131 ret = nv_rdaux(outp->base.edid, DPCD_RC00_DPCD_REV, in nvkm_output_dp_detect()
132 outp->dpcd, sizeof(outp->dpcd)); in nvkm_output_dp_detect()
133 nvkm_output_dp_enable(outp, ret == 0); in nvkm_output_dp_detect()
142 struct nvkm_output_dp *outp; in nvkm_output_dp_hpd() local
147 list_for_each_entry(outp, &disp->outp, base.head) { in nvkm_output_dp_hpd()
148 if (outp->base.conn == conn && in nvkm_output_dp_hpd()
149 outp->info.type == DCB_OUTPUT_DP) { in nvkm_output_dp_hpd()
151 nvkm_output_dp_detect(outp); in nvkm_output_dp_hpd()
171 struct nvkm_output_dp *outp = container_of(notify, typeof(*outp), irq); in nvkm_output_dp_irq() local
172 struct nvkm_disp *disp = nvkm_disp(outp); in nvkm_output_dp_irq()
177 int index = outp->base.info.connector; in nvkm_output_dp_irq()
180 nvkm_output_dp_train(&outp->base, 0, true); in nvkm_output_dp_irq()
189 struct nvkm_output_dp *outp = (void *)object; in _nvkm_output_dp_fini() local
190 nvkm_notify_put(&outp->irq); in _nvkm_output_dp_fini()
191 nvkm_output_dp_enable(outp, false); in _nvkm_output_dp_fini()
192 return nvkm_output_fini(&outp->base, suspend); in _nvkm_output_dp_fini()
198 struct nvkm_output_dp *outp = (void *)object; in _nvkm_output_dp_init() local
199 nvkm_output_dp_detect(outp); in _nvkm_output_dp_init()
200 return nvkm_output_init(&outp->base); in _nvkm_output_dp_init()
206 struct nvkm_output_dp *outp = (void *)object; in _nvkm_output_dp_dtor() local
207 nvkm_notify_fini(&outp->irq); in _nvkm_output_dp_dtor()
208 nvkm_output_destroy(&outp->base); in _nvkm_output_dp_dtor()
220 struct nvkm_output_dp *outp; in nvkm_output_dp_create_() local
227 outp = *pobject; in nvkm_output_dp_create_()
231 nvkm_notify_fini(&outp->base.conn->hpd); in nvkm_output_dp_create_()
234 if (!outp->base.edid) { in nvkm_output_dp_create_()
240 data = nvbios_dpout_match(bios, outp->base.info.hasht, in nvkm_output_dp_create_()
241 outp->base.info.hashm, &outp->version, in nvkm_output_dp_create_()
242 &hdr, &cnt, &len, &outp->info); in nvkm_output_dp_create_()
248 DBG("bios dp %02x %02x %02x %02x\n", outp->version, hdr, cnt, len); in nvkm_output_dp_create_()
251 INIT_WORK(&outp->lt.work, nvkm_dp_train); in nvkm_output_dp_create_()
252 init_waitqueue_head(&outp->lt.wait); in nvkm_output_dp_create_()
253 atomic_set(&outp->lt.done, 0); in nvkm_output_dp_create_()
259 .port = outp->base.edid->index, in nvkm_output_dp_create_()
263 &outp->irq); in nvkm_output_dp_create_()
273 .port = outp->base.edid->index, in nvkm_output_dp_create_()
277 &outp->base.conn->hpd); in nvkm_output_dp_create_()
292 struct nvkm_output_dp *outp; in _nvkm_output_dp_ctor() local
295 ret = nvkm_output_dp_create(parent, engine, oclass, info, index, &outp); in _nvkm_output_dp_ctor()
296 *pobject = nv_object(outp); in _nvkm_output_dp_ctor()