58 return i2c->
identify(i2c, i2c_index,
"TV encoder",
59 nv04_tv_encoder_info,
NULL);
63 #define PLLSEL_TV_CRTC1_MASK \
64 (NV_PRAMDAC_PLL_COEFF_SELECT_TV_VSCLK1 \
65 | NV_PRAMDAC_PLL_COEFF_SELECT_TV_PCLK1)
66 #define PLLSEL_TV_CRTC2_MASK \
67 (NV_PRAMDAC_PLL_COEFF_SELECT_TV_VSCLK2 \
68 | NV_PRAMDAC_PLL_COEFF_SELECT_TV_PCLK2)
78 NV_DEBUG(drm,
"Setting dpms mode %d on TV encoder (output %d)\n",
79 mode, nv_encoder->
dcb->index);
98 get_slave_funcs(encoder)->dpms(encoder, mode);
120 static void nv04_tv_prepare(
struct drm_encoder *encoder)
130 if (nv_two_heads(dev))
131 nv04_tv_bind(dev, head ^ 1,
false);
133 nv04_tv_bind(dev, head,
true);
136 static void nv04_tv_mode_set(
struct drm_encoder *encoder,
157 get_slave_funcs(encoder)->mode_set(encoder, mode, adjusted_mode);
160 static void nv04_tv_commit(
struct drm_encoder *encoder)
170 NV_DEBUG(drm,
"Output %s is running on CRTC %d using output %c\n",
174 static void nv04_tv_destroy(
struct drm_encoder *encoder)
176 get_slave_funcs(encoder)->destroy(encoder);
184 .destroy = nv04_tv_destroy,
206 nv_encoder = kzalloc(
sizeof(*nv_encoder),
GFP_KERNEL);
210 hfuncs = kzalloc(
sizeof(*hfuncs),
GFP_KERNEL);
217 encoder = to_drm_encoder(nv_encoder);
220 drm_encoder_helper_add(encoder, hfuncs);
225 nv_encoder->
or =
ffs(entry->
or) - 1;
229 &port->
adapter, &nv04_tv_encoder_info[type]);
234 sfuncs = get_slave_funcs(encoder);
237 .
dpms = nv04_tv_dpms,
238 .save = sfuncs->
save,
241 .prepare = nv04_tv_prepare,
242 .commit = nv04_tv_commit,
243 .mode_set = nv04_tv_mode_set,