mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
video: fbdev: vesafb: only support MTRR_TYPE_WRCOMB
No other video driver uses MTRR types except for MTRR_TYPE_WRCOMB, the other MTRR types were implemented and supported here but with no real good reason. The ioremap() APIs are architecture agnostic and at least on x86 PAT is a new design that extends MTRRs and can replace it in a much cleaner way, where so long as the proper ioremap_wc() or variant API is used the right thing will be done behind the scenes. This is the only driver left using the other MTRR types -- and since there is no good reason for it now rip them out. Cc: Toshi Kani <[email protected]> Cc: Suresh Siddha <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Juergen Gross <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: Andy Lutomirski <[email protected]> Cc: Dave Airlie <[email protected]> Cc: Antonino Daplas <[email protected]> Cc: Jean-Christophe Plagniol-Villard <[email protected]> Cc: Tomi Valkeinen <[email protected]> Cc: Rob Clark <[email protected]> Cc: Jingoo Han <[email protected]> Cc: Wolfram Sang <[email protected]> Cc: [email protected] Cc: [email protected] Signed-off-by: Luis R. Rodriguez <[email protected]> Signed-off-by: Tomi Valkeinen <[email protected]>
This commit is contained in:
parent
99e62ef2ed
commit
87b81762a8
1 changed files with 16 additions and 46 deletions
|
|
@ -404,60 +404,30 @@ static int vesafb_probe(struct platform_device *dev)
|
|||
* region already (FIXME) */
|
||||
request_region(0x3c0, 32, "vesafb");
|
||||
|
||||
if (mtrr == 3) {
|
||||
#ifdef CONFIG_MTRR
|
||||
if (mtrr) {
|
||||
unsigned int temp_size = size_total;
|
||||
unsigned int type = 0;
|
||||
int rc;
|
||||
|
||||
switch (mtrr) {
|
||||
case 1:
|
||||
type = MTRR_TYPE_UNCACHABLE;
|
||||
break;
|
||||
case 2:
|
||||
type = MTRR_TYPE_WRBACK;
|
||||
break;
|
||||
case 3:
|
||||
type = MTRR_TYPE_WRCOMB;
|
||||
break;
|
||||
case 4:
|
||||
type = MTRR_TYPE_WRTHROUGH;
|
||||
break;
|
||||
default:
|
||||
type = 0;
|
||||
break;
|
||||
}
|
||||
/* Find the largest power-of-two */
|
||||
temp_size = roundup_pow_of_two(temp_size);
|
||||
|
||||
if (type) {
|
||||
int rc;
|
||||
|
||||
/* Find the largest power-of-two */
|
||||
temp_size = roundup_pow_of_two(temp_size);
|
||||
|
||||
/* Try and find a power of two to add */
|
||||
do {
|
||||
rc = mtrr_add(vesafb_fix.smem_start, temp_size,
|
||||
type, 1);
|
||||
temp_size >>= 1;
|
||||
} while (temp_size >= PAGE_SIZE && rc == -EINVAL);
|
||||
}
|
||||
}
|
||||
/* Try and find a power of two to add */
|
||||
do {
|
||||
rc = mtrr_add(vesafb_fix.smem_start, temp_size,
|
||||
MTRR_TYPE_WRCOMB, 1);
|
||||
temp_size >>= 1;
|
||||
} while (temp_size >= PAGE_SIZE && rc == -EINVAL);
|
||||
#endif
|
||||
|
||||
switch (mtrr) {
|
||||
case 1: /* uncachable */
|
||||
info->screen_base = ioremap_nocache(vesafb_fix.smem_start, vesafb_fix.smem_len);
|
||||
break;
|
||||
case 2: /* write-back */
|
||||
info->screen_base = ioremap_cache(vesafb_fix.smem_start, vesafb_fix.smem_len);
|
||||
break;
|
||||
case 3: /* write-combining */
|
||||
info->screen_base = ioremap_wc(vesafb_fix.smem_start, vesafb_fix.smem_len);
|
||||
break;
|
||||
case 4: /* write-through */
|
||||
default:
|
||||
} else {
|
||||
#ifdef CONFIG_MTRR
|
||||
if (mtrr && mtrr != 3)
|
||||
WARN_ONCE(1, "Only MTRR_TYPE_WRCOMB (3) make sense\n");
|
||||
#endif
|
||||
info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!info->screen_base) {
|
||||
printk(KERN_ERR
|
||||
"vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
|
||||
|
|
|
|||
Loading…
Reference in a new issue