|
@@ -37,6 +37,7 @@ static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
|
|
{
|
|
{
|
|
struct drm_device *dev = encoder->dev;
|
|
struct drm_device *dev = encoder->dev;
|
|
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
|
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
|
|
|
+ struct nouveau_gpio_engine *gpio = &dev_priv->engine.gpio;
|
|
uint32_t testval, regoffset = nv04_dac_output_offset(encoder);
|
|
uint32_t testval, regoffset = nv04_dac_output_offset(encoder);
|
|
uint32_t gpio0, gpio1, fp_htotal, fp_hsync_start, fp_hsync_end,
|
|
uint32_t gpio0, gpio1, fp_htotal, fp_hsync_start, fp_hsync_end,
|
|
fp_control, test_ctrl, dacclk, ctv_14, ctv_1c, ctv_6c;
|
|
fp_control, test_ctrl, dacclk, ctv_14, ctv_1c, ctv_6c;
|
|
@@ -52,8 +53,8 @@ static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
|
|
head = (dacclk & 0x100) >> 8;
|
|
head = (dacclk & 0x100) >> 8;
|
|
|
|
|
|
/* Save the previous state. */
|
|
/* Save the previous state. */
|
|
- gpio1 = nv17_gpio_get(dev, DCB_GPIO_TVDAC1);
|
|
|
|
- gpio0 = nv17_gpio_get(dev, DCB_GPIO_TVDAC0);
|
|
|
|
|
|
+ gpio1 = gpio->get(dev, DCB_GPIO_TVDAC1);
|
|
|
|
+ gpio0 = gpio->get(dev, DCB_GPIO_TVDAC0);
|
|
fp_htotal = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL);
|
|
fp_htotal = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL);
|
|
fp_hsync_start = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START);
|
|
fp_hsync_start = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START);
|
|
fp_hsync_end = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END);
|
|
fp_hsync_end = NVReadRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END);
|
|
@@ -64,8 +65,8 @@ static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
|
|
ctv_6c = NVReadRAMDAC(dev, head, 0x680c6c);
|
|
ctv_6c = NVReadRAMDAC(dev, head, 0x680c6c);
|
|
|
|
|
|
/* Prepare the DAC for load detection. */
|
|
/* Prepare the DAC for load detection. */
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC1, true);
|
|
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC0, true);
|
|
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC1, true);
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC0, true);
|
|
|
|
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, 1343);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, 1343);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, 1047);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, 1047);
|
|
@@ -110,8 +111,8 @@ static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END, fp_hsync_end);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_END, fp_hsync_end);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, fp_hsync_start);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HSYNC_START, fp_hsync_start);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, fp_htotal);
|
|
NVWriteRAMDAC(dev, head, NV_PRAMDAC_FP_HTOTAL, fp_htotal);
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC1, gpio1);
|
|
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC0, gpio0);
|
|
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC1, gpio1);
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC0, gpio0);
|
|
|
|
|
|
return sample;
|
|
return sample;
|
|
}
|
|
}
|
|
@@ -335,6 +336,8 @@ static bool nv17_tv_mode_fixup(struct drm_encoder *encoder,
|
|
static void nv17_tv_dpms(struct drm_encoder *encoder, int mode)
|
|
static void nv17_tv_dpms(struct drm_encoder *encoder, int mode)
|
|
{
|
|
{
|
|
struct drm_device *dev = encoder->dev;
|
|
struct drm_device *dev = encoder->dev;
|
|
|
|
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
|
|
|
|
+ struct nouveau_gpio_engine *gpio = &dev_priv->engine.gpio;
|
|
struct nv17_tv_state *regs = &to_tv_enc(encoder)->state;
|
|
struct nv17_tv_state *regs = &to_tv_enc(encoder)->state;
|
|
struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
|
|
struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
|
|
|
|
|
|
@@ -359,8 +362,8 @@ static void nv17_tv_dpms(struct drm_encoder *encoder, int mode)
|
|
|
|
|
|
nv_load_ptv(dev, regs, 200);
|
|
nv_load_ptv(dev, regs, 200);
|
|
|
|
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC1, mode == DRM_MODE_DPMS_ON);
|
|
|
|
- nv17_gpio_set(dev, DCB_GPIO_TVDAC0, mode == DRM_MODE_DPMS_ON);
|
|
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC1, mode == DRM_MODE_DPMS_ON);
|
|
|
|
+ gpio->set(dev, DCB_GPIO_TVDAC0, mode == DRM_MODE_DPMS_ON);
|
|
|
|
|
|
nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
|
|
nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
|
|
}
|
|
}
|