Message ID | 20220317092555.17882-2-patrik.r.jakobsson@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/4] drm/gma500: Remove unused declarations and other cruft | expand |
Am 17.03.22 um 10:25 schrieb Patrik Jakobsson: > All functions live in gma_display.c already so move the vtable. Also > shorten the name to gma_crtc_funcs. > > Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/gma500/cdv_device.c | 2 +- > drivers/gpu/drm/gma500/gma_display.c | 12 ++++++++++++ > drivers/gpu/drm/gma500/gma_display.h | 10 ++-------- > drivers/gpu/drm/gma500/oaktrail_device.c | 2 +- > drivers/gpu/drm/gma500/psb_device.c | 2 +- > drivers/gpu/drm/gma500/psb_drv.h | 2 -- > drivers/gpu/drm/gma500/psb_intel_display.c | 12 ------------ > 7 files changed, 17 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c > index d7c6cca23e94..887c157d75f4 100644 > --- a/drivers/gpu/drm/gma500/cdv_device.c > +++ b/drivers/gpu/drm/gma500/cdv_device.c > @@ -603,7 +603,7 @@ const struct psb_ops cdv_chip_ops = { > .errata = cdv_errata, > > .crtc_helper = &cdv_intel_helper_funcs, > - .crtc_funcs = &gma_intel_crtc_funcs, > + .crtc_funcs = &gma_crtc_funcs, > .clock_funcs = &cdv_clock_funcs, > > .output_init = cdv_output_init, > diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c > index dd801404cf99..931ffb192fc4 100644 > --- a/drivers/gpu/drm/gma500/gma_display.c > +++ b/drivers/gpu/drm/gma500/gma_display.c > @@ -565,6 +565,18 @@ int gma_crtc_set_config(struct drm_mode_set *set, > return ret; > } > > +const struct drm_crtc_funcs gma_crtc_funcs = { > + .cursor_set = gma_crtc_cursor_set, > + .cursor_move = gma_crtc_cursor_move, > + .gamma_set = gma_crtc_gamma_set, > + .set_config = gma_crtc_set_config, > + .destroy = gma_crtc_destroy, > + .page_flip = gma_crtc_page_flip, > + .enable_vblank = psb_enable_vblank, > + .disable_vblank = psb_disable_vblank, > + .get_vblank_counter = psb_get_vblank_counter, > +}; > + > /* > * Save HW states of given crtc > */ > diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h > index 7bd6c1ee8b21..113cf048105e 100644 > --- a/drivers/gpu/drm/gma500/gma_display.h > +++ b/drivers/gpu/drm/gma500/gma_display.h > @@ -58,15 +58,7 @@ extern bool gma_pipe_has_type(struct drm_crtc *crtc, int type); > extern void gma_wait_for_vblank(struct drm_device *dev); > extern int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y, > struct drm_framebuffer *old_fb); > -extern int gma_crtc_cursor_set(struct drm_crtc *crtc, > - struct drm_file *file_priv, > - uint32_t handle, > - uint32_t width, uint32_t height); > -extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y); > extern void gma_crtc_load_lut(struct drm_crtc *crtc); > -extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, > - u16 *blue, u32 size, > - struct drm_modeset_acquire_ctx *ctx); > extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode); > extern void gma_crtc_prepare(struct drm_crtc *crtc); > extern void gma_crtc_commit(struct drm_crtc *crtc); > @@ -83,6 +75,8 @@ extern int gma_crtc_set_config(struct drm_mode_set *set, > extern void gma_crtc_save(struct drm_crtc *crtc); > extern void gma_crtc_restore(struct drm_crtc *crtc); > > +extern const struct drm_crtc_funcs gma_crtc_funcs; > + > extern void gma_encoder_prepare(struct drm_encoder *encoder); > extern void gma_encoder_commit(struct drm_encoder *encoder); > extern void gma_encoder_destroy(struct drm_encoder *encoder); > diff --git a/drivers/gpu/drm/gma500/oaktrail_device.c b/drivers/gpu/drm/gma500/oaktrail_device.c > index 5c75eae630b5..40f1bc736125 100644 > --- a/drivers/gpu/drm/gma500/oaktrail_device.c > +++ b/drivers/gpu/drm/gma500/oaktrail_device.c > @@ -545,7 +545,7 @@ const struct psb_ops oaktrail_chip_ops = { > .chip_setup = oaktrail_chip_setup, > .chip_teardown = oaktrail_teardown, > .crtc_helper = &oaktrail_helper_funcs, > - .crtc_funcs = &gma_intel_crtc_funcs, > + .crtc_funcs = &gma_crtc_funcs, > > .output_init = oaktrail_output_init, > > diff --git a/drivers/gpu/drm/gma500/psb_device.c b/drivers/gpu/drm/gma500/psb_device.c > index 3030f18ba022..e93e4191c0ca 100644 > --- a/drivers/gpu/drm/gma500/psb_device.c > +++ b/drivers/gpu/drm/gma500/psb_device.c > @@ -329,7 +329,7 @@ const struct psb_ops psb_chip_ops = { > .chip_teardown = psb_chip_teardown, > > .crtc_helper = &psb_intel_helper_funcs, > - .crtc_funcs = &gma_intel_crtc_funcs, > + .crtc_funcs = &gma_crtc_funcs, > .clock_funcs = &psb_clock_funcs, > > .output_init = psb_output_init, > diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h > index 66f61909a8c8..88f44dbbc4eb 100644 > --- a/drivers/gpu/drm/gma500/psb_drv.h > +++ b/drivers/gpu/drm/gma500/psb_drv.h > @@ -13,7 +13,6 @@ > > #include <drm/drm_device.h> > > -#include "gma_display.h" > #include "gtt.h" > #include "intel_bios.h" > #include "mmu.h" > @@ -647,7 +646,6 @@ extern void oaktrail_lvds_init(struct drm_device *dev, > > /* psb_intel_display.c */ > extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs; > -extern const struct drm_crtc_funcs gma_intel_crtc_funcs; > > /* psb_intel_lvds.c */ > extern const struct drm_connector_helper_funcs > diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c > index d5f95212934e..6df62fe7c1e0 100644 > --- a/drivers/gpu/drm/gma500/psb_intel_display.c > +++ b/drivers/gpu/drm/gma500/psb_intel_display.c > @@ -427,18 +427,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = { > .disable = gma_crtc_disable, > }; > > -const struct drm_crtc_funcs gma_intel_crtc_funcs = { > - .cursor_set = gma_crtc_cursor_set, > - .cursor_move = gma_crtc_cursor_move, > - .gamma_set = gma_crtc_gamma_set, > - .set_config = gma_crtc_set_config, > - .destroy = gma_crtc_destroy, > - .page_flip = gma_crtc_page_flip, > - .enable_vblank = psb_enable_vblank, > - .disable_vblank = psb_disable_vblank, > - .get_vblank_counter = psb_get_vblank_counter, > -}; > - > const struct gma_clock_funcs psb_clock_funcs = { > .clock = psb_intel_clock, > .limit = psb_intel_limit,
Hi Patrik, I love your patch! Perhaps something to improve: [auto build test WARNING on drm/drm-next] [also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317] [cannot apply to airlied/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 base: git://anongit.freedesktop.org/drm/drm drm-next config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20220318/202203180653.zAs8yXub-lkp@intel.com/config) compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> drivers/gpu/drm/gma500/gma_display.c:175:5: warning: no previous prototype for 'gma_crtc_gamma_set' [-Wmissing-prototypes] 175 | int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, | ^~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/gma500/gma_display.c:322:5: warning: no previous prototype for 'gma_crtc_cursor_set' [-Wmissing-prototypes] 322 | int gma_crtc_cursor_set(struct drm_crtc *crtc, | ^~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/gma500/gma_display.c:440:5: warning: no previous prototype for 'gma_crtc_cursor_move' [-Wmissing-prototypes] 440 | int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) | ^~~~~~~~~~~~~~~~~~~~ vim +/gma_crtc_gamma_set +175 drivers/gpu/drm/gma500/gma_display.c 2eff0b3359c097 Patrik Jakobsson 2013-07-05 174 7ea7728387820a Maarten Lankhorst 2016-06-07 @175 int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, 6d124ff845334b Daniel Vetter 2017-04-03 176 u32 size, 6d124ff845334b Daniel Vetter 2017-04-03 177 struct drm_modeset_acquire_ctx *ctx) 2eff0b3359c097 Patrik Jakobsson 2013-07-05 178 { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 179 gma_crtc_load_lut(crtc); 7ea7728387820a Maarten Lankhorst 2016-06-07 180 7ea7728387820a Maarten Lankhorst 2016-06-07 181 return 0; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 182 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 183 98daaba0a7c36d Lee Jones 2021-01-15 184 /* 2eff0b3359c097 Patrik Jakobsson 2013-07-05 185 * Sets the power management mode of the pipe and plane. 2eff0b3359c097 Patrik Jakobsson 2013-07-05 186 * 2eff0b3359c097 Patrik Jakobsson 2013-07-05 187 * This code should probably grow support for turning the cursor off and back 2eff0b3359c097 Patrik Jakobsson 2013-07-05 188 * on appropriately at the same time as we're turning the pipe off/on. 2eff0b3359c097 Patrik Jakobsson 2013-07-05 189 */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 190 void gma_crtc_dpms(struct drm_crtc *crtc, int mode) 2eff0b3359c097 Patrik Jakobsson 2013-07-05 191 { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 192 struct drm_device *dev = crtc->dev; f71635e893c383 Thomas Zimmermann 2021-09-20 193 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 6306865daf0283 Patrik Jakobsson 2013-07-22 194 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 6306865daf0283 Patrik Jakobsson 2013-07-22 195 int pipe = gma_crtc->pipe; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 196 const struct psb_offset *map = &dev_priv->regmap[pipe]; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 197 u32 temp; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 198 2eff0b3359c097 Patrik Jakobsson 2013-07-05 199 /* XXX: When our outputs are all unaware of DPMS modes other than off 2eff0b3359c097 Patrik Jakobsson 2013-07-05 200 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC. 2eff0b3359c097 Patrik Jakobsson 2013-07-05 201 */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 202 2eff0b3359c097 Patrik Jakobsson 2013-07-05 203 if (IS_CDV(dev)) 75346fe9bc4c9b Patrik Jakobsson 2013-08-15 204 dev_priv->ops->disable_sr(dev); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 205 2eff0b3359c097 Patrik Jakobsson 2013-07-05 206 switch (mode) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 207 case DRM_MODE_DPMS_ON: 2eff0b3359c097 Patrik Jakobsson 2013-07-05 208 case DRM_MODE_DPMS_STANDBY: 2eff0b3359c097 Patrik Jakobsson 2013-07-05 209 case DRM_MODE_DPMS_SUSPEND: 6306865daf0283 Patrik Jakobsson 2013-07-22 210 if (gma_crtc->active) 2eff0b3359c097 Patrik Jakobsson 2013-07-05 211 break; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 212 6306865daf0283 Patrik Jakobsson 2013-07-22 213 gma_crtc->active = true; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 214 2eff0b3359c097 Patrik Jakobsson 2013-07-05 215 /* Enable the DPLL */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 216 temp = REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 217 if ((temp & DPLL_VCO_ENABLE) == 0) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 218 REG_WRITE(map->dpll, temp); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 219 REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 220 /* Wait for the clocks to stabilize. */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 221 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 222 REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 223 REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 224 /* Wait for the clocks to stabilize. */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 225 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 226 REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 227 REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 228 /* Wait for the clocks to stabilize. */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 229 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 230 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 231 2eff0b3359c097 Patrik Jakobsson 2013-07-05 232 /* Enable the plane */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 233 temp = REG_READ(map->cntr); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 234 if ((temp & DISPLAY_PLANE_ENABLE) == 0) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 235 REG_WRITE(map->cntr, 2eff0b3359c097 Patrik Jakobsson 2013-07-05 236 temp | DISPLAY_PLANE_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 237 /* Flush the plane changes */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 238 REG_WRITE(map->base, REG_READ(map->base)); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 239 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 240 2eff0b3359c097 Patrik Jakobsson 2013-07-05 241 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 242 2eff0b3359c097 Patrik Jakobsson 2013-07-05 243 /* Enable the pipe */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 244 temp = REG_READ(map->conf); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 245 if ((temp & PIPEACONF_ENABLE) == 0) 2eff0b3359c097 Patrik Jakobsson 2013-07-05 246 REG_WRITE(map->conf, temp | PIPEACONF_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 247 2eff0b3359c097 Patrik Jakobsson 2013-07-05 248 temp = REG_READ(map->status); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 249 temp &= ~(0xFFFF); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 250 temp |= PIPE_FIFO_UNDERRUN; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 251 REG_WRITE(map->status, temp); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 252 REG_READ(map->status); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 253 2eff0b3359c097 Patrik Jakobsson 2013-07-05 254 gma_crtc_load_lut(crtc); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 255 2eff0b3359c097 Patrik Jakobsson 2013-07-05 256 /* Give the overlay scaler a chance to enable 2eff0b3359c097 Patrik Jakobsson 2013-07-05 257 * if it's on this pipe */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 258 /* psb_intel_crtc_dpms_video(crtc, true); TODO */ b20e9afb38d0b7 Paul Kocialkowski 2019-11-06 259 b20e9afb38d0b7 Paul Kocialkowski 2019-11-06 260 drm_crtc_vblank_on(crtc); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 261 break; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 262 case DRM_MODE_DPMS_OFF: 6306865daf0283 Patrik Jakobsson 2013-07-22 263 if (!gma_crtc->active) 2eff0b3359c097 Patrik Jakobsson 2013-07-05 264 break; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 265 6306865daf0283 Patrik Jakobsson 2013-07-22 266 gma_crtc->active = false; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 267 2eff0b3359c097 Patrik Jakobsson 2013-07-05 268 /* Give the overlay scaler a chance to disable 2eff0b3359c097 Patrik Jakobsson 2013-07-05 269 * if it's on this pipe */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 270 /* psb_intel_crtc_dpms_video(crtc, FALSE); TODO */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 271 2eff0b3359c097 Patrik Jakobsson 2013-07-05 272 /* Disable the VGA plane that we never use */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 273 REG_WRITE(VGACNTRL, VGA_DISP_DISABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 274 2eff0b3359c097 Patrik Jakobsson 2013-07-05 275 /* Turn off vblank interrupts */ c02726ffea2df0 Gustavo Padovan 2016-06-07 276 drm_crtc_vblank_off(crtc); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 277 2eff0b3359c097 Patrik Jakobsson 2013-07-05 278 /* Wait for vblank for the disable to take effect */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 279 gma_wait_for_vblank(dev); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 280 2eff0b3359c097 Patrik Jakobsson 2013-07-05 281 /* Disable plane */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 282 temp = REG_READ(map->cntr); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 283 if ((temp & DISPLAY_PLANE_ENABLE) != 0) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 284 REG_WRITE(map->cntr, 2eff0b3359c097 Patrik Jakobsson 2013-07-05 285 temp & ~DISPLAY_PLANE_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 286 /* Flush the plane changes */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 287 REG_WRITE(map->base, REG_READ(map->base)); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 288 REG_READ(map->base); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 289 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 290 2eff0b3359c097 Patrik Jakobsson 2013-07-05 291 /* Disable pipe */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 292 temp = REG_READ(map->conf); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 293 if ((temp & PIPEACONF_ENABLE) != 0) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 294 REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 295 REG_READ(map->conf); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 296 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 297 2eff0b3359c097 Patrik Jakobsson 2013-07-05 298 /* Wait for vblank for the disable to take effect. */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 299 gma_wait_for_vblank(dev); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 300 2eff0b3359c097 Patrik Jakobsson 2013-07-05 301 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 302 2eff0b3359c097 Patrik Jakobsson 2013-07-05 303 /* Disable DPLL */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 304 temp = REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 305 if ((temp & DPLL_VCO_ENABLE) != 0) { 2eff0b3359c097 Patrik Jakobsson 2013-07-05 306 REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 307 REG_READ(map->dpll); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 308 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 309 2eff0b3359c097 Patrik Jakobsson 2013-07-05 310 /* Wait for the clocks to turn off. */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 311 udelay(150); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 312 break; 2eff0b3359c097 Patrik Jakobsson 2013-07-05 313 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 314 2eff0b3359c097 Patrik Jakobsson 2013-07-05 315 if (IS_CDV(dev)) 28a8194c12f8c8 Patrik Jakobsson 2013-08-14 316 dev_priv->ops->update_wm(dev, crtc); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 317 2eff0b3359c097 Patrik Jakobsson 2013-07-05 318 /* Set FIFO watermarks */ 2eff0b3359c097 Patrik Jakobsson 2013-07-05 319 REG_WRITE(DSPARB, 0x3F3E); 2eff0b3359c097 Patrik Jakobsson 2013-07-05 320 } 2eff0b3359c097 Patrik Jakobsson 2013-07-05 321 38945be630a584 Patrik Jakobsson 2013-07-10 @322 int gma_crtc_cursor_set(struct drm_crtc *crtc, 38945be630a584 Patrik Jakobsson 2013-07-10 323 struct drm_file *file_priv, 38945be630a584 Patrik Jakobsson 2013-07-10 324 uint32_t handle, 38945be630a584 Patrik Jakobsson 2013-07-10 325 uint32_t width, uint32_t height) 38945be630a584 Patrik Jakobsson 2013-07-10 326 { 38945be630a584 Patrik Jakobsson 2013-07-10 327 struct drm_device *dev = crtc->dev; f71635e893c383 Thomas Zimmermann 2021-09-20 328 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 6306865daf0283 Patrik Jakobsson 2013-07-22 329 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 6306865daf0283 Patrik Jakobsson 2013-07-22 330 int pipe = gma_crtc->pipe; 38945be630a584 Patrik Jakobsson 2013-07-10 331 uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR; 38945be630a584 Patrik Jakobsson 2013-07-10 332 uint32_t base = (pipe == 0) ? CURABASE : CURBBASE; 38945be630a584 Patrik Jakobsson 2013-07-10 333 uint32_t temp; 38945be630a584 Patrik Jakobsson 2013-07-10 334 size_t addr = 0; f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 335 struct psb_gem_object *pobj; f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 336 struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj; 38945be630a584 Patrik Jakobsson 2013-07-10 337 struct drm_gem_object *obj; 8b250cd3b5da18 Ira Weiny 2022-01-23 338 void *tmp_dst; 38945be630a584 Patrik Jakobsson 2013-07-10 339 int ret = 0, i, cursor_pages; 38945be630a584 Patrik Jakobsson 2013-07-10 340 38945be630a584 Patrik Jakobsson 2013-07-10 341 /* If we didn't get a handle then turn the cursor off */ 38945be630a584 Patrik Jakobsson 2013-07-10 342 if (!handle) { 38945be630a584 Patrik Jakobsson 2013-07-10 343 temp = CURSOR_MODE_DISABLE; 38945be630a584 Patrik Jakobsson 2013-07-10 344 if (gma_power_begin(dev, false)) { 38945be630a584 Patrik Jakobsson 2013-07-10 345 REG_WRITE(control, temp); 38945be630a584 Patrik Jakobsson 2013-07-10 346 REG_WRITE(base, 0); 38945be630a584 Patrik Jakobsson 2013-07-10 347 gma_power_end(dev); 38945be630a584 Patrik Jakobsson 2013-07-10 348 } 38945be630a584 Patrik Jakobsson 2013-07-10 349 38945be630a584 Patrik Jakobsson 2013-07-10 350 /* Unpin the old GEM object */ 6306865daf0283 Patrik Jakobsson 2013-07-22 351 if (gma_crtc->cursor_obj) { f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 352 pobj = to_psb_gem_object(gma_crtc->cursor_obj); f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 353 psb_gem_unpin(pobj); e19baf704a4b51 Emil Velikov 2020-05-15 354 drm_gem_object_put(gma_crtc->cursor_obj); 6306865daf0283 Patrik Jakobsson 2013-07-22 355 gma_crtc->cursor_obj = NULL; 38945be630a584 Patrik Jakobsson 2013-07-10 356 } 38945be630a584 Patrik Jakobsson 2013-07-10 357 return 0; 38945be630a584 Patrik Jakobsson 2013-07-10 358 } 38945be630a584 Patrik Jakobsson 2013-07-10 359 38945be630a584 Patrik Jakobsson 2013-07-10 360 /* Currently we only support 64x64 cursors */ 38945be630a584 Patrik Jakobsson 2013-07-10 361 if (width != 64 || height != 64) { 38945be630a584 Patrik Jakobsson 2013-07-10 362 dev_dbg(dev->dev, "We currently only support 64x64 cursors\n"); 38945be630a584 Patrik Jakobsson 2013-07-10 363 return -EINVAL; 38945be630a584 Patrik Jakobsson 2013-07-10 364 } 38945be630a584 Patrik Jakobsson 2013-07-10 365 a8ad0bd84f9860 Chris Wilson 2016-05-09 366 obj = drm_gem_object_lookup(file_priv, handle); 631794b44bd3db Patrik Jakobsson 2014-01-08 367 if (!obj) { 631794b44bd3db Patrik Jakobsson 2014-01-08 368 ret = -ENOENT; 631794b44bd3db Patrik Jakobsson 2014-01-08 369 goto unlock; 631794b44bd3db Patrik Jakobsson 2014-01-08 370 } 38945be630a584 Patrik Jakobsson 2013-07-10 371 38945be630a584 Patrik Jakobsson 2013-07-10 372 if (obj->size < width * height * 4) { 38945be630a584 Patrik Jakobsson 2013-07-10 373 dev_dbg(dev->dev, "Buffer is too small\n"); 38945be630a584 Patrik Jakobsson 2013-07-10 374 ret = -ENOMEM; 38945be630a584 Patrik Jakobsson 2013-07-10 375 goto unref_cursor; 38945be630a584 Patrik Jakobsson 2013-07-10 376 } 38945be630a584 Patrik Jakobsson 2013-07-10 377 f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 378 pobj = to_psb_gem_object(obj); 38945be630a584 Patrik Jakobsson 2013-07-10 379 38945be630a584 Patrik Jakobsson 2013-07-10 380 /* Pin the memory into the GTT */ f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 381 ret = psb_gem_pin(pobj); 38945be630a584 Patrik Jakobsson 2013-07-10 382 if (ret) { 38945be630a584 Patrik Jakobsson 2013-07-10 383 dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle); 38945be630a584 Patrik Jakobsson 2013-07-10 384 goto unref_cursor; 38945be630a584 Patrik Jakobsson 2013-07-10 385 } 38945be630a584 Patrik Jakobsson 2013-07-10 386 38945be630a584 Patrik Jakobsson 2013-07-10 387 if (dev_priv->ops->cursor_needs_phys) { f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 388 if (!cursor_pobj) { 38945be630a584 Patrik Jakobsson 2013-07-10 389 dev_err(dev->dev, "No hardware cursor mem available"); 38945be630a584 Patrik Jakobsson 2013-07-10 390 ret = -ENOMEM; 38945be630a584 Patrik Jakobsson 2013-07-10 391 goto unref_cursor; 38945be630a584 Patrik Jakobsson 2013-07-10 392 } 38945be630a584 Patrik Jakobsson 2013-07-10 393 38945be630a584 Patrik Jakobsson 2013-07-10 394 /* Prevent overflow */ f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 395 if (pobj->npage > 4) 38945be630a584 Patrik Jakobsson 2013-07-10 396 cursor_pages = 4; 38945be630a584 Patrik Jakobsson 2013-07-10 397 else f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 398 cursor_pages = pobj->npage; 38945be630a584 Patrik Jakobsson 2013-07-10 399 38945be630a584 Patrik Jakobsson 2013-07-10 400 /* Copy the cursor to cursor mem */ f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 401 tmp_dst = dev_priv->vram_addr + cursor_pobj->offset; 38945be630a584 Patrik Jakobsson 2013-07-10 402 for (i = 0; i < cursor_pages; i++) { 8b250cd3b5da18 Ira Weiny 2022-01-23 403 memcpy_from_page(tmp_dst, pobj->pages[i], 0, PAGE_SIZE); 38945be630a584 Patrik Jakobsson 2013-07-10 404 tmp_dst += PAGE_SIZE; 38945be630a584 Patrik Jakobsson 2013-07-10 405 } 38945be630a584 Patrik Jakobsson 2013-07-10 406 6306865daf0283 Patrik Jakobsson 2013-07-22 407 addr = gma_crtc->cursor_addr; 38945be630a584 Patrik Jakobsson 2013-07-10 408 } else { f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 409 addr = pobj->offset; 6306865daf0283 Patrik Jakobsson 2013-07-22 410 gma_crtc->cursor_addr = addr; 38945be630a584 Patrik Jakobsson 2013-07-10 411 } 38945be630a584 Patrik Jakobsson 2013-07-10 412 38945be630a584 Patrik Jakobsson 2013-07-10 413 temp = 0; 38945be630a584 Patrik Jakobsson 2013-07-10 414 /* set the pipe for the cursor */ 38945be630a584 Patrik Jakobsson 2013-07-10 415 temp |= (pipe << 28); 38945be630a584 Patrik Jakobsson 2013-07-10 416 temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; 38945be630a584 Patrik Jakobsson 2013-07-10 417 38945be630a584 Patrik Jakobsson 2013-07-10 418 if (gma_power_begin(dev, false)) { 38945be630a584 Patrik Jakobsson 2013-07-10 419 REG_WRITE(control, temp); 38945be630a584 Patrik Jakobsson 2013-07-10 420 REG_WRITE(base, addr); 38945be630a584 Patrik Jakobsson 2013-07-10 421 gma_power_end(dev); 38945be630a584 Patrik Jakobsson 2013-07-10 422 } 38945be630a584 Patrik Jakobsson 2013-07-10 423 38945be630a584 Patrik Jakobsson 2013-07-10 424 /* unpin the old bo */ 6306865daf0283 Patrik Jakobsson 2013-07-22 425 if (gma_crtc->cursor_obj) { f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 426 pobj = to_psb_gem_object(gma_crtc->cursor_obj); f2d061ed01b3f0 Thomas Zimmermann 2021-10-15 427 psb_gem_unpin(pobj); e19baf704a4b51 Emil Velikov 2020-05-15 428 drm_gem_object_put(gma_crtc->cursor_obj); 38945be630a584 Patrik Jakobsson 2013-07-10 429 } 38945be630a584 Patrik Jakobsson 2013-07-10 430 6306865daf0283 Patrik Jakobsson 2013-07-22 431 gma_crtc->cursor_obj = obj; 631794b44bd3db Patrik Jakobsson 2014-01-08 432 unlock: 38945be630a584 Patrik Jakobsson 2013-07-10 433 return ret; 38945be630a584 Patrik Jakobsson 2013-07-10 434 38945be630a584 Patrik Jakobsson 2013-07-10 435 unref_cursor: e19baf704a4b51 Emil Velikov 2020-05-15 436 drm_gem_object_put(obj); 38945be630a584 Patrik Jakobsson 2013-07-10 437 return ret; 38945be630a584 Patrik Jakobsson 2013-07-10 438 } 38945be630a584 Patrik Jakobsson 2013-07-10 439 --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Patrik, I love your patch! Perhaps something to improve: [auto build test WARNING on drm/drm-next] [also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317] [cannot apply to airlied/drm-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 base: git://anongit.freedesktop.org/drm/drm drm-next config: i386-randconfig-a004 (https://download.01.org/0day-ci/archive/20220318/202203180730.btyhkeem-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project a6ec1e3d798f8eab43fb3a91028c6ab04e115fcb) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> drivers/gpu/drm/gma500/gma_display.c:175:5: warning: no previous prototype for function 'gma_crtc_gamma_set' [-Wmissing-prototypes] int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, ^ drivers/gpu/drm/gma500/gma_display.c:175:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, ^ static >> drivers/gpu/drm/gma500/gma_display.c:322:5: warning: no previous prototype for function 'gma_crtc_cursor_set' [-Wmissing-prototypes] int gma_crtc_cursor_set(struct drm_crtc *crtc, ^ drivers/gpu/drm/gma500/gma_display.c:322:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int gma_crtc_cursor_set(struct drm_crtc *crtc, ^ static >> drivers/gpu/drm/gma500/gma_display.c:440:5: warning: no previous prototype for function 'gma_crtc_cursor_move' [-Wmissing-prototypes] int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) ^ drivers/gpu/drm/gma500/gma_display.c:440:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) ^ static 3 warnings generated. vim +/gma_crtc_gamma_set +175 drivers/gpu/drm/gma500/gma_display.c 2eff0b3359c097b Patrik Jakobsson 2013-07-05 174 7ea7728387820a2 Maarten Lankhorst 2016-06-07 @175 int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, u16 *blue, 6d124ff845334bc Daniel Vetter 2017-04-03 176 u32 size, 6d124ff845334bc Daniel Vetter 2017-04-03 177 struct drm_modeset_acquire_ctx *ctx) 2eff0b3359c097b Patrik Jakobsson 2013-07-05 178 { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 179 gma_crtc_load_lut(crtc); 7ea7728387820a2 Maarten Lankhorst 2016-06-07 180 7ea7728387820a2 Maarten Lankhorst 2016-06-07 181 return 0; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 182 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 183 98daaba0a7c36dc Lee Jones 2021-01-15 184 /* 2eff0b3359c097b Patrik Jakobsson 2013-07-05 185 * Sets the power management mode of the pipe and plane. 2eff0b3359c097b Patrik Jakobsson 2013-07-05 186 * 2eff0b3359c097b Patrik Jakobsson 2013-07-05 187 * This code should probably grow support for turning the cursor off and back 2eff0b3359c097b Patrik Jakobsson 2013-07-05 188 * on appropriately at the same time as we're turning the pipe off/on. 2eff0b3359c097b Patrik Jakobsson 2013-07-05 189 */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 190 void gma_crtc_dpms(struct drm_crtc *crtc, int mode) 2eff0b3359c097b Patrik Jakobsson 2013-07-05 191 { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 192 struct drm_device *dev = crtc->dev; f71635e893c3832 Thomas Zimmermann 2021-09-20 193 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 6306865daf0283d Patrik Jakobsson 2013-07-22 194 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 6306865daf0283d Patrik Jakobsson 2013-07-22 195 int pipe = gma_crtc->pipe; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 196 const struct psb_offset *map = &dev_priv->regmap[pipe]; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 197 u32 temp; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 198 2eff0b3359c097b Patrik Jakobsson 2013-07-05 199 /* XXX: When our outputs are all unaware of DPMS modes other than off 2eff0b3359c097b Patrik Jakobsson 2013-07-05 200 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC. 2eff0b3359c097b Patrik Jakobsson 2013-07-05 201 */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 202 2eff0b3359c097b Patrik Jakobsson 2013-07-05 203 if (IS_CDV(dev)) 75346fe9bc4c9b3 Patrik Jakobsson 2013-08-15 204 dev_priv->ops->disable_sr(dev); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 205 2eff0b3359c097b Patrik Jakobsson 2013-07-05 206 switch (mode) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 207 case DRM_MODE_DPMS_ON: 2eff0b3359c097b Patrik Jakobsson 2013-07-05 208 case DRM_MODE_DPMS_STANDBY: 2eff0b3359c097b Patrik Jakobsson 2013-07-05 209 case DRM_MODE_DPMS_SUSPEND: 6306865daf0283d Patrik Jakobsson 2013-07-22 210 if (gma_crtc->active) 2eff0b3359c097b Patrik Jakobsson 2013-07-05 211 break; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 212 6306865daf0283d Patrik Jakobsson 2013-07-22 213 gma_crtc->active = true; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 214 2eff0b3359c097b Patrik Jakobsson 2013-07-05 215 /* Enable the DPLL */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 216 temp = REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 217 if ((temp & DPLL_VCO_ENABLE) == 0) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 218 REG_WRITE(map->dpll, temp); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 219 REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 220 /* Wait for the clocks to stabilize. */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 221 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 222 REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 223 REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 224 /* Wait for the clocks to stabilize. */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 225 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 226 REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 227 REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 228 /* Wait for the clocks to stabilize. */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 229 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 230 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 231 2eff0b3359c097b Patrik Jakobsson 2013-07-05 232 /* Enable the plane */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 233 temp = REG_READ(map->cntr); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 234 if ((temp & DISPLAY_PLANE_ENABLE) == 0) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 235 REG_WRITE(map->cntr, 2eff0b3359c097b Patrik Jakobsson 2013-07-05 236 temp | DISPLAY_PLANE_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 237 /* Flush the plane changes */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 238 REG_WRITE(map->base, REG_READ(map->base)); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 239 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 240 2eff0b3359c097b Patrik Jakobsson 2013-07-05 241 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 242 2eff0b3359c097b Patrik Jakobsson 2013-07-05 243 /* Enable the pipe */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 244 temp = REG_READ(map->conf); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 245 if ((temp & PIPEACONF_ENABLE) == 0) 2eff0b3359c097b Patrik Jakobsson 2013-07-05 246 REG_WRITE(map->conf, temp | PIPEACONF_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 247 2eff0b3359c097b Patrik Jakobsson 2013-07-05 248 temp = REG_READ(map->status); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 249 temp &= ~(0xFFFF); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 250 temp |= PIPE_FIFO_UNDERRUN; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 251 REG_WRITE(map->status, temp); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 252 REG_READ(map->status); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 253 2eff0b3359c097b Patrik Jakobsson 2013-07-05 254 gma_crtc_load_lut(crtc); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 255 2eff0b3359c097b Patrik Jakobsson 2013-07-05 256 /* Give the overlay scaler a chance to enable 2eff0b3359c097b Patrik Jakobsson 2013-07-05 257 * if it's on this pipe */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 258 /* psb_intel_crtc_dpms_video(crtc, true); TODO */ b20e9afb38d0b7f Paul Kocialkowski 2019-11-06 259 b20e9afb38d0b7f Paul Kocialkowski 2019-11-06 260 drm_crtc_vblank_on(crtc); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 261 break; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 262 case DRM_MODE_DPMS_OFF: 6306865daf0283d Patrik Jakobsson 2013-07-22 263 if (!gma_crtc->active) 2eff0b3359c097b Patrik Jakobsson 2013-07-05 264 break; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 265 6306865daf0283d Patrik Jakobsson 2013-07-22 266 gma_crtc->active = false; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 267 2eff0b3359c097b Patrik Jakobsson 2013-07-05 268 /* Give the overlay scaler a chance to disable 2eff0b3359c097b Patrik Jakobsson 2013-07-05 269 * if it's on this pipe */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 270 /* psb_intel_crtc_dpms_video(crtc, FALSE); TODO */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 271 2eff0b3359c097b Patrik Jakobsson 2013-07-05 272 /* Disable the VGA plane that we never use */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 273 REG_WRITE(VGACNTRL, VGA_DISP_DISABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 274 2eff0b3359c097b Patrik Jakobsson 2013-07-05 275 /* Turn off vblank interrupts */ c02726ffea2df09 Gustavo Padovan 2016-06-07 276 drm_crtc_vblank_off(crtc); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 277 2eff0b3359c097b Patrik Jakobsson 2013-07-05 278 /* Wait for vblank for the disable to take effect */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 279 gma_wait_for_vblank(dev); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 280 2eff0b3359c097b Patrik Jakobsson 2013-07-05 281 /* Disable plane */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 282 temp = REG_READ(map->cntr); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 283 if ((temp & DISPLAY_PLANE_ENABLE) != 0) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 284 REG_WRITE(map->cntr, 2eff0b3359c097b Patrik Jakobsson 2013-07-05 285 temp & ~DISPLAY_PLANE_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 286 /* Flush the plane changes */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 287 REG_WRITE(map->base, REG_READ(map->base)); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 288 REG_READ(map->base); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 289 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 290 2eff0b3359c097b Patrik Jakobsson 2013-07-05 291 /* Disable pipe */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 292 temp = REG_READ(map->conf); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 293 if ((temp & PIPEACONF_ENABLE) != 0) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 294 REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 295 REG_READ(map->conf); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 296 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 297 2eff0b3359c097b Patrik Jakobsson 2013-07-05 298 /* Wait for vblank for the disable to take effect. */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 299 gma_wait_for_vblank(dev); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 300 2eff0b3359c097b Patrik Jakobsson 2013-07-05 301 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 302 2eff0b3359c097b Patrik Jakobsson 2013-07-05 303 /* Disable DPLL */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 304 temp = REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 305 if ((temp & DPLL_VCO_ENABLE) != 0) { 2eff0b3359c097b Patrik Jakobsson 2013-07-05 306 REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 307 REG_READ(map->dpll); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 308 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 309 2eff0b3359c097b Patrik Jakobsson 2013-07-05 310 /* Wait for the clocks to turn off. */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 311 udelay(150); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 312 break; 2eff0b3359c097b Patrik Jakobsson 2013-07-05 313 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 314 2eff0b3359c097b Patrik Jakobsson 2013-07-05 315 if (IS_CDV(dev)) 28a8194c12f8c8b Patrik Jakobsson 2013-08-14 316 dev_priv->ops->update_wm(dev, crtc); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 317 2eff0b3359c097b Patrik Jakobsson 2013-07-05 318 /* Set FIFO watermarks */ 2eff0b3359c097b Patrik Jakobsson 2013-07-05 319 REG_WRITE(DSPARB, 0x3F3E); 2eff0b3359c097b Patrik Jakobsson 2013-07-05 320 } 2eff0b3359c097b Patrik Jakobsson 2013-07-05 321 38945be630a5848 Patrik Jakobsson 2013-07-10 @322 int gma_crtc_cursor_set(struct drm_crtc *crtc, 38945be630a5848 Patrik Jakobsson 2013-07-10 323 struct drm_file *file_priv, 38945be630a5848 Patrik Jakobsson 2013-07-10 324 uint32_t handle, 38945be630a5848 Patrik Jakobsson 2013-07-10 325 uint32_t width, uint32_t height) 38945be630a5848 Patrik Jakobsson 2013-07-10 326 { 38945be630a5848 Patrik Jakobsson 2013-07-10 327 struct drm_device *dev = crtc->dev; f71635e893c3832 Thomas Zimmermann 2021-09-20 328 struct drm_psb_private *dev_priv = to_drm_psb_private(dev); 6306865daf0283d Patrik Jakobsson 2013-07-22 329 struct gma_crtc *gma_crtc = to_gma_crtc(crtc); 6306865daf0283d Patrik Jakobsson 2013-07-22 330 int pipe = gma_crtc->pipe; 38945be630a5848 Patrik Jakobsson 2013-07-10 331 uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR; 38945be630a5848 Patrik Jakobsson 2013-07-10 332 uint32_t base = (pipe == 0) ? CURABASE : CURBBASE; 38945be630a5848 Patrik Jakobsson 2013-07-10 333 uint32_t temp; 38945be630a5848 Patrik Jakobsson 2013-07-10 334 size_t addr = 0; f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 335 struct psb_gem_object *pobj; f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 336 struct psb_gem_object *cursor_pobj = gma_crtc->cursor_pobj; 38945be630a5848 Patrik Jakobsson 2013-07-10 337 struct drm_gem_object *obj; 8b250cd3b5da18b Ira Weiny 2022-01-23 338 void *tmp_dst; 38945be630a5848 Patrik Jakobsson 2013-07-10 339 int ret = 0, i, cursor_pages; 38945be630a5848 Patrik Jakobsson 2013-07-10 340 38945be630a5848 Patrik Jakobsson 2013-07-10 341 /* If we didn't get a handle then turn the cursor off */ 38945be630a5848 Patrik Jakobsson 2013-07-10 342 if (!handle) { 38945be630a5848 Patrik Jakobsson 2013-07-10 343 temp = CURSOR_MODE_DISABLE; 38945be630a5848 Patrik Jakobsson 2013-07-10 344 if (gma_power_begin(dev, false)) { 38945be630a5848 Patrik Jakobsson 2013-07-10 345 REG_WRITE(control, temp); 38945be630a5848 Patrik Jakobsson 2013-07-10 346 REG_WRITE(base, 0); 38945be630a5848 Patrik Jakobsson 2013-07-10 347 gma_power_end(dev); 38945be630a5848 Patrik Jakobsson 2013-07-10 348 } 38945be630a5848 Patrik Jakobsson 2013-07-10 349 38945be630a5848 Patrik Jakobsson 2013-07-10 350 /* Unpin the old GEM object */ 6306865daf0283d Patrik Jakobsson 2013-07-22 351 if (gma_crtc->cursor_obj) { f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 352 pobj = to_psb_gem_object(gma_crtc->cursor_obj); f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 353 psb_gem_unpin(pobj); e19baf704a4b51b Emil Velikov 2020-05-15 354 drm_gem_object_put(gma_crtc->cursor_obj); 6306865daf0283d Patrik Jakobsson 2013-07-22 355 gma_crtc->cursor_obj = NULL; 38945be630a5848 Patrik Jakobsson 2013-07-10 356 } 38945be630a5848 Patrik Jakobsson 2013-07-10 357 return 0; 38945be630a5848 Patrik Jakobsson 2013-07-10 358 } 38945be630a5848 Patrik Jakobsson 2013-07-10 359 38945be630a5848 Patrik Jakobsson 2013-07-10 360 /* Currently we only support 64x64 cursors */ 38945be630a5848 Patrik Jakobsson 2013-07-10 361 if (width != 64 || height != 64) { 38945be630a5848 Patrik Jakobsson 2013-07-10 362 dev_dbg(dev->dev, "We currently only support 64x64 cursors\n"); 38945be630a5848 Patrik Jakobsson 2013-07-10 363 return -EINVAL; 38945be630a5848 Patrik Jakobsson 2013-07-10 364 } 38945be630a5848 Patrik Jakobsson 2013-07-10 365 a8ad0bd84f98607 Chris Wilson 2016-05-09 366 obj = drm_gem_object_lookup(file_priv, handle); 631794b44bd3dbf Patrik Jakobsson 2014-01-08 367 if (!obj) { 631794b44bd3dbf Patrik Jakobsson 2014-01-08 368 ret = -ENOENT; 631794b44bd3dbf Patrik Jakobsson 2014-01-08 369 goto unlock; 631794b44bd3dbf Patrik Jakobsson 2014-01-08 370 } 38945be630a5848 Patrik Jakobsson 2013-07-10 371 38945be630a5848 Patrik Jakobsson 2013-07-10 372 if (obj->size < width * height * 4) { 38945be630a5848 Patrik Jakobsson 2013-07-10 373 dev_dbg(dev->dev, "Buffer is too small\n"); 38945be630a5848 Patrik Jakobsson 2013-07-10 374 ret = -ENOMEM; 38945be630a5848 Patrik Jakobsson 2013-07-10 375 goto unref_cursor; 38945be630a5848 Patrik Jakobsson 2013-07-10 376 } 38945be630a5848 Patrik Jakobsson 2013-07-10 377 f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 378 pobj = to_psb_gem_object(obj); 38945be630a5848 Patrik Jakobsson 2013-07-10 379 38945be630a5848 Patrik Jakobsson 2013-07-10 380 /* Pin the memory into the GTT */ f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 381 ret = psb_gem_pin(pobj); 38945be630a5848 Patrik Jakobsson 2013-07-10 382 if (ret) { 38945be630a5848 Patrik Jakobsson 2013-07-10 383 dev_err(dev->dev, "Can not pin down handle 0x%x\n", handle); 38945be630a5848 Patrik Jakobsson 2013-07-10 384 goto unref_cursor; 38945be630a5848 Patrik Jakobsson 2013-07-10 385 } 38945be630a5848 Patrik Jakobsson 2013-07-10 386 38945be630a5848 Patrik Jakobsson 2013-07-10 387 if (dev_priv->ops->cursor_needs_phys) { f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 388 if (!cursor_pobj) { 38945be630a5848 Patrik Jakobsson 2013-07-10 389 dev_err(dev->dev, "No hardware cursor mem available"); 38945be630a5848 Patrik Jakobsson 2013-07-10 390 ret = -ENOMEM; 38945be630a5848 Patrik Jakobsson 2013-07-10 391 goto unref_cursor; 38945be630a5848 Patrik Jakobsson 2013-07-10 392 } 38945be630a5848 Patrik Jakobsson 2013-07-10 393 38945be630a5848 Patrik Jakobsson 2013-07-10 394 /* Prevent overflow */ f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 395 if (pobj->npage > 4) 38945be630a5848 Patrik Jakobsson 2013-07-10 396 cursor_pages = 4; 38945be630a5848 Patrik Jakobsson 2013-07-10 397 else f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 398 cursor_pages = pobj->npage; 38945be630a5848 Patrik Jakobsson 2013-07-10 399 38945be630a5848 Patrik Jakobsson 2013-07-10 400 /* Copy the cursor to cursor mem */ f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 401 tmp_dst = dev_priv->vram_addr + cursor_pobj->offset; 38945be630a5848 Patrik Jakobsson 2013-07-10 402 for (i = 0; i < cursor_pages; i++) { 8b250cd3b5da18b Ira Weiny 2022-01-23 403 memcpy_from_page(tmp_dst, pobj->pages[i], 0, PAGE_SIZE); 38945be630a5848 Patrik Jakobsson 2013-07-10 404 tmp_dst += PAGE_SIZE; 38945be630a5848 Patrik Jakobsson 2013-07-10 405 } 38945be630a5848 Patrik Jakobsson 2013-07-10 406 6306865daf0283d Patrik Jakobsson 2013-07-22 407 addr = gma_crtc->cursor_addr; 38945be630a5848 Patrik Jakobsson 2013-07-10 408 } else { f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 409 addr = pobj->offset; 6306865daf0283d Patrik Jakobsson 2013-07-22 410 gma_crtc->cursor_addr = addr; 38945be630a5848 Patrik Jakobsson 2013-07-10 411 } 38945be630a5848 Patrik Jakobsson 2013-07-10 412 38945be630a5848 Patrik Jakobsson 2013-07-10 413 temp = 0; 38945be630a5848 Patrik Jakobsson 2013-07-10 414 /* set the pipe for the cursor */ 38945be630a5848 Patrik Jakobsson 2013-07-10 415 temp |= (pipe << 28); 38945be630a5848 Patrik Jakobsson 2013-07-10 416 temp |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; 38945be630a5848 Patrik Jakobsson 2013-07-10 417 38945be630a5848 Patrik Jakobsson 2013-07-10 418 if (gma_power_begin(dev, false)) { 38945be630a5848 Patrik Jakobsson 2013-07-10 419 REG_WRITE(control, temp); 38945be630a5848 Patrik Jakobsson 2013-07-10 420 REG_WRITE(base, addr); 38945be630a5848 Patrik Jakobsson 2013-07-10 421 gma_power_end(dev); 38945be630a5848 Patrik Jakobsson 2013-07-10 422 } 38945be630a5848 Patrik Jakobsson 2013-07-10 423 38945be630a5848 Patrik Jakobsson 2013-07-10 424 /* unpin the old bo */ 6306865daf0283d Patrik Jakobsson 2013-07-22 425 if (gma_crtc->cursor_obj) { f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 426 pobj = to_psb_gem_object(gma_crtc->cursor_obj); f2d061ed01b3f0e Thomas Zimmermann 2021-10-15 427 psb_gem_unpin(pobj); e19baf704a4b51b Emil Velikov 2020-05-15 428 drm_gem_object_put(gma_crtc->cursor_obj); 38945be630a5848 Patrik Jakobsson 2013-07-10 429 } 38945be630a5848 Patrik Jakobsson 2013-07-10 430 6306865daf0283d Patrik Jakobsson 2013-07-22 431 gma_crtc->cursor_obj = obj; 631794b44bd3dbf Patrik Jakobsson 2014-01-08 432 unlock: 38945be630a5848 Patrik Jakobsson 2013-07-10 433 return ret; 38945be630a5848 Patrik Jakobsson 2013-07-10 434 38945be630a5848 Patrik Jakobsson 2013-07-10 435 unref_cursor: e19baf704a4b51b Emil Velikov 2020-05-15 436 drm_gem_object_put(obj); 38945be630a5848 Patrik Jakobsson 2013-07-10 437 return ret; 38945be630a5848 Patrik Jakobsson 2013-07-10 438 } 38945be630a5848 Patrik Jakobsson 2013-07-10 439 --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Patrik, I love your patch! Perhaps something to improve: [auto build test WARNING on drm/drm-next] [also build test WARNING on drm-intel/for-linux-next drm-tip/drm-tip drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220317] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 base: git://anongit.freedesktop.org/drm/drm drm-next config: i386-randconfig-s002 (https://download.01.org/0day-ci/archive/20220318/202203181032.rQkGG9w3-lkp@intel.com/config) compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Patrik-Jakobsson/drm-gma500-Remove-unused-declarations-and-other-cruft/20220317-172741 git checkout cdcc3ba62afbe456eb16b00d5df129abf8db5ca1 # save the config file to linux build tree mkdir build_dir make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/gma500/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/gma500/gma_display.c:175:5: sparse: sparse: symbol 'gma_crtc_gamma_set' was not declared. Should it be static? drivers/gpu/drm/gma500/gma_display.c:401:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *tmp_dst @@ got unsigned char [noderef] [usertype] __iomem * @@ drivers/gpu/drm/gma500/gma_display.c:401:25: sparse: expected void *tmp_dst drivers/gpu/drm/gma500/gma_display.c:401:25: sparse: got unsigned char [noderef] [usertype] __iomem * >> drivers/gpu/drm/gma500/gma_display.c:322:5: sparse: sparse: symbol 'gma_crtc_cursor_set' was not declared. Should it be static? >> drivers/gpu/drm/gma500/gma_display.c:440:5: sparse: sparse: symbol 'gma_crtc_cursor_move' was not declared. Should it be static? Please review and possibly fold the followup patch. --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/gpu/drm/gma500/cdv_device.c b/drivers/gpu/drm/gma500/cdv_device.c index d7c6cca23e94..887c157d75f4 100644 --- a/drivers/gpu/drm/gma500/cdv_device.c +++ b/drivers/gpu/drm/gma500/cdv_device.c @@ -603,7 +603,7 @@ const struct psb_ops cdv_chip_ops = { .errata = cdv_errata, .crtc_helper = &cdv_intel_helper_funcs, - .crtc_funcs = &gma_intel_crtc_funcs, + .crtc_funcs = &gma_crtc_funcs, .clock_funcs = &cdv_clock_funcs, .output_init = cdv_output_init, diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c index dd801404cf99..931ffb192fc4 100644 --- a/drivers/gpu/drm/gma500/gma_display.c +++ b/drivers/gpu/drm/gma500/gma_display.c @@ -565,6 +565,18 @@ int gma_crtc_set_config(struct drm_mode_set *set, return ret; } +const struct drm_crtc_funcs gma_crtc_funcs = { + .cursor_set = gma_crtc_cursor_set, + .cursor_move = gma_crtc_cursor_move, + .gamma_set = gma_crtc_gamma_set, + .set_config = gma_crtc_set_config, + .destroy = gma_crtc_destroy, + .page_flip = gma_crtc_page_flip, + .enable_vblank = psb_enable_vblank, + .disable_vblank = psb_disable_vblank, + .get_vblank_counter = psb_get_vblank_counter, +}; + /* * Save HW states of given crtc */ diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h index 7bd6c1ee8b21..113cf048105e 100644 --- a/drivers/gpu/drm/gma500/gma_display.h +++ b/drivers/gpu/drm/gma500/gma_display.h @@ -58,15 +58,7 @@ extern bool gma_pipe_has_type(struct drm_crtc *crtc, int type); extern void gma_wait_for_vblank(struct drm_device *dev); extern int gma_pipe_set_base(struct drm_crtc *crtc, int x, int y, struct drm_framebuffer *old_fb); -extern int gma_crtc_cursor_set(struct drm_crtc *crtc, - struct drm_file *file_priv, - uint32_t handle, - uint32_t width, uint32_t height); -extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y); extern void gma_crtc_load_lut(struct drm_crtc *crtc); -extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, - u16 *blue, u32 size, - struct drm_modeset_acquire_ctx *ctx); extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode); extern void gma_crtc_prepare(struct drm_crtc *crtc); extern void gma_crtc_commit(struct drm_crtc *crtc); @@ -83,6 +75,8 @@ extern int gma_crtc_set_config(struct drm_mode_set *set, extern void gma_crtc_save(struct drm_crtc *crtc); extern void gma_crtc_restore(struct drm_crtc *crtc); +extern const struct drm_crtc_funcs gma_crtc_funcs; + extern void gma_encoder_prepare(struct drm_encoder *encoder); extern void gma_encoder_commit(struct drm_encoder *encoder); extern void gma_encoder_destroy(struct drm_encoder *encoder); diff --git a/drivers/gpu/drm/gma500/oaktrail_device.c b/drivers/gpu/drm/gma500/oaktrail_device.c index 5c75eae630b5..40f1bc736125 100644 --- a/drivers/gpu/drm/gma500/oaktrail_device.c +++ b/drivers/gpu/drm/gma500/oaktrail_device.c @@ -545,7 +545,7 @@ const struct psb_ops oaktrail_chip_ops = { .chip_setup = oaktrail_chip_setup, .chip_teardown = oaktrail_teardown, .crtc_helper = &oaktrail_helper_funcs, - .crtc_funcs = &gma_intel_crtc_funcs, + .crtc_funcs = &gma_crtc_funcs, .output_init = oaktrail_output_init, diff --git a/drivers/gpu/drm/gma500/psb_device.c b/drivers/gpu/drm/gma500/psb_device.c index 3030f18ba022..e93e4191c0ca 100644 --- a/drivers/gpu/drm/gma500/psb_device.c +++ b/drivers/gpu/drm/gma500/psb_device.c @@ -329,7 +329,7 @@ const struct psb_ops psb_chip_ops = { .chip_teardown = psb_chip_teardown, .crtc_helper = &psb_intel_helper_funcs, - .crtc_funcs = &gma_intel_crtc_funcs, + .crtc_funcs = &gma_crtc_funcs, .clock_funcs = &psb_clock_funcs, .output_init = psb_output_init, diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h index 66f61909a8c8..88f44dbbc4eb 100644 --- a/drivers/gpu/drm/gma500/psb_drv.h +++ b/drivers/gpu/drm/gma500/psb_drv.h @@ -13,7 +13,6 @@ #include <drm/drm_device.h> -#include "gma_display.h" #include "gtt.h" #include "intel_bios.h" #include "mmu.h" @@ -647,7 +646,6 @@ extern void oaktrail_lvds_init(struct drm_device *dev, /* psb_intel_display.c */ extern const struct drm_crtc_helper_funcs psb_intel_helper_funcs; -extern const struct drm_crtc_funcs gma_intel_crtc_funcs; /* psb_intel_lvds.c */ extern const struct drm_connector_helper_funcs diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c index d5f95212934e..6df62fe7c1e0 100644 --- a/drivers/gpu/drm/gma500/psb_intel_display.c +++ b/drivers/gpu/drm/gma500/psb_intel_display.c @@ -427,18 +427,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = { .disable = gma_crtc_disable, }; -const struct drm_crtc_funcs gma_intel_crtc_funcs = { - .cursor_set = gma_crtc_cursor_set, - .cursor_move = gma_crtc_cursor_move, - .gamma_set = gma_crtc_gamma_set, - .set_config = gma_crtc_set_config, - .destroy = gma_crtc_destroy, - .page_flip = gma_crtc_page_flip, - .enable_vblank = psb_enable_vblank, - .disable_vblank = psb_disable_vblank, - .get_vblank_counter = psb_get_vblank_counter, -}; - const struct gma_clock_funcs psb_clock_funcs = { .clock = psb_intel_clock, .limit = psb_intel_limit,
All functions live in gma_display.c already so move the vtable. Also shorten the name to gma_crtc_funcs. Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> --- drivers/gpu/drm/gma500/cdv_device.c | 2 +- drivers/gpu/drm/gma500/gma_display.c | 12 ++++++++++++ drivers/gpu/drm/gma500/gma_display.h | 10 ++-------- drivers/gpu/drm/gma500/oaktrail_device.c | 2 +- drivers/gpu/drm/gma500/psb_device.c | 2 +- drivers/gpu/drm/gma500/psb_drv.h | 2 -- drivers/gpu/drm/gma500/psb_intel_display.c | 12 ------------ 7 files changed, 17 insertions(+), 25 deletions(-)