diff options
| -rw-r--r-- | drivers/video/sh_mobile_lcdcfb.c | 32 | ||||
| -rw-r--r-- | drivers/video/sh_mobile_lcdcfb.h | 2 | ||||
| -rw-r--r-- | drivers/video/sh_mobile_meram.c | 176 | ||||
| -rw-r--r-- | include/video/sh_mobile_meram.h | 21 |
4 files changed, 110 insertions, 121 deletions
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c index 98e81b31fbc4..e593e8188720 100644 --- a/drivers/video/sh_mobile_lcdcfb.c +++ b/drivers/video/sh_mobile_lcdcfb.c | |||
| @@ -1104,7 +1104,7 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv) | |||
| 1104 | /* Compute frame buffer base address and pitch for each channel. */ | 1104 | /* Compute frame buffer base address and pitch for each channel. */ |
| 1105 | for (k = 0; k < ARRAY_SIZE(priv->ch); k++) { | 1105 | for (k = 0; k < ARRAY_SIZE(priv->ch); k++) { |
| 1106 | int pixelformat; | 1106 | int pixelformat; |
| 1107 | void *meram; | 1107 | void *cache; |
| 1108 | 1108 | ||
| 1109 | ch = &priv->ch[k]; | 1109 | ch = &priv->ch[k]; |
| 1110 | if (!ch->enabled) | 1110 | if (!ch->enabled) |
| @@ -1119,12 +1119,10 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv) | |||
| 1119 | ch->cfg->meram_cfg == NULL) | 1119 | ch->cfg->meram_cfg == NULL) |
| 1120 | continue; | 1120 | continue; |
| 1121 | 1121 | ||
| 1122 | /* we need to de-init configured ICBs before we can | 1122 | /* Free the allocated MERAM cache. */ |
| 1123 | * re-initialize them. | 1123 | if (ch->cache) { |
| 1124 | */ | 1124 | mdev->ops->cache_free(mdev, ch->cache); |
| 1125 | if (ch->meram) { | 1125 | ch->cache = NULL; |
| 1126 | mdev->ops->meram_unregister(mdev, ch->meram); | ||
| 1127 | ch->meram = NULL; | ||
| 1128 | } | 1126 | } |
| 1129 | 1127 | ||
| 1130 | switch (ch->format->fourcc) { | 1128 | switch (ch->format->fourcc) { |
| @@ -1146,14 +1144,14 @@ static int sh_mobile_lcdc_start(struct sh_mobile_lcdc_priv *priv) | |||
| 1146 | break; | 1144 | break; |
| 1147 | } | 1145 | } |
| 1148 | 1146 | ||
| 1149 | meram = mdev->ops->meram_register(mdev, ch->cfg->meram_cfg, | 1147 | cache = mdev->ops->cache_alloc(mdev, ch->cfg->meram_cfg, |
| 1150 | ch->pitch, ch->yres, pixelformat, | 1148 | ch->pitch, ch->yres, pixelformat, |
| 1151 | &ch->line_size); | 1149 | &ch->line_size); |
| 1152 | if (!IS_ERR(meram)) { | 1150 | if (!IS_ERR(cache)) { |
| 1153 | mdev->ops->meram_update(mdev, meram, | 1151 | mdev->ops->cache_update(mdev, cache, |
| 1154 | ch->base_addr_y, ch->base_addr_c, | 1152 | ch->base_addr_y, ch->base_addr_c, |
| 1155 | &ch->base_addr_y, &ch->base_addr_c); | 1153 | &ch->base_addr_y, &ch->base_addr_c); |
| 1156 | ch->meram = meram; | 1154 | ch->cache = cache; |
| 1157 | } | 1155 | } |
| 1158 | } | 1156 | } |
| 1159 | 1157 | ||
| @@ -1223,12 +1221,12 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv) | |||
| 1223 | 1221 | ||
| 1224 | sh_mobile_lcdc_display_off(ch); | 1222 | sh_mobile_lcdc_display_off(ch); |
| 1225 | 1223 | ||
| 1226 | /* disable the meram */ | 1224 | /* Free the MERAM cache. */ |
| 1227 | if (ch->meram) { | 1225 | if (ch->cache) { |
| 1228 | struct sh_mobile_meram_info *mdev; | 1226 | struct sh_mobile_meram_info *mdev; |
| 1229 | mdev = priv->meram_dev; | 1227 | mdev = priv->meram_dev; |
| 1230 | mdev->ops->meram_unregister(mdev, ch->meram); | 1228 | mdev->ops->cache_free(mdev, ch->cache); |
| 1231 | ch->meram = 0; | 1229 | ch->cache = 0; |
| 1232 | } | 1230 | } |
| 1233 | 1231 | ||
| 1234 | } | 1232 | } |
| @@ -1839,11 +1837,11 @@ static int sh_mobile_lcdc_pan(struct fb_var_screeninfo *var, | |||
| 1839 | base_addr_c += var->xoffset; | 1837 | base_addr_c += var->xoffset; |
| 1840 | } | 1838 | } |
| 1841 | 1839 | ||
| 1842 | if (ch->meram) { | 1840 | if (ch->cache) { |
| 1843 | struct sh_mobile_meram_info *mdev; | 1841 | struct sh_mobile_meram_info *mdev; |
| 1844 | 1842 | ||
| 1845 | mdev = priv->meram_dev; | 1843 | mdev = priv->meram_dev; |
| 1846 | mdev->ops->meram_update(mdev, ch->meram, | 1844 | mdev->ops->cache_update(mdev, ch->cache, |
| 1847 | base_addr_y, base_addr_c, | 1845 | base_addr_y, base_addr_c, |
| 1848 | &base_addr_y, &base_addr_c); | 1846 | &base_addr_y, &base_addr_c); |
| 1849 | } | 1847 | } |
diff --git a/drivers/video/sh_mobile_lcdcfb.h b/drivers/video/sh_mobile_lcdcfb.h index 5c3bddd2cb72..e53cd1171072 100644 --- a/drivers/video/sh_mobile_lcdcfb.h +++ b/drivers/video/sh_mobile_lcdcfb.h | |||
| @@ -59,7 +59,7 @@ struct sh_mobile_lcdc_chan { | |||
| 59 | unsigned long *reg_offs; | 59 | unsigned long *reg_offs; |
| 60 | unsigned long ldmt1r_value; | 60 | unsigned long ldmt1r_value; |
| 61 | unsigned long enabled; /* ME and SE in LDCNT2R */ | 61 | unsigned long enabled; /* ME and SE in LDCNT2R */ |
| 62 | void *meram; | 62 | void *cache; |
| 63 | 63 | ||
| 64 | struct mutex open_lock; /* protects the use counter */ | 64 | struct mutex open_lock; /* protects the use counter */ |
| 65 | int use_count; | 65 | int use_count; |
diff --git a/drivers/video/sh_mobile_meram.c b/drivers/video/sh_mobile_meram.c index 82ba830bf95d..4aa3fcb87f17 100644 --- a/drivers/video/sh_mobile_meram.c +++ b/drivers/video/sh_mobile_meram.c | |||
| @@ -194,13 +194,13 @@ static inline unsigned long meram_read_reg(void __iomem *base, unsigned int off) | |||
| 194 | } | 194 | } |
| 195 | 195 | ||
| 196 | /* ----------------------------------------------------------------------------- | 196 | /* ----------------------------------------------------------------------------- |
| 197 | * Allocation | 197 | * LCDC cache planes allocation, init, cleanup and free |
| 198 | */ | 198 | */ |
| 199 | 199 | ||
| 200 | /* Allocate ICBs and MERAM for a plane. */ | 200 | /* Allocate ICBs and MERAM for a plane. */ |
| 201 | static int __meram_alloc(struct sh_mobile_meram_priv *priv, | 201 | static int meram_plane_alloc(struct sh_mobile_meram_priv *priv, |
| 202 | struct sh_mobile_meram_fb_plane *plane, | 202 | struct sh_mobile_meram_fb_plane *plane, |
| 203 | size_t size) | 203 | size_t size) |
| 204 | { | 204 | { |
| 205 | unsigned long mem; | 205 | unsigned long mem; |
| 206 | unsigned long idx; | 206 | unsigned long idx; |
| @@ -229,8 +229,8 @@ static int __meram_alloc(struct sh_mobile_meram_priv *priv, | |||
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | /* Free ICBs and MERAM for a plane. */ | 231 | /* Free ICBs and MERAM for a plane. */ |
| 232 | static void __meram_free(struct sh_mobile_meram_priv *priv, | 232 | static void meram_plane_free(struct sh_mobile_meram_priv *priv, |
| 233 | struct sh_mobile_meram_fb_plane *plane) | 233 | struct sh_mobile_meram_fb_plane *plane) |
| 234 | { | 234 | { |
| 235 | gen_pool_free(priv->pool, priv->meram + plane->marker->offset, | 235 | gen_pool_free(priv->pool, priv->meram + plane->marker->offset, |
| 236 | plane->marker->size * 1024); | 236 | plane->marker->size * 1024); |
| @@ -248,62 +248,6 @@ static int is_nvcolor(int cspace) | |||
| 248 | return 0; | 248 | return 0; |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | /* Allocate memory for the ICBs and mark them as used. */ | ||
| 252 | static struct sh_mobile_meram_fb_cache * | ||
| 253 | meram_alloc(struct sh_mobile_meram_priv *priv, | ||
| 254 | const struct sh_mobile_meram_cfg *cfg, | ||
| 255 | int pixelformat) | ||
| 256 | { | ||
| 257 | struct sh_mobile_meram_fb_cache *cache; | ||
| 258 | unsigned int nplanes = is_nvcolor(pixelformat) ? 2 : 1; | ||
| 259 | int ret; | ||
| 260 | |||
| 261 | if (cfg->icb[0].meram_size == 0) | ||
| 262 | return ERR_PTR(-EINVAL); | ||
| 263 | |||
| 264 | if (nplanes == 2 && cfg->icb[1].meram_size == 0) | ||
| 265 | return ERR_PTR(-EINVAL); | ||
| 266 | |||
| 267 | cache = kzalloc(sizeof(*cache), GFP_KERNEL); | ||
| 268 | if (cache == NULL) | ||
| 269 | return ERR_PTR(-ENOMEM); | ||
| 270 | |||
| 271 | cache->nplanes = nplanes; | ||
| 272 | |||
| 273 | ret = __meram_alloc(priv, &cache->planes[0], cfg->icb[0].meram_size); | ||
| 274 | if (ret < 0) | ||
| 275 | goto error; | ||
| 276 | |||
| 277 | cache->planes[0].marker->current_reg = 1; | ||
| 278 | cache->planes[0].marker->pixelformat = pixelformat; | ||
| 279 | |||
| 280 | if (cache->nplanes == 1) | ||
| 281 | return cache; | ||
| 282 | |||
| 283 | ret = __meram_alloc(priv, &cache->planes[1], cfg->icb[1].meram_size); | ||
| 284 | if (ret < 0) { | ||
| 285 | __meram_free(priv, &cache->planes[0]); | ||
| 286 | goto error; | ||
| 287 | } | ||
| 288 | |||
| 289 | return cache; | ||
| 290 | |||
| 291 | error: | ||
| 292 | kfree(cache); | ||
| 293 | return ERR_PTR(-ENOMEM); | ||
| 294 | } | ||
| 295 | |||
| 296 | /* Unmark the specified ICB as used. */ | ||
| 297 | static void meram_free(struct sh_mobile_meram_priv *priv, | ||
| 298 | struct sh_mobile_meram_fb_cache *cache) | ||
| 299 | { | ||
| 300 | __meram_free(priv, &cache->planes[0]); | ||
| 301 | if (cache->nplanes == 2) | ||
| 302 | __meram_free(priv, &cache->planes[1]); | ||
| 303 | |||
| 304 | kfree(cache); | ||
| 305 | } | ||
| 306 | |||
| 307 | /* Set the next address to fetch. */ | 251 | /* Set the next address to fetch. */ |
| 308 | static void meram_set_next_addr(struct sh_mobile_meram_priv *priv, | 252 | static void meram_set_next_addr(struct sh_mobile_meram_priv *priv, |
| 309 | struct sh_mobile_meram_fb_cache *cache, | 253 | struct sh_mobile_meram_fb_cache *cache, |
| @@ -355,10 +299,10 @@ meram_get_next_icb_addr(struct sh_mobile_meram_info *pdata, | |||
| 355 | (((x) * (y) + (MERAM_LINE_WIDTH - 1)) & ~(MERAM_LINE_WIDTH - 1)) | 299 | (((x) * (y) + (MERAM_LINE_WIDTH - 1)) & ~(MERAM_LINE_WIDTH - 1)) |
| 356 | 300 | ||
| 357 | /* Initialize MERAM. */ | 301 | /* Initialize MERAM. */ |
| 358 | static int meram_init(struct sh_mobile_meram_priv *priv, | 302 | static int meram_plane_init(struct sh_mobile_meram_priv *priv, |
| 359 | struct sh_mobile_meram_fb_plane *plane, | 303 | struct sh_mobile_meram_fb_plane *plane, |
| 360 | unsigned int xres, unsigned int yres, | 304 | unsigned int xres, unsigned int yres, |
| 361 | unsigned int *out_pitch) | 305 | unsigned int *out_pitch) |
| 362 | { | 306 | { |
| 363 | struct sh_mobile_meram_icb *marker = plane->marker; | 307 | struct sh_mobile_meram_icb *marker = plane->marker; |
| 364 | unsigned long total_byte_count = MERAM_CALC_BYTECOUNT(xres, yres); | 308 | unsigned long total_byte_count = MERAM_CALC_BYTECOUNT(xres, yres); |
| @@ -427,8 +371,8 @@ static int meram_init(struct sh_mobile_meram_priv *priv, | |||
| 427 | return 0; | 371 | return 0; |
| 428 | } | 372 | } |
| 429 | 373 | ||
| 430 | static void meram_deinit(struct sh_mobile_meram_priv *priv, | 374 | static void meram_plane_cleanup(struct sh_mobile_meram_priv *priv, |
| 431 | struct sh_mobile_meram_fb_plane *plane) | 375 | struct sh_mobile_meram_fb_plane *plane) |
| 432 | { | 376 | { |
| 433 | /* disable ICB */ | 377 | /* disable ICB */ |
| 434 | meram_write_icb(priv->base, plane->cache->index, MExxCTL, | 378 | meram_write_icb(priv->base, plane->cache->index, MExxCTL, |
| @@ -441,18 +385,60 @@ static void meram_deinit(struct sh_mobile_meram_priv *priv, | |||
| 441 | } | 385 | } |
| 442 | 386 | ||
| 443 | /* ----------------------------------------------------------------------------- | 387 | /* ----------------------------------------------------------------------------- |
| 444 | * Registration/unregistration | 388 | * LCDC cache operations |
| 445 | */ | 389 | */ |
| 446 | 390 | ||
| 447 | static void *sh_mobile_meram_register(struct sh_mobile_meram_info *pdata, | 391 | /* Allocate memory for the ICBs and mark them as used. */ |
| 448 | const struct sh_mobile_meram_cfg *cfg, | 392 | static struct sh_mobile_meram_fb_cache * |
| 449 | unsigned int xres, unsigned int yres, | 393 | meram_cache_alloc(struct sh_mobile_meram_priv *priv, |
| 450 | unsigned int pixelformat, | 394 | const struct sh_mobile_meram_cfg *cfg, |
| 451 | unsigned int *pitch) | 395 | int pixelformat) |
| 396 | { | ||
| 397 | unsigned int nplanes = is_nvcolor(pixelformat) ? 2 : 1; | ||
| 398 | struct sh_mobile_meram_fb_cache *cache; | ||
| 399 | int ret; | ||
| 400 | |||
| 401 | cache = kzalloc(sizeof(*cache), GFP_KERNEL); | ||
| 402 | if (cache == NULL) | ||
| 403 | return ERR_PTR(-ENOMEM); | ||
| 404 | |||
| 405 | cache->nplanes = nplanes; | ||
| 406 | |||
| 407 | ret = meram_plane_alloc(priv, &cache->planes[0], | ||
| 408 | cfg->icb[0].meram_size); | ||
| 409 | if (ret < 0) | ||
| 410 | goto error; | ||
| 411 | |||
| 412 | cache->planes[0].marker->current_reg = 1; | ||
| 413 | cache->planes[0].marker->pixelformat = pixelformat; | ||
| 414 | |||
| 415 | if (cache->nplanes == 1) | ||
| 416 | return cache; | ||
| 417 | |||
| 418 | ret = meram_plane_alloc(priv, &cache->planes[1], | ||
| 419 | cfg->icb[1].meram_size); | ||
| 420 | if (ret < 0) { | ||
| 421 | meram_plane_free(priv, &cache->planes[0]); | ||
| 422 | goto error; | ||
| 423 | } | ||
| 424 | |||
| 425 | return cache; | ||
| 426 | |||
| 427 | error: | ||
| 428 | kfree(cache); | ||
| 429 | return ERR_PTR(-ENOMEM); | ||
| 430 | } | ||
| 431 | |||
| 432 | static void *sh_mobile_cache_alloc(struct sh_mobile_meram_info *pdata, | ||
| 433 | const struct sh_mobile_meram_cfg *cfg, | ||
| 434 | unsigned int xres, unsigned int yres, | ||
| 435 | unsigned int pixelformat, | ||
| 436 | unsigned int *pitch) | ||
| 452 | { | 437 | { |
| 453 | struct sh_mobile_meram_fb_cache *cache; | 438 | struct sh_mobile_meram_fb_cache *cache; |
| 454 | struct sh_mobile_meram_priv *priv = pdata->priv; | 439 | struct sh_mobile_meram_priv *priv = pdata->priv; |
| 455 | struct platform_device *pdev = pdata->pdev; | 440 | struct platform_device *pdev = pdata->pdev; |
| 441 | unsigned int nplanes = is_nvcolor(pixelformat) ? 2 : 1; | ||
| 456 | unsigned int out_pitch; | 442 | unsigned int out_pitch; |
| 457 | 443 | ||
| 458 | if (pixelformat != SH_MOBILE_MERAM_PF_NV && | 444 | if (pixelformat != SH_MOBILE_MERAM_PF_NV && |
| @@ -469,10 +455,16 @@ static void *sh_mobile_meram_register(struct sh_mobile_meram_info *pdata, | |||
| 469 | return ERR_PTR(-EINVAL); | 455 | return ERR_PTR(-EINVAL); |
| 470 | } | 456 | } |
| 471 | 457 | ||
| 458 | if (cfg->icb[0].meram_size == 0) | ||
| 459 | return ERR_PTR(-EINVAL); | ||
| 460 | |||
| 461 | if (nplanes == 2 && cfg->icb[1].meram_size == 0) | ||
| 462 | return ERR_PTR(-EINVAL); | ||
| 463 | |||
| 472 | mutex_lock(&priv->lock); | 464 | mutex_lock(&priv->lock); |
| 473 | 465 | ||
| 474 | /* We now register the ICBs and allocate the MERAM regions. */ | 466 | /* We now register the ICBs and allocate the MERAM regions. */ |
| 475 | cache = meram_alloc(priv, cfg, pixelformat); | 467 | cache = meram_cache_alloc(priv, cfg, pixelformat); |
| 476 | if (IS_ERR(cache)) { | 468 | if (IS_ERR(cache)) { |
| 477 | dev_err(&pdev->dev, "MERAM allocation failed (%ld).", | 469 | dev_err(&pdev->dev, "MERAM allocation failed (%ld).", |
| 478 | PTR_ERR(cache)); | 470 | PTR_ERR(cache)); |
| @@ -480,14 +472,14 @@ static void *sh_mobile_meram_register(struct sh_mobile_meram_info *pdata, | |||
| 480 | } | 472 | } |
| 481 | 473 | ||
| 482 | /* initialize MERAM */ | 474 | /* initialize MERAM */ |
| 483 | meram_init(priv, &cache->planes[0], xres, yres, &out_pitch); | 475 | meram_plane_init(priv, &cache->planes[0], xres, yres, &out_pitch); |
| 484 | *pitch = out_pitch; | 476 | *pitch = out_pitch; |
| 485 | if (pixelformat == SH_MOBILE_MERAM_PF_NV) | 477 | if (pixelformat == SH_MOBILE_MERAM_PF_NV) |
| 486 | meram_init(priv, &cache->planes[1], xres, (yres + 1) / 2, | 478 | meram_plane_init(priv, &cache->planes[1], |
| 487 | &out_pitch); | 479 | xres, (yres + 1) / 2, &out_pitch); |
| 488 | else if (pixelformat == SH_MOBILE_MERAM_PF_NV24) | 480 | else if (pixelformat == SH_MOBILE_MERAM_PF_NV24) |
| 489 | meram_init(priv, &cache->planes[1], 2 * xres, (yres + 1) / 2, | 481 | meram_plane_init(priv, &cache->planes[1], |
| 490 | &out_pitch); | 482 | 2 * xres, (yres + 1) / 2, &out_pitch); |
| 491 | 483 | ||
| 492 | err: | 484 | err: |
| 493 | mutex_unlock(&priv->lock); | 485 | mutex_unlock(&priv->lock); |
| @@ -495,25 +487,29 @@ err: | |||
| 495 | } | 487 | } |
| 496 | 488 | ||
| 497 | static void | 489 | static void |
| 498 | sh_mobile_meram_unregister(struct sh_mobile_meram_info *pdata, void *data) | 490 | sh_mobile_cache_free(struct sh_mobile_meram_info *pdata, void *data) |
| 499 | { | 491 | { |
| 500 | struct sh_mobile_meram_fb_cache *cache = data; | 492 | struct sh_mobile_meram_fb_cache *cache = data; |
| 501 | struct sh_mobile_meram_priv *priv = pdata->priv; | 493 | struct sh_mobile_meram_priv *priv = pdata->priv; |
| 502 | 494 | ||
| 503 | mutex_lock(&priv->lock); | 495 | mutex_lock(&priv->lock); |
| 504 | 496 | ||
| 505 | /* deinit & free */ | 497 | /* Cleanup and free. */ |
| 506 | meram_deinit(priv, &cache->planes[0]); | 498 | meram_plane_cleanup(priv, &cache->planes[0]); |
| 507 | if (cache->nplanes == 2) | 499 | meram_plane_free(priv, &cache->planes[0]); |
| 508 | meram_deinit(priv, &cache->planes[1]); | ||
| 509 | 500 | ||
| 510 | meram_free(priv, cache); | 501 | if (cache->nplanes == 2) { |
| 502 | meram_plane_cleanup(priv, &cache->planes[1]); | ||
| 503 | meram_plane_free(priv, &cache->planes[1]); | ||
| 504 | } | ||
| 505 | |||
| 506 | kfree(cache); | ||
| 511 | 507 | ||
| 512 | mutex_unlock(&priv->lock); | 508 | mutex_unlock(&priv->lock); |
| 513 | } | 509 | } |
| 514 | 510 | ||
| 515 | static void | 511 | static void |
| 516 | sh_mobile_meram_update(struct sh_mobile_meram_info *pdata, void *data, | 512 | sh_mobile_cache_update(struct sh_mobile_meram_info *pdata, void *data, |
| 517 | unsigned long base_addr_y, unsigned long base_addr_c, | 513 | unsigned long base_addr_y, unsigned long base_addr_c, |
| 518 | unsigned long *icb_addr_y, unsigned long *icb_addr_c) | 514 | unsigned long *icb_addr_y, unsigned long *icb_addr_c) |
| 519 | { | 515 | { |
| @@ -530,9 +526,9 @@ sh_mobile_meram_update(struct sh_mobile_meram_info *pdata, void *data, | |||
| 530 | 526 | ||
| 531 | static struct sh_mobile_meram_ops sh_mobile_meram_ops = { | 527 | static struct sh_mobile_meram_ops sh_mobile_meram_ops = { |
| 532 | .module = THIS_MODULE, | 528 | .module = THIS_MODULE, |
| 533 | .meram_register = sh_mobile_meram_register, | 529 | .cache_alloc = sh_mobile_cache_alloc, |
| 534 | .meram_unregister = sh_mobile_meram_unregister, | 530 | .cache_free = sh_mobile_cache_free, |
| 535 | .meram_update = sh_mobile_meram_update, | 531 | .cache_update = sh_mobile_cache_update, |
| 536 | }; | 532 | }; |
| 537 | 533 | ||
| 538 | /* ----------------------------------------------------------------------------- | 534 | /* ----------------------------------------------------------------------------- |
diff --git a/include/video/sh_mobile_meram.h b/include/video/sh_mobile_meram.h index 29b2fd3b147e..8a5afaf2c6dc 100644 --- a/include/video/sh_mobile_meram.h +++ b/include/video/sh_mobile_meram.h | |||
| @@ -41,19 +41,14 @@ struct sh_mobile_meram_cfg { | |||
| 41 | struct module; | 41 | struct module; |
| 42 | struct sh_mobile_meram_ops { | 42 | struct sh_mobile_meram_ops { |
| 43 | struct module *module; | 43 | struct module *module; |
| 44 | /* register usage of meram */ | 44 | |
| 45 | void *(*meram_register)(struct sh_mobile_meram_info *meram_dev, | 45 | /* LCDC cache management */ |
| 46 | const struct sh_mobile_meram_cfg *cfg, | 46 | void *(*cache_alloc)(struct sh_mobile_meram_info *meram_dev, |
| 47 | unsigned int xres, unsigned int yres, | 47 | const struct sh_mobile_meram_cfg *cfg, |
| 48 | unsigned int pixelformat, | 48 | unsigned int xres, unsigned int yres, |
| 49 | unsigned int *pitch); | 49 | unsigned int pixelformat, unsigned int *pitch); |
| 50 | 50 | void (*cache_free)(struct sh_mobile_meram_info *meram_dev, void *data); | |
| 51 | /* unregister usage of meram */ | 51 | void (*cache_update)(struct sh_mobile_meram_info *meram_dev, void *data, |
| 52 | void (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, | ||
| 53 | void *data); | ||
| 54 | |||
| 55 | /* update meram settings */ | ||
| 56 | void (*meram_update)(struct sh_mobile_meram_info *meram_dev, void *data, | ||
| 57 | unsigned long base_addr_y, | 52 | unsigned long base_addr_y, |
| 58 | unsigned long base_addr_c, | 53 | unsigned long base_addr_c, |
| 59 | unsigned long *icb_addr_y, | 54 | unsigned long *icb_addr_y, |
