diff options
author | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-04-07 23:49:35 (GMT) |
commit | 62b8c978ee6b8d135d9e7953221de58000dba986 (patch) | |
tree | 683b04b2e627f6710c22c151b23c8cc9a165315e /drivers/gpu/drm/nouveau/dispnv04 | |
parent | 78fd82238d0e5716578c326404184a27ba67fd6e (diff) | |
download | linux-fsl-qoriq-62b8c978ee6b8d135d9e7953221de58000dba986.tar.xz |
Rewind v3.13-rc3+ (78fd82238d0e5716) to v3.12
Diffstat (limited to 'drivers/gpu/drm/nouveau/dispnv04')
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/Makefile | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/arb.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/crtc.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/dfp.c | 22 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/disp.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/disp.h | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/hw.c | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/overlay.c | 340 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv04/tvnv04.c | 22 |
9 files changed, 35 insertions, 387 deletions
diff --git a/drivers/gpu/drm/nouveau/dispnv04/Makefile b/drivers/gpu/drm/nouveau/dispnv04/Makefile index 424a489..ea3f5b8 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/Makefile +++ b/drivers/gpu/drm/nouveau/dispnv04/Makefile @@ -5,7 +5,6 @@ nouveau-y += dispnv04/dac.o nouveau-y += dispnv04/dfp.o nouveau-y += dispnv04/disp.o nouveau-y += dispnv04/hw.o -nouveau-y += dispnv04/overlay.o nouveau-y += dispnv04/tvmodesnv17.o nouveau-y += dispnv04/tvnv04.o nouveau-y += dispnv04/tvnv17.o diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c index 2a15b98..2e70462 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c @@ -210,8 +210,8 @@ nv04_update_arb(struct drm_device *dev, int VClk, int bpp, sim_data.nvclk_khz = NVClk; sim_data.bpp = bpp; sim_data.two_heads = nv_two_heads(dev); - if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ || - (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) { + if ((dev->pci_device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ || + (dev->pci_device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) { uint32_t type; pci_read_config_dword(pci_get_bus_and_slot(0, 1), 0x7c, &type); @@ -256,8 +256,8 @@ nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm if (nv_device(drm->device)->card_type < NV_20) nv04_update_arb(dev, vclk, bpp, burst, lwm); - else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ || - (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) { + else if ((dev->pci_device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ || + (dev->pci_device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) { *burst = 128; *lwm = 0x0480; } else diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c b/drivers/gpu/drm/nouveau/dispnv04/crtc.c index 0e3270c..d4fbf11 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c +++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c @@ -326,6 +326,8 @@ nv_crtc_mode_set_vga(struct drm_crtc *crtc, struct drm_display_mode *mode) regp->MiscOutReg = 0x23; /* +hsync +vsync */ } + regp->MiscOutReg |= (mode->clock_index & 0x03) << 2; + /* * Time Sequencer */ diff --git a/drivers/gpu/drm/nouveau/dispnv04/dfp.c b/drivers/gpu/drm/nouveau/dispnv04/dfp.c index 936a71c..93dd23ff 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/dfp.c +++ b/drivers/gpu/drm/nouveau/dispnv04/dfp.c @@ -490,10 +490,10 @@ static void nv04_dfp_update_backlight(struct drm_encoder *encoder, int mode) /* BIOS scripts usually take care of the backlight, thanks * Apple for your consistency. */ - if (dev->pdev->device == 0x0174 || dev->pdev->device == 0x0179 || - dev->pdev->device == 0x0189 || dev->pdev->device == 0x0329) { + if (dev->pci_device == 0x0174 || dev->pci_device == 0x0179 || + dev->pci_device == 0x0189 || dev->pci_device == 0x0329) { if (mode == DRM_MODE_DPMS_ON) { - nv_mask(device, NV_PBUS_DEBUG_DUALHEAD_CTL, 1 << 31, 1 << 31); + nv_mask(device, NV_PBUS_DEBUG_DUALHEAD_CTL, 0, 1 << 31); nv_mask(device, NV_PCRTC_GPIO_EXT, 3, 1); } else { nv_mask(device, NV_PBUS_DEBUG_DUALHEAD_CTL, 1 << 31, 0); @@ -625,15 +625,13 @@ static void nv04_tmds_slave_init(struct drm_encoder *encoder) struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_i2c *i2c = nouveau_i2c(drm->device); struct nouveau_i2c_port *port = i2c->find(i2c, 2); - struct nouveau_i2c_board_info info[] = { + struct i2c_board_info info[] = { { - { - .type = "sil164", - .addr = (dcb->tmdsconf.slave_addr == 0x7 ? 0x3a : 0x38), - .platform_data = &(struct sil164_encoder_params) { - SIL164_INPUT_EDGE_RISING - } - }, 0 + .type = "sil164", + .addr = (dcb->tmdsconf.slave_addr == 0x7 ? 0x3a : 0x38), + .platform_data = &(struct sil164_encoder_params) { + SIL164_INPUT_EDGE_RISING + } }, { } }; @@ -648,7 +646,7 @@ static void nv04_tmds_slave_init(struct drm_encoder *encoder) return; drm_i2c_encoder_init(dev, to_encoder_slave(encoder), - &port->adapter, &info[type].dev); + &port->adapter, &info[type]); } static const struct drm_encoder_helper_funcs nv04_lvds_helper_funcs = { diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.c b/drivers/gpu/drm/nouveau/dispnv04/disp.c index b13ff0f..4908d3f 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.c @@ -140,8 +140,6 @@ nv04_display_create(struct drm_device *dev) func->save(encoder); } - nouveau_overlay_init(dev); - return 0; } diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h index 56a28db..9928187 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/disp.h +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h @@ -123,14 +123,11 @@ int nv04_tv_create(struct drm_connector *, struct dcb_output *); /* nv17_tv.c */ int nv17_tv_create(struct drm_connector *, struct dcb_output *); -/* overlay.c */ -void nouveau_overlay_init(struct drm_device *dev); - static inline bool nv_two_heads(struct drm_device *dev) { struct nouveau_drm *drm = nouveau_drm(dev); - const int impl = dev->pdev->device & 0x0ff0; + const int impl = dev->pci_device & 0x0ff0; if (nv_device(drm->device)->card_type >= NV_10 && impl != 0x0100 && impl != 0x0150 && impl != 0x01a0 && impl != 0x0200) @@ -142,14 +139,14 @@ nv_two_heads(struct drm_device *dev) static inline bool nv_gf4_disp_arch(struct drm_device *dev) { - return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110; + return nv_two_heads(dev) && (dev->pci_device & 0x0ff0) != 0x0110; } static inline bool nv_two_reg_pll(struct drm_device *dev) { struct nouveau_drm *drm = nouveau_drm(dev); - const int impl = dev->pdev->device & 0x0ff0; + const int impl = dev->pci_device & 0x0ff0; if (impl == 0x0310 || impl == 0x0340 || nv_device(drm->device)->card_type >= NV_40) return true; diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c index aca76af..973056b 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c @@ -27,7 +27,6 @@ #include "hw.h" #include <subdev/bios/pll.h> -#include <subdev/fb.h> #include <subdev/clock.h> #include <subdev/timer.h> @@ -221,7 +220,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype) int ret; if (plltype == PLL_MEMORY && - (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) { + (dev->pci_device & 0x0ff0) == CHIPSET_NFORCE) { uint32_t mpllP; pci_read_config_dword(pci_get_bus_and_slot(0, 3), 0x6c, &mpllP); @@ -231,7 +230,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype) return 400000 / mpllP; } else if (plltype == PLL_MEMORY && - (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) { + (dev->pci_device & 0xff0) == CHIPSET_NFORCE2) { uint32_t clock; pci_read_config_dword(pci_get_bus_and_slot(0, 5), 0x4c, &clock); @@ -665,7 +664,6 @@ nv_load_state_ext(struct drm_device *dev, int head, struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_device *device = nv_device(drm->device); struct nouveau_timer *ptimer = nouveau_timer(device); - struct nouveau_fb *pfb = nouveau_fb(device); struct nv04_crtc_reg *regp = &state->crtc_reg[head]; uint32_t reg900; int i; @@ -682,10 +680,10 @@ nv_load_state_ext(struct drm_device *dev, int head, nv_wr32(device, NV_PVIDEO_INTR_EN, 0); nv_wr32(device, NV_PVIDEO_OFFSET_BUFF(0), 0); nv_wr32(device, NV_PVIDEO_OFFSET_BUFF(1), 0); - nv_wr32(device, NV_PVIDEO_LIMIT(0), pfb->ram->size - 1); - nv_wr32(device, NV_PVIDEO_LIMIT(1), pfb->ram->size - 1); - nv_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(0), pfb->ram->size - 1); - nv_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(1), pfb->ram->size - 1); + nv_wr32(device, NV_PVIDEO_LIMIT(0), 0); //drm->fb_available_size - 1); + nv_wr32(device, NV_PVIDEO_LIMIT(1), 0); //drm->fb_available_size - 1); + nv_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(0), 0); //drm->fb_available_size - 1); + nv_wr32(device, NV_PVIDEO_UVPLANE_LIMIT(1), 0); //drm->fb_available_size - 1); nv_wr32(device, NV_PBUS_POWERCTRL_2, 0); NVWriteCRTC(dev, head, NV_PCRTC_CURSOR_CONFIG, regp->cursor_cfg); @@ -742,7 +740,7 @@ nv_load_state_ext(struct drm_device *dev, int head, } /* NV11 and NV20 stop at 0x52. */ if (nv_gf4_disp_arch(dev)) { - if (nv_device(drm->device)->card_type < NV_20) { + if (nv_device(drm->device)->card_type == NV_10) { /* Not waiting for vertical retrace before modifying CRE_53/CRE_54 causes lockups. */ nouveau_timer_wait_eq(ptimer, 650000000, NV_PRMCIO_INP0__COLOR, 0x8, 0x8); diff --git a/drivers/gpu/drm/nouveau/dispnv04/overlay.c b/drivers/gpu/drm/nouveau/dispnv04/overlay.c deleted file mode 100644 index 32e7064..0000000 --- a/drivers/gpu/drm/nouveau/dispnv04/overlay.c +++ /dev/null @@ -1,340 +0,0 @@ -/* - * Copyright 2013 Ilia Mirkin - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Implementation based on the pre-KMS implementation in xf86-video-nouveau, - * written by Arthur Huillet. - */ - -#include <drm/drmP.h> -#include <drm/drm_crtc.h> -#include <drm/drm_fourcc.h> - -#include "nouveau_drm.h" - -#include "nouveau_bo.h" -#include "nouveau_connector.h" -#include "nouveau_display.h" -#include "nvreg.h" - - -struct nouveau_plane { - struct drm_plane base; - bool flip; - struct nouveau_bo *cur; - - struct { - struct drm_property *colorkey; - struct drm_property *contrast; - struct drm_property *brightness; - struct drm_property *hue; - struct drm_property *saturation; - struct drm_property *iturbt_709; - } props; - - int colorkey; - int contrast; - int brightness; - int hue; - int saturation; - int iturbt_709; -}; - -static uint32_t formats[] = { - DRM_FORMAT_UYVY, - DRM_FORMAT_NV12, -}; - -/* Sine can be approximated with - * http://en.wikipedia.org/wiki/Bhaskara_I's_sine_approximation_formula - * sin(x degrees) ~= 4 x (180 - x) / (40500 - x (180 - x) ) - * Note that this only works for the range [0, 180]. - * Also note that sin(x) == -sin(x - 180) - */ -static inline int -sin_mul(int degrees, int factor) -{ - if (degrees > 180) { - degrees -= 180; - factor *= -1; - } - return factor * 4 * degrees * (180 - degrees) / - (40500 - degrees * (180 - degrees)); -} - -/* cos(x) = sin(x + 90) */ -static inline int -cos_mul(int degrees, int factor) -{ - return sin_mul((degrees + 90) % 360, factor); -} - -static int -nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, - struct drm_framebuffer *fb, int crtc_x, int crtc_y, - unsigned int crtc_w, unsigned int crtc_h, - uint32_t src_x, uint32_t src_y, - uint32_t src_w, uint32_t src_h) -{ - struct nouveau_device *dev = nouveau_dev(plane->dev); - struct nouveau_plane *nv_plane = (struct nouveau_plane *)plane; - struct nouveau_framebuffer *nv_fb = nouveau_framebuffer(fb); - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - struct nouveau_bo *cur = nv_plane->cur; - bool flip = nv_plane->flip; - int soff = NV_PCRTC0_SIZE * nv_crtc->index; - int soff2 = NV_PCRTC0_SIZE * !nv_crtc->index; - int format, ret; - - /* Source parameters given in 16.16 fixed point, ignore fractional. */ - src_x >>= 16; - src_y >>= 16; - src_w >>= 16; - src_h >>= 16; - - format = ALIGN(src_w * 4, 0x100); - - if (format > 0xffff) - return -ERANGE; - - if (dev->chipset >= 0x30) { - if (crtc_w < (src_w >> 1) || crtc_h < (src_h >> 1)) - return -ERANGE; - } else { - if (crtc_w < (src_w >> 3) || crtc_h < (src_h >> 3)) - return -ERANGE; - } - - ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM); - if (ret) - return ret; - - nv_plane->cur = nv_fb->nvbo; - - nv_mask(dev, NV_PCRTC_ENGINE_CTRL + soff, NV_CRTC_FSEL_OVERLAY, NV_CRTC_FSEL_OVERLAY); - nv_mask(dev, NV_PCRTC_ENGINE_CTRL + soff2, NV_CRTC_FSEL_OVERLAY, 0); - - nv_wr32(dev, NV_PVIDEO_BASE(flip), 0); - nv_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nv_fb->nvbo->bo.offset); - nv_wr32(dev, NV_PVIDEO_SIZE_IN(flip), src_h << 16 | src_w); - nv_wr32(dev, NV_PVIDEO_POINT_IN(flip), src_y << 16 | src_x); - nv_wr32(dev, NV_PVIDEO_DS_DX(flip), (src_w << 20) / crtc_w); - nv_wr32(dev, NV_PVIDEO_DT_DY(flip), (src_h << 20) / crtc_h); - nv_wr32(dev, NV_PVIDEO_POINT_OUT(flip), crtc_y << 16 | crtc_x); - nv_wr32(dev, NV_PVIDEO_SIZE_OUT(flip), crtc_h << 16 | crtc_w); - - if (fb->pixel_format == DRM_FORMAT_NV12) { - format |= NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8; - format |= NV_PVIDEO_FORMAT_PLANAR; - } - if (nv_plane->iturbt_709) - format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709; - if (nv_plane->colorkey & (1 << 24)) - format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY; - - if (fb->pixel_format == DRM_FORMAT_NV12) { - nv_wr32(dev, NV_PVIDEO_UVPLANE_BASE(flip), 0); - nv_wr32(dev, NV_PVIDEO_UVPLANE_OFFSET_BUFF(flip), - nv_fb->nvbo->bo.offset + fb->offsets[1]); - } - nv_wr32(dev, NV_PVIDEO_FORMAT(flip), format); - nv_wr32(dev, NV_PVIDEO_STOP, 0); - /* TODO: wait for vblank? */ - nv_wr32(dev, NV_PVIDEO_BUFFER, flip ? 0x10 : 0x1); - nv_plane->flip = !flip; - - if (cur) - nouveau_bo_unpin(cur); - - return 0; -} - -static int -nv10_disable_plane(struct drm_plane *plane) -{ - struct nouveau_device *dev = nouveau_dev(plane->dev); - struct nouveau_plane *nv_plane = (struct nouveau_plane *)plane; - - nv_wr32(dev, NV_PVIDEO_STOP, 1); - if (nv_plane->cur) { - nouveau_bo_unpin(nv_plane->cur); - nv_plane->cur = NULL; - } - - return 0; -} - -static void -nv10_destroy_plane(struct drm_plane *plane) -{ - nv10_disable_plane(plane); - drm_plane_cleanup(plane); - kfree(plane); -} - -static void -nv10_set_params(struct nouveau_plane *plane) -{ - struct nouveau_device *dev = nouveau_dev(plane->base.dev); - u32 luma = (plane->brightness - 512) << 16 | plane->contrast; - u32 chroma = ((sin_mul(plane->hue, plane->saturation) & 0xffff) << 16) | - (cos_mul(plane->hue, plane->saturation) & 0xffff); - u32 format = 0; - - nv_wr32(dev, NV_PVIDEO_LUMINANCE(0), luma); - nv_wr32(dev, NV_PVIDEO_LUMINANCE(1), luma); - nv_wr32(dev, NV_PVIDEO_CHROMINANCE(0), chroma); - nv_wr32(dev, NV_PVIDEO_CHROMINANCE(1), chroma); - nv_wr32(dev, NV_PVIDEO_COLOR_KEY, plane->colorkey & 0xffffff); - - if (plane->cur) { - if (plane->iturbt_709) - format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709; - if (plane->colorkey & (1 << 24)) - format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY; - nv_mask(dev, NV_PVIDEO_FORMAT(plane->flip), - NV_PVIDEO_FORMAT_MATRIX_ITURBT709 | - NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY, - format); - } -} - -static int -nv10_set_property(struct drm_plane *plane, - struct drm_property *property, - uint64_t value) -{ - struct nouveau_plane *nv_plane = (struct nouveau_plane *)plane; - - if (property == nv_plane->props.colorkey) - nv_plane->colorkey = value; - else if (property == nv_plane->props.contrast) - nv_plane->contrast = value; - else if (property == nv_plane->props.brightness) - nv_plane->brightness = value; - else if (property == nv_plane->props.hue) - nv_plane->hue = value; - else if (property == nv_plane->props.saturation) - nv_plane->saturation = value; - else if (property == nv_plane->props.iturbt_709) - nv_plane->iturbt_709 = value; - else - return -EINVAL; - - nv10_set_params(nv_plane); - return 0; -} - -static const struct drm_plane_funcs nv10_plane_funcs = { - .update_plane = nv10_update_plane, - .disable_plane = nv10_disable_plane, - .set_property = nv10_set_property, - .destroy = nv10_destroy_plane, -}; - -static void -nv10_overlay_init(struct drm_device *device) -{ - struct nouveau_device *dev = nouveau_dev(device); - struct nouveau_plane *plane = kzalloc(sizeof(struct nouveau_plane), GFP_KERNEL); - int num_formats = ARRAY_SIZE(formats); - int ret; - - if (!plane) - return; - - switch (dev->chipset) { - case 0x10: - case 0x11: - case 0x15: - case 0x1a: - case 0x20: - num_formats = 1; - break; - } - - ret = drm_plane_init(device, &plane->base, 3 /* both crtc's */, - &nv10_plane_funcs, - formats, num_formats, false); - if (ret) - goto err; - - /* Set up the plane properties */ - plane->props.colorkey = drm_property_create_range( - device, 0, "colorkey", 0, 0x01ffffff); - plane->props.contrast = drm_property_create_range( - device, 0, "contrast", 0, 8192 - 1); - plane->props.brightness = drm_property_create_range( - device, 0, "brightness", 0, 1024); - plane->props.hue = drm_property_create_range( - device, 0, "hue", 0, 359); - plane->props.saturation = drm_property_create_range( - device, 0, "saturation", 0, 8192 - 1); - plane->props.iturbt_709 = drm_property_create_range( - device, 0, "iturbt_709", 0, 1); - if (!plane->props.colorkey || - !plane->props.contrast || - !plane->props.brightness || - !plane->props.hue || - !plane->props.saturation || - !plane->props.iturbt_709) - goto cleanup; - - plane->colorkey = 0; - drm_object_attach_property(&plane->base.base, - plane->props.colorkey, plane->colorkey); - - plane->contrast = 0x1000; - drm_object_attach_property(&plane->base.base, - plane->props.contrast, plane->contrast); - - plane->brightness = 512; - drm_object_attach_property(&plane->base.base, - plane->props.brightness, plane->brightness); - - plane->hue = 0; - drm_object_attach_property(&plane->base.base, - plane->props.hue, plane->hue); - - plane->saturation = 0x1000; - drm_object_attach_property(&plane->base.base, - plane->props.saturation, plane->saturation); - - plane->iturbt_709 = 0; - drm_object_attach_property(&plane->base.base, - plane->props.iturbt_709, plane->iturbt_709); - - nv10_set_params(plane); - nv_wr32(dev, NV_PVIDEO_STOP, 1); - return; -cleanup: - drm_plane_cleanup(&plane->base); -err: - kfree(plane); - nv_error(dev, "Failed to create plane\n"); -} - -void -nouveau_overlay_init(struct drm_device *device) -{ - struct nouveau_device *dev = nouveau_dev(device); - if (dev->chipset >= 0x10 && dev->chipset <= 0x40) - nv10_overlay_init(device); -} diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvnv04.c b/drivers/gpu/drm/nouveau/dispnv04/tvnv04.c index cc4b208..bf13db4 100644 --- a/drivers/gpu/drm/nouveau/dispnv04/tvnv04.c +++ b/drivers/gpu/drm/nouveau/dispnv04/tvnv04.c @@ -37,18 +37,15 @@ #include <subdev/i2c.h> -static struct nouveau_i2c_board_info nv04_tv_encoder_info[] = { +static struct i2c_board_info nv04_tv_encoder_info[] = { { - { - I2C_BOARD_INFO("ch7006", 0x75), - .platform_data = &(struct ch7006_encoder_params) { - CH7006_FORMAT_RGB24m12I, CH7006_CLOCK_MASTER, - 0, 0, 0, - CH7006_SYNC_SLAVE, CH7006_SYNC_SEPARATED, - CH7006_POUT_3_3V, CH7006_ACTIVE_HSYNC - } - }, - 0 + I2C_BOARD_INFO("ch7006", 0x75), + .platform_data = &(struct ch7006_encoder_params) { + CH7006_FORMAT_RGB24m12I, CH7006_CLOCK_MASTER, + 0, 0, 0, + CH7006_SYNC_SLAVE, CH7006_SYNC_SEPARATED, + CH7006_POUT_3_3V, CH7006_ACTIVE_HSYNC + } }, { } }; @@ -232,8 +229,7 @@ nv04_tv_create(struct drm_connector *connector, struct dcb_output *entry) /* Run the slave-specific initialization */ ret = drm_i2c_encoder_init(dev, to_encoder_slave(encoder), - &port->adapter, - &nv04_tv_encoder_info[type].dev); + &port->adapter, &nv04_tv_encoder_info[type]); if (ret < 0) goto fail_cleanup; |