diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 20:38:49 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 20:38:49 -0500 |
| commit | 7c2db36e730ee4facd341679ecb21ee73ba92831 (patch) | |
| tree | 75016fba72aaf0581b9263f7fa4c565e6e634f3c /include | |
| parent | 8b5628ab83b671f96ac9f174c1bd51c92589fc82 (diff) | |
| parent | a47a376f1c025e23e836c0376813c0424de665c2 (diff) | |
Merge branch 'akpm' (incoming from Andrew)
Merge misc patches from Andrew Morton:
- Florian has vanished so I appear to have become fbdev maintainer
again :(
- Joel and Mark are distracted to welcome to the new OCFS2 maintainer
- The backlight queue
- Small core kernel changes
- lib/ updates
- The rtc queue
- Various random bits
* akpm: (164 commits)
rtc: rtc-davinci: use devm_*() functions
rtc: rtc-max8997: use devm_request_threaded_irq()
rtc: rtc-max8907: use devm_request_threaded_irq()
rtc: rtc-da9052: use devm_request_threaded_irq()
rtc: rtc-wm831x: use devm_request_threaded_irq()
rtc: rtc-tps80031: use devm_request_threaded_irq()
rtc: rtc-lp8788: use devm_request_threaded_irq()
rtc: rtc-coh901331: use devm_clk_get()
rtc: rtc-vt8500: use devm_*() functions
rtc: rtc-tps6586x: use devm_request_threaded_irq()
rtc: rtc-imxdi: use devm_clk_get()
rtc: rtc-cmos: use dev_warn()/dev_dbg() instead of printk()/pr_debug()
rtc: rtc-pcf8583: use dev_warn() instead of printk()
rtc: rtc-sun4v: use pr_warn() instead of printk()
rtc: rtc-vr41xx: use dev_info() instead of printk()
rtc: rtc-rs5c313: use pr_err() instead of printk()
rtc: rtc-at91rm9200: use dev_dbg()/dev_err() instead of printk()/pr_debug()
rtc: rtc-rs5c372: use dev_dbg()/dev_warn() instead of printk()/pr_debug()
rtc: rtc-ds2404: use dev_err() instead of printk()
rtc: rtc-efi: use dev_err()/dev_warn()/pr_err() instead of printk()
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/backing-dev.h | 6 | ||||
| -rw-r--r-- | include/linux/bug.h | 47 | ||||
| -rw-r--r-- | include/linux/compiler-gcc.h | 3 | ||||
| -rw-r--r-- | include/linux/compiler-gcc3.h | 8 | ||||
| -rw-r--r-- | include/linux/compiler-gcc4.h | 36 | ||||
| -rw-r--r-- | include/linux/compiler.h | 32 | ||||
| -rw-r--r-- | include/linux/lockdep.h | 4 | ||||
| -rw-r--r-- | include/linux/pagemap.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/lp855x.h | 19 | ||||
| -rw-r--r-- | include/linux/printk.h | 18 | ||||
| -rw-r--r-- | include/linux/smp.h | 3 | ||||
| -rw-r--r-- | include/uapi/linux/elf.h | 12 | ||||
| -rw-r--r-- | include/uapi/linux/fs.h | 3 | ||||
| -rw-r--r-- | include/video/exynos_mipi_dsim.h | 1 | ||||
| -rw-r--r-- | include/video/mmp_disp.h | 352 | ||||
| -rw-r--r-- | include/video/samsung_fimd.h | 205 |
16 files changed, 590 insertions, 160 deletions
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 12731a19ef06..350459910fe1 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
| @@ -254,6 +254,7 @@ int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio); | |||
| 254 | #define BDI_CAP_EXEC_MAP 0x00000040 | 254 | #define BDI_CAP_EXEC_MAP 0x00000040 |
| 255 | #define BDI_CAP_NO_ACCT_WB 0x00000080 | 255 | #define BDI_CAP_NO_ACCT_WB 0x00000080 |
| 256 | #define BDI_CAP_SWAP_BACKED 0x00000100 | 256 | #define BDI_CAP_SWAP_BACKED 0x00000100 |
| 257 | #define BDI_CAP_STABLE_WRITES 0x00000200 | ||
| 257 | 258 | ||
| 258 | #define BDI_CAP_VMFLAGS \ | 259 | #define BDI_CAP_VMFLAGS \ |
| 259 | (BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP) | 260 | (BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP) |
| @@ -308,6 +309,11 @@ long wait_iff_congested(struct zone *zone, int sync, long timeout); | |||
| 308 | int pdflush_proc_obsolete(struct ctl_table *table, int write, | 309 | int pdflush_proc_obsolete(struct ctl_table *table, int write, |
| 309 | void __user *buffer, size_t *lenp, loff_t *ppos); | 310 | void __user *buffer, size_t *lenp, loff_t *ppos); |
| 310 | 311 | ||
| 312 | static inline bool bdi_cap_stable_pages_required(struct backing_dev_info *bdi) | ||
| 313 | { | ||
| 314 | return bdi->capabilities & BDI_CAP_STABLE_WRITES; | ||
| 315 | } | ||
| 316 | |||
| 311 | static inline bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) | 317 | static inline bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) |
| 312 | { | 318 | { |
| 313 | return !(bdi->capabilities & BDI_CAP_NO_WRITEBACK); | 319 | return !(bdi->capabilities & BDI_CAP_NO_WRITEBACK); |
diff --git a/include/linux/bug.h b/include/linux/bug.h index b1cf40de847e..7f4818673c41 100644 --- a/include/linux/bug.h +++ b/include/linux/bug.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #define _LINUX_BUG_H | 2 | #define _LINUX_BUG_H |
| 3 | 3 | ||
| 4 | #include <asm/bug.h> | 4 | #include <asm/bug.h> |
| 5 | #include <linux/compiler.h> | ||
| 5 | 6 | ||
| 6 | enum bug_trap_type { | 7 | enum bug_trap_type { |
| 7 | BUG_TRAP_TYPE_NONE = 0, | 8 | BUG_TRAP_TYPE_NONE = 0, |
| @@ -12,11 +13,12 @@ enum bug_trap_type { | |||
| 12 | struct pt_regs; | 13 | struct pt_regs; |
| 13 | 14 | ||
| 14 | #ifdef __CHECKER__ | 15 | #ifdef __CHECKER__ |
| 15 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) | 16 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) (0) |
| 16 | #define BUILD_BUG_ON_ZERO(e) (0) | 17 | #define BUILD_BUG_ON_ZERO(e) (0) |
| 17 | #define BUILD_BUG_ON_NULL(e) ((void*)0) | 18 | #define BUILD_BUG_ON_NULL(e) ((void*)0) |
| 18 | #define BUILD_BUG_ON_INVALID(e) (0) | 19 | #define BUILD_BUG_ON_INVALID(e) (0) |
| 19 | #define BUILD_BUG_ON(condition) | 20 | #define BUILD_BUG_ON_MSG(cond, msg) (0) |
| 21 | #define BUILD_BUG_ON(condition) (0) | ||
| 20 | #define BUILD_BUG() (0) | 22 | #define BUILD_BUG() (0) |
| 21 | #else /* __CHECKER__ */ | 23 | #else /* __CHECKER__ */ |
| 22 | 24 | ||
| @@ -39,29 +41,37 @@ struct pt_regs; | |||
| 39 | #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e)))) | 41 | #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e)))) |
| 40 | 42 | ||
| 41 | /** | 43 | /** |
| 44 | * BUILD_BUG_ON_MSG - break compile if a condition is true & emit supplied | ||
| 45 | * error message. | ||
| 46 | * @condition: the condition which the compiler should know is false. | ||
| 47 | * | ||
| 48 | * See BUILD_BUG_ON for description. | ||
| 49 | */ | ||
| 50 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) | ||
| 51 | |||
| 52 | /** | ||
| 42 | * BUILD_BUG_ON - break compile if a condition is true. | 53 | * BUILD_BUG_ON - break compile if a condition is true. |
| 43 | * @condition: the condition which the compiler should know is false. | 54 | * @condition: the condition which the compiler should know is false. |
| 44 | * | 55 | * |
| 45 | * If you have some code which relies on certain constants being equal, or | 56 | * If you have some code which relies on certain constants being equal, or |
| 46 | * other compile-time-evaluated condition, you should use BUILD_BUG_ON to | 57 | * some other compile-time-evaluated condition, you should use BUILD_BUG_ON to |
| 47 | * detect if someone changes it. | 58 | * detect if someone changes it. |
| 48 | * | 59 | * |
| 49 | * The implementation uses gcc's reluctance to create a negative array, but | 60 | * The implementation uses gcc's reluctance to create a negative array, but gcc |
| 50 | * gcc (as of 4.4) only emits that error for obvious cases (eg. not arguments | 61 | * (as of 4.4) only emits that error for obvious cases (e.g. not arguments to |
| 51 | * to inline functions). So as a fallback we use the optimizer; if it can't | 62 | * inline functions). Luckily, in 4.3 they added the "error" function |
| 52 | * prove the condition is false, it will cause a link error on the undefined | 63 | * attribute just for this type of case. Thus, we use a negative sized array |
| 53 | * "__build_bug_on_failed". This error message can be harder to track down | 64 | * (should always create an error on gcc versions older than 4.4) and then call |
| 54 | * though, hence the two different methods. | 65 | * an undefined function with the error attribute (should always create an |
| 66 | * error on gcc 4.3 and later). If for some reason, neither creates a | ||
| 67 | * compile-time error, we'll still have a link-time error, which is harder to | ||
| 68 | * track down. | ||
| 55 | */ | 69 | */ |
| 56 | #ifndef __OPTIMIZE__ | 70 | #ifndef __OPTIMIZE__ |
| 57 | #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) | 71 | #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) |
| 58 | #else | 72 | #else |
| 59 | extern int __build_bug_on_failed; | 73 | #define BUILD_BUG_ON(condition) \ |
| 60 | #define BUILD_BUG_ON(condition) \ | 74 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) |
| 61 | do { \ | ||
| 62 | ((void)sizeof(char[1 - 2*!!(condition)])); \ | ||
| 63 | if (condition) __build_bug_on_failed = 1; \ | ||
| 64 | } while(0) | ||
| 65 | #endif | 75 | #endif |
| 66 | 76 | ||
| 67 | /** | 77 | /** |
| @@ -71,12 +81,7 @@ extern int __build_bug_on_failed; | |||
| 71 | * build time, you should use BUILD_BUG to detect if it is | 81 | * build time, you should use BUILD_BUG to detect if it is |
| 72 | * unexpectedly used. | 82 | * unexpectedly used. |
| 73 | */ | 83 | */ |
| 74 | #define BUILD_BUG() \ | 84 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed") |
| 75 | do { \ | ||
| 76 | extern void __build_bug_failed(void) \ | ||
| 77 | __linktime_error("BUILD_BUG failed"); \ | ||
| 78 | __build_bug_failed(); \ | ||
| 79 | } while (0) | ||
| 80 | 85 | ||
| 81 | #endif /* __CHECKER__ */ | 86 | #endif /* __CHECKER__ */ |
| 82 | 87 | ||
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 6a6d7aefe12d..24545cd90a25 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
| @@ -5,6 +5,9 @@ | |||
| 5 | /* | 5 | /* |
| 6 | * Common definitions for all gcc versions go here. | 6 | * Common definitions for all gcc versions go here. |
| 7 | */ | 7 | */ |
| 8 | #define GCC_VERSION (__GNUC__ * 10000 \ | ||
| 9 | + __GNUC_MINOR__ * 100 \ | ||
| 10 | + __GNUC_PATCHLEVEL__) | ||
| 8 | 11 | ||
| 9 | 12 | ||
| 10 | /* Optimization barrier */ | 13 | /* Optimization barrier */ |
diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h index 37d412436d0f..7d89febe4d79 100644 --- a/include/linux/compiler-gcc3.h +++ b/include/linux/compiler-gcc3.h | |||
| @@ -2,22 +2,22 @@ | |||
| 2 | #error "Please don't include <linux/compiler-gcc3.h> directly, include <linux/compiler.h> instead." | 2 | #error "Please don't include <linux/compiler-gcc3.h> directly, include <linux/compiler.h> instead." |
| 3 | #endif | 3 | #endif |
| 4 | 4 | ||
| 5 | #if __GNUC_MINOR__ < 2 | 5 | #if GCC_VERSION < 30200 |
| 6 | # error Sorry, your compiler is too old - please upgrade it. | 6 | # error Sorry, your compiler is too old - please upgrade it. |
| 7 | #endif | 7 | #endif |
| 8 | 8 | ||
| 9 | #if __GNUC_MINOR__ >= 3 | 9 | #if GCC_VERSION >= 30300 |
| 10 | # define __used __attribute__((__used__)) | 10 | # define __used __attribute__((__used__)) |
| 11 | #else | 11 | #else |
| 12 | # define __used __attribute__((__unused__)) | 12 | # define __used __attribute__((__unused__)) |
| 13 | #endif | 13 | #endif |
| 14 | 14 | ||
| 15 | #if __GNUC_MINOR__ >= 4 | 15 | #if GCC_VERSION >= 30400 |
| 16 | #define __must_check __attribute__((warn_unused_result)) | 16 | #define __must_check __attribute__((warn_unused_result)) |
| 17 | #endif | 17 | #endif |
| 18 | 18 | ||
| 19 | #ifdef CONFIG_GCOV_KERNEL | 19 | #ifdef CONFIG_GCOV_KERNEL |
| 20 | # if __GNUC_MINOR__ < 4 | 20 | # if GCC_VERSION < 30400 |
| 21 | # error "GCOV profiling support for gcc versions below 3.4 not included" | 21 | # error "GCOV profiling support for gcc versions below 3.4 not included" |
| 22 | # endif /* __GNUC_MINOR__ */ | 22 | # endif /* __GNUC_MINOR__ */ |
| 23 | #endif /* CONFIG_GCOV_KERNEL */ | 23 | #endif /* CONFIG_GCOV_KERNEL */ |
diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index 662fd1b4c42a..68b162d92254 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | /* GCC 4.1.[01] miscompiles __weak */ | 5 | /* GCC 4.1.[01] miscompiles __weak */ |
| 6 | #ifdef __KERNEL__ | 6 | #ifdef __KERNEL__ |
| 7 | # if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1 | 7 | # if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 |
| 8 | # error Your version of gcc miscompiles the __weak directive | 8 | # error Your version of gcc miscompiles the __weak directive |
| 9 | # endif | 9 | # endif |
| 10 | #endif | 10 | #endif |
| @@ -13,7 +13,11 @@ | |||
| 13 | #define __must_check __attribute__((warn_unused_result)) | 13 | #define __must_check __attribute__((warn_unused_result)) |
| 14 | #define __compiler_offsetof(a,b) __builtin_offsetof(a,b) | 14 | #define __compiler_offsetof(a,b) __builtin_offsetof(a,b) |
| 15 | 15 | ||
| 16 | #if __GNUC_MINOR__ >= 3 | 16 | #if GCC_VERSION >= 40100 |
| 17 | # define __compiletime_object_size(obj) __builtin_object_size(obj, 0) | ||
| 18 | #endif | ||
| 19 | |||
| 20 | #if GCC_VERSION >= 40300 | ||
| 17 | /* Mark functions as cold. gcc will assume any path leading to a call | 21 | /* Mark functions as cold. gcc will assume any path leading to a call |
| 18 | to them will be unlikely. This means a lot of manual unlikely()s | 22 | to them will be unlikely. This means a lot of manual unlikely()s |
| 19 | are unnecessary now for any paths leading to the usual suspects | 23 | are unnecessary now for any paths leading to the usual suspects |
| @@ -29,11 +33,15 @@ | |||
| 29 | the kernel context */ | 33 | the kernel context */ |
| 30 | #define __cold __attribute__((__cold__)) | 34 | #define __cold __attribute__((__cold__)) |
| 31 | 35 | ||
| 32 | #define __linktime_error(message) __attribute__((__error__(message))) | ||
| 33 | |||
| 34 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | 36 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) |
| 35 | 37 | ||
| 36 | #if __GNUC_MINOR__ >= 5 | 38 | #ifndef __CHECKER__ |
| 39 | # define __compiletime_warning(message) __attribute__((warning(message))) | ||
| 40 | # define __compiletime_error(message) __attribute__((error(message))) | ||
| 41 | #endif /* __CHECKER__ */ | ||
| 42 | #endif /* GCC_VERSION >= 40300 */ | ||
| 43 | |||
| 44 | #if GCC_VERSION >= 40500 | ||
| 37 | /* | 45 | /* |
| 38 | * Mark a position in code as unreachable. This can be used to | 46 | * Mark a position in code as unreachable. This can be used to |
| 39 | * suppress control flow warnings after asm blocks that transfer | 47 | * suppress control flow warnings after asm blocks that transfer |
| @@ -48,30 +56,22 @@ | |||
| 48 | /* Mark a function definition as prohibited from being cloned. */ | 56 | /* Mark a function definition as prohibited from being cloned. */ |
| 49 | #define __noclone __attribute__((__noclone__)) | 57 | #define __noclone __attribute__((__noclone__)) |
| 50 | 58 | ||
| 51 | #endif | 59 | #endif /* GCC_VERSION >= 40500 */ |
| 52 | #endif | ||
| 53 | 60 | ||
| 54 | #if __GNUC_MINOR__ >= 6 | 61 | #if GCC_VERSION >= 40600 |
| 55 | /* | 62 | /* |
| 56 | * Tell the optimizer that something else uses this function or variable. | 63 | * Tell the optimizer that something else uses this function or variable. |
| 57 | */ | 64 | */ |
| 58 | #define __visible __attribute__((externally_visible)) | 65 | #define __visible __attribute__((externally_visible)) |
| 59 | #endif | 66 | #endif |
| 60 | 67 | ||
| 61 | #if __GNUC_MINOR__ > 0 | ||
| 62 | #define __compiletime_object_size(obj) __builtin_object_size(obj, 0) | ||
| 63 | #endif | ||
| 64 | #if __GNUC_MINOR__ >= 3 && !defined(__CHECKER__) | ||
| 65 | #define __compiletime_warning(message) __attribute__((warning(message))) | ||
| 66 | #define __compiletime_error(message) __attribute__((error(message))) | ||
| 67 | #endif | ||
| 68 | 68 | ||
| 69 | #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP | 69 | #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP |
| 70 | #if __GNUC_MINOR__ >= 4 | 70 | #if GCC_VERSION >= 40400 |
| 71 | #define __HAVE_BUILTIN_BSWAP32__ | 71 | #define __HAVE_BUILTIN_BSWAP32__ |
| 72 | #define __HAVE_BUILTIN_BSWAP64__ | 72 | #define __HAVE_BUILTIN_BSWAP64__ |
| 73 | #endif | 73 | #endif |
| 74 | #if __GNUC_MINOR__ >= 8 || (defined(__powerpc__) && __GNUC_MINOR__ >= 6) | 74 | #if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) |
| 75 | #define __HAVE_BUILTIN_BSWAP16__ | 75 | #define __HAVE_BUILTIN_BSWAP16__ |
| 76 | #endif | 76 | #endif |
| 77 | #endif | 77 | #endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ |
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index dd852b73b286..10b8f23fab0f 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -307,10 +307,36 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
| 307 | #endif | 307 | #endif |
| 308 | #ifndef __compiletime_error | 308 | #ifndef __compiletime_error |
| 309 | # define __compiletime_error(message) | 309 | # define __compiletime_error(message) |
| 310 | # define __compiletime_error_fallback(condition) \ | ||
| 311 | do { ((void)sizeof(char[1 - 2 * condition])); } while (0) | ||
| 312 | #else | ||
| 313 | # define __compiletime_error_fallback(condition) do { } while (0) | ||
| 310 | #endif | 314 | #endif |
| 311 | #ifndef __linktime_error | 315 | |
| 312 | # define __linktime_error(message) | 316 | #define __compiletime_assert(condition, msg, prefix, suffix) \ |
| 313 | #endif | 317 | do { \ |
| 318 | bool __cond = !(condition); \ | ||
| 319 | extern void prefix ## suffix(void) __compiletime_error(msg); \ | ||
| 320 | if (__cond) \ | ||
| 321 | prefix ## suffix(); \ | ||
| 322 | __compiletime_error_fallback(__cond); \ | ||
| 323 | } while (0) | ||
| 324 | |||
| 325 | #define _compiletime_assert(condition, msg, prefix, suffix) \ | ||
| 326 | __compiletime_assert(condition, msg, prefix, suffix) | ||
| 327 | |||
| 328 | /** | ||
| 329 | * compiletime_assert - break build and emit msg if condition is false | ||
| 330 | * @condition: a compile-time constant condition to check | ||
| 331 | * @msg: a message to emit if condition is false | ||
| 332 | * | ||
| 333 | * In tradition of POSIX assert, this macro will break the build if the | ||
| 334 | * supplied condition is *false*, emitting the supplied error message if the | ||
| 335 | * compiler has support to do so. | ||
| 336 | */ | ||
| 337 | #define compiletime_assert(condition, msg) \ | ||
| 338 | _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) | ||
| 339 | |||
| 314 | /* | 340 | /* |
| 315 | * Prevent the compiler from merging or refetching accesses. The compiler | 341 | * Prevent the compiler from merging or refetching accesses. The compiler |
| 316 | * is also forbidden from reordering successive instances of ACCESS_ONCE(), | 342 | * is also forbidden from reordering successive instances of ACCESS_ONCE(), |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 2bca44b0893c..bfe88c4aa251 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
| @@ -359,7 +359,9 @@ extern void lockdep_trace_alloc(gfp_t mask); | |||
| 359 | 359 | ||
| 360 | #define lockdep_depth(tsk) (debug_locks ? (tsk)->lockdep_depth : 0) | 360 | #define lockdep_depth(tsk) (debug_locks ? (tsk)->lockdep_depth : 0) |
| 361 | 361 | ||
| 362 | #define lockdep_assert_held(l) WARN_ON(debug_locks && !lockdep_is_held(l)) | 362 | #define lockdep_assert_held(l) do { \ |
| 363 | WARN_ON(debug_locks && !lockdep_is_held(l)); \ | ||
| 364 | } while (0) | ||
| 363 | 365 | ||
| 364 | #define lockdep_recursing(tsk) ((tsk)->lockdep_recursion) | 366 | #define lockdep_recursing(tsk) ((tsk)->lockdep_recursion) |
| 365 | 367 | ||
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 6da609d14c15..0e38e13eb249 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
| @@ -414,6 +414,7 @@ static inline void wait_on_page_writeback(struct page *page) | |||
| 414 | } | 414 | } |
| 415 | 415 | ||
| 416 | extern void end_page_writeback(struct page *page); | 416 | extern void end_page_writeback(struct page *page); |
| 417 | void wait_for_stable_page(struct page *page); | ||
| 417 | 418 | ||
| 418 | /* | 419 | /* |
| 419 | * Add an arbitrary waiter to a page's wait queue | 420 | * Add an arbitrary waiter to a page's wait queue |
diff --git a/include/linux/platform_data/lp855x.h b/include/linux/platform_data/lp855x.h index e81f62d24ee2..20ee8b221dbd 100644 --- a/include/linux/platform_data/lp855x.h +++ b/include/linux/platform_data/lp855x.h | |||
| @@ -49,12 +49,24 @@ | |||
| 49 | #define LP8556_FAST_CONFIG BIT(7) /* use it if EPROMs should be maintained | 49 | #define LP8556_FAST_CONFIG BIT(7) /* use it if EPROMs should be maintained |
| 50 | when exiting the low power mode */ | 50 | when exiting the low power mode */ |
| 51 | 51 | ||
| 52 | /* CONFIG register - LP8557 */ | ||
| 53 | #define LP8557_PWM_STANDBY BIT(7) | ||
| 54 | #define LP8557_PWM_FILTER BIT(6) | ||
| 55 | #define LP8557_RELOAD_EPROM BIT(3) /* use it if EPROMs should be reset | ||
| 56 | when the backlight turns on */ | ||
| 57 | #define LP8557_OFF_OPENLEDS BIT(2) | ||
| 58 | #define LP8557_PWM_CONFIG LP8557_PWM_ONLY | ||
| 59 | #define LP8557_I2C_CONFIG LP8557_I2C_ONLY | ||
| 60 | #define LP8557_COMB1_CONFIG LP8557_COMBINED1 | ||
| 61 | #define LP8557_COMB2_CONFIG LP8557_COMBINED2 | ||
| 62 | |||
| 52 | enum lp855x_chip_id { | 63 | enum lp855x_chip_id { |
| 53 | LP8550, | 64 | LP8550, |
| 54 | LP8551, | 65 | LP8551, |
| 55 | LP8552, | 66 | LP8552, |
| 56 | LP8553, | 67 | LP8553, |
| 57 | LP8556, | 68 | LP8556, |
| 69 | LP8557, | ||
| 58 | }; | 70 | }; |
| 59 | 71 | ||
| 60 | enum lp855x_brightness_ctrl_mode { | 72 | enum lp855x_brightness_ctrl_mode { |
| @@ -89,6 +101,13 @@ enum lp8556_brightness_source { | |||
| 89 | LP8556_COMBINED2, /* pwm + i2c after the shaper block */ | 101 | LP8556_COMBINED2, /* pwm + i2c after the shaper block */ |
| 90 | }; | 102 | }; |
| 91 | 103 | ||
| 104 | enum lp8557_brightness_source { | ||
| 105 | LP8557_PWM_ONLY, | ||
| 106 | LP8557_I2C_ONLY, | ||
| 107 | LP8557_COMBINED1, /* pwm + i2c after the shaper block */ | ||
| 108 | LP8557_COMBINED2, /* pwm + i2c before the shaper block */ | ||
| 109 | }; | ||
| 110 | |||
| 92 | struct lp855x_rom_data { | 111 | struct lp855x_rom_data { |
| 93 | u8 addr; | 112 | u8 addr; |
| 94 | u8 val; | 113 | u8 val; |
diff --git a/include/linux/printk.h b/include/linux/printk.h index 5bef3045218e..1249a54d17e0 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h | |||
| @@ -252,6 +252,15 @@ extern void dump_stack(void) __cold; | |||
| 252 | printk_once(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) | 252 | printk_once(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) |
| 253 | #define pr_cont_once(fmt, ...) \ | 253 | #define pr_cont_once(fmt, ...) \ |
| 254 | printk_once(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__) | 254 | printk_once(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__) |
| 255 | |||
| 256 | #if defined(DEBUG) | ||
| 257 | #define pr_devel_once(fmt, ...) \ | ||
| 258 | printk_once(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) | ||
| 259 | #else | ||
| 260 | #define pr_devel_once(fmt, ...) \ | ||
| 261 | no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) | ||
| 262 | #endif | ||
| 263 | |||
| 255 | /* If you are writing a driver, please use dev_dbg instead */ | 264 | /* If you are writing a driver, please use dev_dbg instead */ |
| 256 | #if defined(DEBUG) | 265 | #if defined(DEBUG) |
| 257 | #define pr_debug_once(fmt, ...) \ | 266 | #define pr_debug_once(fmt, ...) \ |
| @@ -295,6 +304,15 @@ extern void dump_stack(void) __cold; | |||
| 295 | #define pr_info_ratelimited(fmt, ...) \ | 304 | #define pr_info_ratelimited(fmt, ...) \ |
| 296 | printk_ratelimited(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) | 305 | printk_ratelimited(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) |
| 297 | /* no pr_cont_ratelimited, don't do that... */ | 306 | /* no pr_cont_ratelimited, don't do that... */ |
| 307 | |||
| 308 | #if defined(DEBUG) | ||
| 309 | #define pr_devel_ratelimited(fmt, ...) \ | ||
| 310 | printk_ratelimited(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) | ||
| 311 | #else | ||
| 312 | #define pr_devel_ratelimited(fmt, ...) \ | ||
| 313 | no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) | ||
| 314 | #endif | ||
| 315 | |||
| 298 | /* If you are writing a driver, please use dev_dbg instead */ | 316 | /* If you are writing a driver, please use dev_dbg instead */ |
| 299 | #if defined(DEBUG) | 317 | #if defined(DEBUG) |
| 300 | #define pr_debug_ratelimited(fmt, ...) \ | 318 | #define pr_debug_ratelimited(fmt, ...) \ |
diff --git a/include/linux/smp.h b/include/linux/smp.h index dd6f06be3c9f..3e07a7df6478 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
| @@ -89,7 +89,8 @@ void kick_all_cpus_sync(void); | |||
| 89 | #ifdef CONFIG_USE_GENERIC_SMP_HELPERS | 89 | #ifdef CONFIG_USE_GENERIC_SMP_HELPERS |
| 90 | void __init call_function_init(void); | 90 | void __init call_function_init(void); |
| 91 | void generic_smp_call_function_single_interrupt(void); | 91 | void generic_smp_call_function_single_interrupt(void); |
| 92 | void generic_smp_call_function_interrupt(void); | 92 | #define generic_smp_call_function_interrupt \ |
| 93 | generic_smp_call_function_single_interrupt | ||
| 93 | #else | 94 | #else |
| 94 | static inline void call_function_init(void) { } | 95 | static inline void call_function_init(void) { } |
| 95 | #endif | 96 | #endif |
diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h index 126a8175e3e2..900b9484445b 100644 --- a/include/uapi/linux/elf.h +++ b/include/uapi/linux/elf.h | |||
| @@ -49,14 +49,14 @@ typedef __s64 Elf64_Sxword; | |||
| 49 | * | 49 | * |
| 50 | * Specifications are available in: | 50 | * Specifications are available in: |
| 51 | * | 51 | * |
| 52 | * - Sun microsystems: Linker and Libraries. | 52 | * - Oracle: Linker and Libraries. |
| 53 | * Part No: 817-1984-17, September 2008. | 53 | * Part No: 817–1984–19, August 2011. |
| 54 | * URL: http://docs.sun.com/app/docs/doc/817-1984 | 54 | * http://docs.oracle.com/cd/E18752_01/pdf/817-1984.pdf |
| 55 | * | 55 | * |
| 56 | * - System V ABI AMD64 Architecture Processor Supplement | 56 | * - System V ABI AMD64 Architecture Processor Supplement |
| 57 | * Draft Version 0.99., | 57 | * Draft Version 0.99.4, |
| 58 | * May 11, 2009. | 58 | * January 13, 2010. |
| 59 | * URL: http://www.x86-64.org/ | 59 | * http://www.cs.washington.edu/education/courses/cse351/12wi/supp-docs/abi.pdf |
| 60 | */ | 60 | */ |
| 61 | #define PN_XNUM 0xffff | 61 | #define PN_XNUM 0xffff |
| 62 | 62 | ||
diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index 780d4c6093eb..c7fc1e6517c3 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h | |||
| @@ -86,6 +86,9 @@ struct inodes_stat_t { | |||
| 86 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ | 86 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ |
| 87 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ | 87 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ |
| 88 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ | 88 | #define MS_STRICTATIME (1<<24) /* Always perform atime updates */ |
| 89 | |||
| 90 | /* These sb flags are internal to the kernel */ | ||
| 91 | #define MS_SNAP_STABLE (1<<27) /* Snapshot pages during writeback, if needed */ | ||
| 89 | #define MS_NOSEC (1<<28) | 92 | #define MS_NOSEC (1<<28) |
| 90 | #define MS_BORN (1<<29) | 93 | #define MS_BORN (1<<29) |
| 91 | #define MS_ACTIVE (1<<30) | 94 | #define MS_ACTIVE (1<<30) |
diff --git a/include/video/exynos_mipi_dsim.h b/include/video/exynos_mipi_dsim.h index 83ce5e667d47..89dc88a171af 100644 --- a/include/video/exynos_mipi_dsim.h +++ b/include/video/exynos_mipi_dsim.h | |||
| @@ -220,7 +220,6 @@ struct mipi_dsim_config { | |||
| 220 | struct mipi_dsim_device { | 220 | struct mipi_dsim_device { |
| 221 | struct device *dev; | 221 | struct device *dev; |
| 222 | int id; | 222 | int id; |
| 223 | struct resource *res; | ||
| 224 | struct clk *clock; | 223 | struct clk *clock; |
| 225 | unsigned int irq; | 224 | unsigned int irq; |
| 226 | void __iomem *reg_base; | 225 | void __iomem *reg_base; |
diff --git a/include/video/mmp_disp.h b/include/video/mmp_disp.h new file mode 100644 index 000000000000..b9dd1fbb0082 --- /dev/null +++ b/include/video/mmp_disp.h | |||
| @@ -0,0 +1,352 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/video/mmp_disp.h | ||
| 3 | * Header file for Marvell MMP Display Controller | ||
| 4 | * | ||
| 5 | * Copyright (C) 2012 Marvell Technology Group Ltd. | ||
| 6 | * Authors: Zhou Zhu <zzhu3@marvell.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify it | ||
| 9 | * under the terms of the GNU General Public License as published by the | ||
| 10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 11 | * option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 14 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 15 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 16 | * more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License along with | ||
| 19 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | * | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef _MMP_DISP_H_ | ||
| 24 | #define _MMP_DISP_H_ | ||
| 25 | #include <linux/kthread.h> | ||
| 26 | |||
| 27 | enum { | ||
| 28 | PIXFMT_UYVY = 0, | ||
| 29 | PIXFMT_VYUY, | ||
| 30 | PIXFMT_YUYV, | ||
| 31 | PIXFMT_YUV422P, | ||
| 32 | PIXFMT_YVU422P, | ||
| 33 | PIXFMT_YUV420P, | ||
| 34 | PIXFMT_YVU420P, | ||
| 35 | PIXFMT_RGB565 = 0x100, | ||
| 36 | PIXFMT_BGR565, | ||
| 37 | PIXFMT_RGB1555, | ||
| 38 | PIXFMT_BGR1555, | ||
| 39 | PIXFMT_RGB888PACK, | ||
| 40 | PIXFMT_BGR888PACK, | ||
| 41 | PIXFMT_RGB888UNPACK, | ||
| 42 | PIXFMT_BGR888UNPACK, | ||
| 43 | PIXFMT_RGBA888, | ||
| 44 | PIXFMT_BGRA888, | ||
| 45 | PIXFMT_RGB666, /* for output usage */ | ||
| 46 | PIXFMT_PSEUDOCOLOR = 0x200, | ||
| 47 | }; | ||
| 48 | |||
| 49 | static inline int pixfmt_to_stride(int pix_fmt) | ||
| 50 | { | ||
| 51 | switch (pix_fmt) { | ||
| 52 | case PIXFMT_RGB565: | ||
| 53 | case PIXFMT_BGR565: | ||
| 54 | case PIXFMT_RGB1555: | ||
| 55 | case PIXFMT_BGR1555: | ||
| 56 | case PIXFMT_UYVY: | ||
| 57 | case PIXFMT_VYUY: | ||
| 58 | case PIXFMT_YUYV: | ||
| 59 | return 2; | ||
| 60 | case PIXFMT_RGB888UNPACK: | ||
| 61 | case PIXFMT_BGR888UNPACK: | ||
| 62 | case PIXFMT_RGBA888: | ||
| 63 | case PIXFMT_BGRA888: | ||
| 64 | return 4; | ||
| 65 | case PIXFMT_RGB888PACK: | ||
| 66 | case PIXFMT_BGR888PACK: | ||
| 67 | return 3; | ||
| 68 | case PIXFMT_YUV422P: | ||
| 69 | case PIXFMT_YVU422P: | ||
| 70 | case PIXFMT_YUV420P: | ||
| 71 | case PIXFMT_YVU420P: | ||
| 72 | case PIXFMT_PSEUDOCOLOR: | ||
| 73 | return 1; | ||
| 74 | default: | ||
| 75 | return 0; | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | /* parameters used by path/overlay */ | ||
| 80 | /* overlay related para: win/addr */ | ||
| 81 | struct mmp_win { | ||
| 82 | /* position/size of window */ | ||
| 83 | u16 xsrc; | ||
| 84 | u16 ysrc; | ||
| 85 | u16 xdst; | ||
| 86 | u16 ydst; | ||
| 87 | u16 xpos; | ||
| 88 | u16 ypos; | ||
| 89 | u16 left_crop; | ||
| 90 | u16 right_crop; | ||
| 91 | u16 up_crop; | ||
| 92 | u16 bottom_crop; | ||
| 93 | int pix_fmt; | ||
| 94 | }; | ||
| 95 | |||
| 96 | struct mmp_addr { | ||
| 97 | /* phys address */ | ||
| 98 | u32 phys[6]; | ||
| 99 | }; | ||
| 100 | |||
| 101 | /* path related para: mode */ | ||
| 102 | struct mmp_mode { | ||
| 103 | const char *name; | ||
| 104 | u32 refresh; | ||
| 105 | u32 xres; | ||
| 106 | u32 yres; | ||
| 107 | u32 left_margin; | ||
| 108 | u32 right_margin; | ||
| 109 | u32 upper_margin; | ||
| 110 | u32 lower_margin; | ||
| 111 | u32 hsync_len; | ||
| 112 | u32 vsync_len; | ||
| 113 | u32 hsync_invert; | ||
| 114 | u32 vsync_invert; | ||
| 115 | u32 invert_pixclock; | ||
| 116 | u32 pixclock_freq; | ||
| 117 | int pix_fmt_out; | ||
| 118 | }; | ||
| 119 | |||
| 120 | /* main structures */ | ||
| 121 | struct mmp_path; | ||
| 122 | struct mmp_overlay; | ||
| 123 | struct mmp_panel; | ||
| 124 | |||
| 125 | /* status types */ | ||
| 126 | enum { | ||
| 127 | MMP_OFF = 0, | ||
| 128 | MMP_ON, | ||
| 129 | }; | ||
| 130 | |||
| 131 | static inline const char *stat_name(int stat) | ||
| 132 | { | ||
| 133 | switch (stat) { | ||
| 134 | case MMP_OFF: | ||
| 135 | return "OFF"; | ||
| 136 | case MMP_ON: | ||
| 137 | return "ON"; | ||
| 138 | default: | ||
| 139 | return "UNKNOWNSTAT"; | ||
| 140 | } | ||
| 141 | } | ||
| 142 | |||
| 143 | struct mmp_overlay_ops { | ||
| 144 | /* should be provided by driver */ | ||
| 145 | void (*set_fetch)(struct mmp_overlay *overlay, int fetch_id); | ||
| 146 | void (*set_onoff)(struct mmp_overlay *overlay, int status); | ||
| 147 | void (*set_win)(struct mmp_overlay *overlay, struct mmp_win *win); | ||
| 148 | int (*set_addr)(struct mmp_overlay *overlay, struct mmp_addr *addr); | ||
| 149 | }; | ||
| 150 | |||
| 151 | /* overlay describes a z-order indexed slot in each path. */ | ||
| 152 | struct mmp_overlay { | ||
| 153 | int id; | ||
| 154 | const char *name; | ||
| 155 | struct mmp_path *path; | ||
| 156 | |||
| 157 | /* overlay info: private data */ | ||
| 158 | int dmafetch_id; | ||
| 159 | struct mmp_addr addr; | ||
| 160 | struct mmp_win win; | ||
| 161 | |||
| 162 | /* state */ | ||
| 163 | int open_count; | ||
| 164 | int status; | ||
| 165 | struct mutex access_ok; | ||
| 166 | |||
| 167 | struct mmp_overlay_ops *ops; | ||
| 168 | }; | ||
| 169 | |||
| 170 | /* panel type */ | ||
| 171 | enum { | ||
| 172 | PANELTYPE_ACTIVE = 0, | ||
| 173 | PANELTYPE_SMART, | ||
| 174 | PANELTYPE_TV, | ||
| 175 | PANELTYPE_DSI_CMD, | ||
| 176 | PANELTYPE_DSI_VIDEO, | ||
| 177 | }; | ||
| 178 | |||
| 179 | struct mmp_panel { | ||
| 180 | /* use node to register to list */ | ||
| 181 | struct list_head node; | ||
| 182 | const char *name; | ||
| 183 | /* path name used to connect to proper path configed */ | ||
| 184 | const char *plat_path_name; | ||
| 185 | struct device *dev; | ||
| 186 | int panel_type; | ||
| 187 | void *plat_data; | ||
| 188 | int (*get_modelist)(struct mmp_panel *panel, | ||
| 189 | struct mmp_mode **modelist); | ||
| 190 | void (*set_mode)(struct mmp_panel *panel, | ||
| 191 | struct mmp_mode *mode); | ||
| 192 | void (*set_onoff)(struct mmp_panel *panel, | ||
| 193 | int status); | ||
| 194 | }; | ||
| 195 | |||
| 196 | struct mmp_path_ops { | ||
| 197 | int (*check_status)(struct mmp_path *path); | ||
| 198 | struct mmp_overlay *(*get_overlay)(struct mmp_path *path, | ||
| 199 | int overlay_id); | ||
| 200 | int (*get_modelist)(struct mmp_path *path, | ||
| 201 | struct mmp_mode **modelist); | ||
| 202 | |||
| 203 | /* follow ops should be provided by driver */ | ||
| 204 | void (*set_mode)(struct mmp_path *path, struct mmp_mode *mode); | ||
| 205 | void (*set_onoff)(struct mmp_path *path, int status); | ||
| 206 | /* todo: add query */ | ||
| 207 | }; | ||
| 208 | |||
| 209 | /* path output types */ | ||
| 210 | enum { | ||
| 211 | PATH_OUT_PARALLEL, | ||
| 212 | PATH_OUT_DSI, | ||
| 213 | PATH_OUT_HDMI, | ||
| 214 | }; | ||
| 215 | |||
| 216 | /* path is main part of mmp-disp */ | ||
| 217 | struct mmp_path { | ||
| 218 | /* use node to register to list */ | ||
| 219 | struct list_head node; | ||
| 220 | |||
| 221 | /* init data */ | ||
| 222 | struct device *dev; | ||
| 223 | |||
| 224 | int id; | ||
| 225 | const char *name; | ||
| 226 | int output_type; | ||
| 227 | struct mmp_panel *panel; | ||
| 228 | void *plat_data; | ||
| 229 | |||
| 230 | /* dynamic use */ | ||
| 231 | struct mmp_mode mode; | ||
| 232 | |||
| 233 | /* state */ | ||
| 234 | int open_count; | ||
| 235 | int status; | ||
| 236 | struct mutex access_ok; | ||
| 237 | |||
| 238 | struct mmp_path_ops ops; | ||
| 239 | |||
| 240 | /* layers */ | ||
| 241 | int overlay_num; | ||
| 242 | struct mmp_overlay overlays[0]; | ||
| 243 | }; | ||
| 244 | |||
| 245 | extern struct mmp_path *mmp_get_path(const char *name); | ||
| 246 | static inline void mmp_path_set_mode(struct mmp_path *path, | ||
| 247 | struct mmp_mode *mode) | ||
| 248 | { | ||
| 249 | if (path) | ||
| 250 | path->ops.set_mode(path, mode); | ||
| 251 | } | ||
| 252 | static inline void mmp_path_set_onoff(struct mmp_path *path, int status) | ||
| 253 | { | ||
| 254 | if (path) | ||
| 255 | path->ops.set_onoff(path, status); | ||
| 256 | } | ||
| 257 | static inline int mmp_path_get_modelist(struct mmp_path *path, | ||
| 258 | struct mmp_mode **modelist) | ||
| 259 | { | ||
| 260 | if (path) | ||
| 261 | return path->ops.get_modelist(path, modelist); | ||
| 262 | return 0; | ||
| 263 | } | ||
| 264 | static inline struct mmp_overlay *mmp_path_get_overlay( | ||
| 265 | struct mmp_path *path, int overlay_id) | ||
| 266 | { | ||
| 267 | if (path) | ||
| 268 | return path->ops.get_overlay(path, overlay_id); | ||
| 269 | return NULL; | ||
| 270 | } | ||
| 271 | static inline void mmp_overlay_set_fetch(struct mmp_overlay *overlay, | ||
| 272 | int fetch_id) | ||
| 273 | { | ||
| 274 | if (overlay) | ||
| 275 | overlay->ops->set_fetch(overlay, fetch_id); | ||
| 276 | } | ||
| 277 | static inline void mmp_overlay_set_onoff(struct mmp_overlay *overlay, | ||
| 278 | int status) | ||
| 279 | { | ||
| 280 | if (overlay) | ||
| 281 | overlay->ops->set_onoff(overlay, status); | ||
| 282 | } | ||
| 283 | static inline void mmp_overlay_set_win(struct mmp_overlay *overlay, | ||
| 284 | struct mmp_win *win) | ||
| 285 | { | ||
| 286 | if (overlay) | ||
| 287 | overlay->ops->set_win(overlay, win); | ||
| 288 | } | ||
| 289 | static inline int mmp_overlay_set_addr(struct mmp_overlay *overlay, | ||
| 290 | struct mmp_addr *addr) | ||
| 291 | { | ||
| 292 | if (overlay) | ||
| 293 | return overlay->ops->set_addr(overlay, addr); | ||
| 294 | return 0; | ||
| 295 | } | ||
| 296 | |||
| 297 | /* | ||
| 298 | * driver data is set from each detailed ctrl driver for path usage | ||
| 299 | * it defined a common interface that plat driver need to implement | ||
| 300 | */ | ||
| 301 | struct mmp_path_info { | ||
| 302 | /* driver data, set when registed*/ | ||
| 303 | const char *name; | ||
| 304 | struct device *dev; | ||
| 305 | int id; | ||
| 306 | int output_type; | ||
| 307 | int overlay_num; | ||
| 308 | void (*set_mode)(struct mmp_path *path, struct mmp_mode *mode); | ||
| 309 | void (*set_onoff)(struct mmp_path *path, int status); | ||
| 310 | struct mmp_overlay_ops *overlay_ops; | ||
| 311 | void *plat_data; | ||
| 312 | }; | ||
| 313 | |||
| 314 | extern struct mmp_path *mmp_register_path( | ||
| 315 | struct mmp_path_info *info); | ||
| 316 | extern void mmp_unregister_path(struct mmp_path *path); | ||
| 317 | extern void mmp_register_panel(struct mmp_panel *panel); | ||
| 318 | extern void mmp_unregister_panel(struct mmp_panel *panel); | ||
| 319 | |||
| 320 | /* defintions for platform data */ | ||
| 321 | /* interface for buffer driver */ | ||
| 322 | struct mmp_buffer_driver_mach_info { | ||
| 323 | const char *name; | ||
| 324 | const char *path_name; | ||
| 325 | int overlay_id; | ||
| 326 | int dmafetch_id; | ||
| 327 | int default_pixfmt; | ||
| 328 | }; | ||
| 329 | |||
| 330 | /* interface for controllers driver */ | ||
| 331 | struct mmp_mach_path_config { | ||
| 332 | const char *name; | ||
| 333 | int overlay_num; | ||
| 334 | int output_type; | ||
| 335 | u32 path_config; | ||
| 336 | u32 link_config; | ||
| 337 | }; | ||
| 338 | |||
| 339 | struct mmp_mach_plat_info { | ||
| 340 | const char *name; | ||
| 341 | const char *clk_name; | ||
| 342 | int path_num; | ||
| 343 | struct mmp_mach_path_config *paths; | ||
| 344 | }; | ||
| 345 | |||
| 346 | /* interface for panel drivers */ | ||
| 347 | struct mmp_mach_panel_info { | ||
| 348 | const char *name; | ||
| 349 | void (*plat_set_onoff)(int status); | ||
| 350 | const char *plat_path_name; | ||
| 351 | }; | ||
| 352 | #endif /* _MMP_DISP_H_ */ | ||
diff --git a/include/video/samsung_fimd.h b/include/video/samsung_fimd.h index e7554486a2b7..b0393209679b 100644 --- a/include/video/samsung_fimd.h +++ b/include/video/samsung_fimd.h | |||
| @@ -8,12 +8,8 @@ | |||
| 8 | * S3C Platform - new-style fimd and framebuffer register definitions | 8 | * S3C Platform - new-style fimd and framebuffer register definitions |
| 9 | * | 9 | * |
| 10 | * This is the register set for the fimd and new style framebuffer interface | 10 | * This is the register set for the fimd and new style framebuffer interface |
| 11 | * found from the S3C2443 onwards into the S3C2416, S3C2450 and the | 11 | * found from the S3C2443 onwards into the S3C2416, S3C2450, the |
| 12 | * S3C64XX series such as the S3C6400 and S3C6410. | 12 | * S3C64XX series such as the S3C6400 and S3C6410, and EXYNOS series. |
| 13 | * | ||
| 14 | * The file does not contain the cpu specific items which are based on | ||
| 15 | * whichever architecture is selected, it only contains the core of the | ||
| 16 | * register set. See <mach/regs-fb.h> to get the specifics. | ||
| 17 | * | 13 | * |
| 18 | * This program is free software; you can redistribute it and/or modify | 14 | * This program is free software; you can redistribute it and/or modify |
| 19 | * it under the terms of the GNU General Public License version 2 as | 15 | * it under the terms of the GNU General Public License version 2 as |
| @@ -22,10 +18,10 @@ | |||
| 22 | 18 | ||
| 23 | /* VIDCON0 */ | 19 | /* VIDCON0 */ |
| 24 | 20 | ||
| 25 | #define VIDCON0 (0x00) | 21 | #define VIDCON0 0x00 |
| 26 | #define VIDCON0_INTERLACE (1 << 29) | 22 | #define VIDCON0_INTERLACE (1 << 29) |
| 27 | #define VIDCON0_VIDOUT_MASK (0x7 << 26) | 23 | #define VIDCON0_VIDOUT_MASK (0x7 << 26) |
| 28 | #define VIDCON0_VIDOUT_SHIFT (26) | 24 | #define VIDCON0_VIDOUT_SHIFT 26 |
| 29 | #define VIDCON0_VIDOUT_RGB (0x0 << 26) | 25 | #define VIDCON0_VIDOUT_RGB (0x0 << 26) |
| 30 | #define VIDCON0_VIDOUT_TV (0x1 << 26) | 26 | #define VIDCON0_VIDOUT_TV (0x1 << 26) |
| 31 | #define VIDCON0_VIDOUT_I80_LDI0 (0x2 << 26) | 27 | #define VIDCON0_VIDOUT_I80_LDI0 (0x2 << 26) |
| @@ -35,7 +31,7 @@ | |||
| 35 | #define VIDCON0_VIDOUT_WB_I80_LDI1 (0x7 << 26) | 31 | #define VIDCON0_VIDOUT_WB_I80_LDI1 (0x7 << 26) |
| 36 | 32 | ||
| 37 | #define VIDCON0_L1_DATA_MASK (0x7 << 23) | 33 | #define VIDCON0_L1_DATA_MASK (0x7 << 23) |
| 38 | #define VIDCON0_L1_DATA_SHIFT (23) | 34 | #define VIDCON0_L1_DATA_SHIFT 23 |
| 39 | #define VIDCON0_L1_DATA_16BPP (0x0 << 23) | 35 | #define VIDCON0_L1_DATA_16BPP (0x0 << 23) |
| 40 | #define VIDCON0_L1_DATA_18BPP16 (0x1 << 23) | 36 | #define VIDCON0_L1_DATA_18BPP16 (0x1 << 23) |
| 41 | #define VIDCON0_L1_DATA_18BPP9 (0x2 << 23) | 37 | #define VIDCON0_L1_DATA_18BPP9 (0x2 << 23) |
| @@ -44,7 +40,7 @@ | |||
| 44 | #define VIDCON0_L1_DATA_16BPP8 (0x5 << 23) | 40 | #define VIDCON0_L1_DATA_16BPP8 (0x5 << 23) |
| 45 | 41 | ||
| 46 | #define VIDCON0_L0_DATA_MASK (0x7 << 20) | 42 | #define VIDCON0_L0_DATA_MASK (0x7 << 20) |
| 47 | #define VIDCON0_L0_DATA_SHIFT (20) | 43 | #define VIDCON0_L0_DATA_SHIFT 20 |
| 48 | #define VIDCON0_L0_DATA_16BPP (0x0 << 20) | 44 | #define VIDCON0_L0_DATA_16BPP (0x0 << 20) |
| 49 | #define VIDCON0_L0_DATA_18BPP16 (0x1 << 20) | 45 | #define VIDCON0_L0_DATA_18BPP16 (0x1 << 20) |
| 50 | #define VIDCON0_L0_DATA_18BPP9 (0x2 << 20) | 46 | #define VIDCON0_L0_DATA_18BPP9 (0x2 << 20) |
| @@ -53,7 +49,7 @@ | |||
| 53 | #define VIDCON0_L0_DATA_16BPP8 (0x5 << 20) | 49 | #define VIDCON0_L0_DATA_16BPP8 (0x5 << 20) |
| 54 | 50 | ||
| 55 | #define VIDCON0_PNRMODE_MASK (0x3 << 17) | 51 | #define VIDCON0_PNRMODE_MASK (0x3 << 17) |
| 56 | #define VIDCON0_PNRMODE_SHIFT (17) | 52 | #define VIDCON0_PNRMODE_SHIFT 17 |
| 57 | #define VIDCON0_PNRMODE_RGB (0x0 << 17) | 53 | #define VIDCON0_PNRMODE_RGB (0x0 << 17) |
| 58 | #define VIDCON0_PNRMODE_BGR (0x1 << 17) | 54 | #define VIDCON0_PNRMODE_BGR (0x1 << 17) |
| 59 | #define VIDCON0_PNRMODE_SERIAL_RGB (0x2 << 17) | 55 | #define VIDCON0_PNRMODE_SERIAL_RGB (0x2 << 17) |
| @@ -61,14 +57,14 @@ | |||
| 61 | 57 | ||
| 62 | #define VIDCON0_CLKVALUP (1 << 16) | 58 | #define VIDCON0_CLKVALUP (1 << 16) |
| 63 | #define VIDCON0_CLKVAL_F_MASK (0xff << 6) | 59 | #define VIDCON0_CLKVAL_F_MASK (0xff << 6) |
| 64 | #define VIDCON0_CLKVAL_F_SHIFT (6) | 60 | #define VIDCON0_CLKVAL_F_SHIFT 6 |
| 65 | #define VIDCON0_CLKVAL_F_LIMIT (0xff) | 61 | #define VIDCON0_CLKVAL_F_LIMIT 0xff |
| 66 | #define VIDCON0_CLKVAL_F(_x) ((_x) << 6) | 62 | #define VIDCON0_CLKVAL_F(_x) ((_x) << 6) |
| 67 | #define VIDCON0_VLCKFREE (1 << 5) | 63 | #define VIDCON0_VLCKFREE (1 << 5) |
| 68 | #define VIDCON0_CLKDIR (1 << 4) | 64 | #define VIDCON0_CLKDIR (1 << 4) |
| 69 | 65 | ||
| 70 | #define VIDCON0_CLKSEL_MASK (0x3 << 2) | 66 | #define VIDCON0_CLKSEL_MASK (0x3 << 2) |
| 71 | #define VIDCON0_CLKSEL_SHIFT (2) | 67 | #define VIDCON0_CLKSEL_SHIFT 2 |
| 72 | #define VIDCON0_CLKSEL_HCLK (0x0 << 2) | 68 | #define VIDCON0_CLKSEL_HCLK (0x0 << 2) |
| 73 | #define VIDCON0_CLKSEL_LCD (0x1 << 2) | 69 | #define VIDCON0_CLKSEL_LCD (0x1 << 2) |
| 74 | #define VIDCON0_CLKSEL_27M (0x3 << 2) | 70 | #define VIDCON0_CLKSEL_27M (0x3 << 2) |
| @@ -76,17 +72,17 @@ | |||
| 76 | #define VIDCON0_ENVID (1 << 1) | 72 | #define VIDCON0_ENVID (1 << 1) |
| 77 | #define VIDCON0_ENVID_F (1 << 0) | 73 | #define VIDCON0_ENVID_F (1 << 0) |
| 78 | 74 | ||
| 79 | #define VIDCON1 (0x04) | 75 | #define VIDCON1 0x04 |
| 80 | #define VIDCON1_LINECNT_MASK (0x7ff << 16) | 76 | #define VIDCON1_LINECNT_MASK (0x7ff << 16) |
| 81 | #define VIDCON1_LINECNT_SHIFT (16) | 77 | #define VIDCON1_LINECNT_SHIFT 16 |
| 82 | #define VIDCON1_LINECNT_GET(_v) (((_v) >> 16) & 0x7ff) | 78 | #define VIDCON1_LINECNT_GET(_v) (((_v) >> 16) & 0x7ff) |
| 83 | #define VIDCON1_FSTATUS_EVEN (1 << 15) | 79 | #define VIDCON1_FSTATUS_EVEN (1 << 15) |
| 84 | #define VIDCON1_VSTATUS_MASK (0x3 << 13) | 80 | #define VIDCON1_VSTATUS_MASK (0x3 << 13) |
| 85 | #define VIDCON1_VSTATUS_SHIFT (13) | 81 | #define VIDCON1_VSTATUS_SHIFT 13 |
| 86 | #define VIDCON1_VSTATUS_VSYNC (0x0 << 13) | 82 | #define VIDCON1_VSTATUS_VSYNC (0x0 << 13) |
| 87 | #define VIDCON1_VSTATUS_BACKPORCH (0x1 << 13) | 83 | #define VIDCON1_VSTATUS_BACKPORCH (0x1 << 13) |
| 88 | #define VIDCON1_VSTATUS_ACTIVE (0x2 << 13) | 84 | #define VIDCON1_VSTATUS_ACTIVE (0x2 << 13) |
| 89 | #define VIDCON1_VSTATUS_FRONTPORCH (0x0 << 13) | 85 | #define VIDCON1_VSTATUS_FRONTPORCH (0x3 << 13) |
| 90 | #define VIDCON1_VCLK_MASK (0x3 << 9) | 86 | #define VIDCON1_VCLK_MASK (0x3 << 9) |
| 91 | #define VIDCON1_VCLK_HOLD (0x0 << 9) | 87 | #define VIDCON1_VCLK_HOLD (0x0 << 9) |
| 92 | #define VIDCON1_VCLK_RUN (0x1 << 9) | 88 | #define VIDCON1_VCLK_RUN (0x1 << 9) |
| @@ -98,12 +94,12 @@ | |||
| 98 | 94 | ||
| 99 | /* VIDCON2 */ | 95 | /* VIDCON2 */ |
| 100 | 96 | ||
| 101 | #define VIDCON2 (0x08) | 97 | #define VIDCON2 0x08 |
| 102 | #define VIDCON2_EN601 (1 << 23) | 98 | #define VIDCON2_EN601 (1 << 23) |
| 103 | #define VIDCON2_TVFMTSEL_SW (1 << 14) | 99 | #define VIDCON2_TVFMTSEL_SW (1 << 14) |
| 104 | 100 | ||
| 105 | #define VIDCON2_TVFMTSEL1_MASK (0x3 << 12) | 101 | #define VIDCON2_TVFMTSEL1_MASK (0x3 << 12) |
| 106 | #define VIDCON2_TVFMTSEL1_SHIFT (12) | 102 | #define VIDCON2_TVFMTSEL1_SHIFT 12 |
| 107 | #define VIDCON2_TVFMTSEL1_RGB (0x0 << 12) | 103 | #define VIDCON2_TVFMTSEL1_RGB (0x0 << 12) |
| 108 | #define VIDCON2_TVFMTSEL1_YUV422 (0x1 << 12) | 104 | #define VIDCON2_TVFMTSEL1_YUV422 (0x1 << 12) |
| 109 | #define VIDCON2_TVFMTSEL1_YUV444 (0x2 << 12) | 105 | #define VIDCON2_TVFMTSEL1_YUV444 (0x2 << 12) |
| @@ -115,74 +111,75 @@ | |||
| 115 | * Might not be present in the S3C6410 documentation, | 111 | * Might not be present in the S3C6410 documentation, |
| 116 | * but tests prove it's there almost for sure; shouldn't hurt in any case. | 112 | * but tests prove it's there almost for sure; shouldn't hurt in any case. |
| 117 | */ | 113 | */ |
| 118 | #define PRTCON (0x0c) | 114 | #define PRTCON 0x0c |
| 119 | #define PRTCON_PROTECT (1 << 11) | 115 | #define PRTCON_PROTECT (1 << 11) |
| 120 | 116 | ||
| 121 | /* VIDTCON0 */ | 117 | /* VIDTCON0 */ |
| 122 | 118 | ||
| 123 | #define VIDTCON0 (0x10) | 119 | #define VIDTCON0 0x10 |
| 124 | #define VIDTCON0_VBPDE_MASK (0xff << 24) | 120 | #define VIDTCON0_VBPDE_MASK (0xff << 24) |
| 125 | #define VIDTCON0_VBPDE_SHIFT (24) | 121 | #define VIDTCON0_VBPDE_SHIFT 24 |
| 126 | #define VIDTCON0_VBPDE_LIMIT (0xff) | 122 | #define VIDTCON0_VBPDE_LIMIT 0xff |
| 127 | #define VIDTCON0_VBPDE(_x) ((_x) << 24) | 123 | #define VIDTCON0_VBPDE(_x) ((_x) << 24) |
| 128 | 124 | ||
| 129 | #define VIDTCON0_VBPD_MASK (0xff << 16) | 125 | #define VIDTCON0_VBPD_MASK (0xff << 16) |
| 130 | #define VIDTCON0_VBPD_SHIFT (16) | 126 | #define VIDTCON0_VBPD_SHIFT 16 |
| 131 | #define VIDTCON0_VBPD_LIMIT (0xff) | 127 | #define VIDTCON0_VBPD_LIMIT 0xff |
| 132 | #define VIDTCON0_VBPD(_x) ((_x) << 16) | 128 | #define VIDTCON0_VBPD(_x) ((_x) << 16) |
| 133 | 129 | ||
| 134 | #define VIDTCON0_VFPD_MASK (0xff << 8) | 130 | #define VIDTCON0_VFPD_MASK (0xff << 8) |
| 135 | #define VIDTCON0_VFPD_SHIFT (8) | 131 | #define VIDTCON0_VFPD_SHIFT 8 |
| 136 | #define VIDTCON0_VFPD_LIMIT (0xff) | 132 | #define VIDTCON0_VFPD_LIMIT 0xff |
| 137 | #define VIDTCON0_VFPD(_x) ((_x) << 8) | 133 | #define VIDTCON0_VFPD(_x) ((_x) << 8) |
| 138 | 134 | ||
| 139 | #define VIDTCON0_VSPW_MASK (0xff << 0) | 135 | #define VIDTCON0_VSPW_MASK (0xff << 0) |
| 140 | #define VIDTCON0_VSPW_SHIFT (0) | 136 | #define VIDTCON0_VSPW_SHIFT 0 |
| 141 | #define VIDTCON0_VSPW_LIMIT (0xff) | 137 | #define VIDTCON0_VSPW_LIMIT 0xff |
| 142 | #define VIDTCON0_VSPW(_x) ((_x) << 0) | 138 | #define VIDTCON0_VSPW(_x) ((_x) << 0) |
| 143 | 139 | ||
| 144 | /* VIDTCON1 */ | 140 | /* VIDTCON1 */ |
| 145 | 141 | ||
| 146 | #define VIDTCON1 (0x14) | 142 | #define VIDTCON1 0x14 |
| 147 | #define VIDTCON1_VFPDE_MASK (0xff << 24) | 143 | #define VIDTCON1_VFPDE_MASK (0xff << 24) |
| 148 | #define VIDTCON1_VFPDE_SHIFT (24) | 144 | #define VIDTCON1_VFPDE_SHIFT 24 |
| 149 | #define VIDTCON1_VFPDE_LIMIT (0xff) | 145 | #define VIDTCON1_VFPDE_LIMIT 0xff |
| 150 | #define VIDTCON1_VFPDE(_x) ((_x) << 24) | 146 | #define VIDTCON1_VFPDE(_x) ((_x) << 24) |
| 151 | 147 | ||
| 152 | #define VIDTCON1_HBPD_MASK (0xff << 16) | 148 | #define VIDTCON1_HBPD_MASK (0xff << 16) |
| 153 | #define VIDTCON1_HBPD_SHIFT (16) | 149 | #define VIDTCON1_HBPD_SHIFT 16 |
| 154 | #define VIDTCON1_HBPD_LIMIT (0xff) | 150 | #define VIDTCON1_HBPD_LIMIT 0xff |
| 155 | #define VIDTCON1_HBPD(_x) ((_x) << 16) | 151 | #define VIDTCON1_HBPD(_x) ((_x) << 16) |
| 156 | 152 | ||
| 157 | #define VIDTCON1_HFPD_MASK (0xff << 8) | 153 | #define VIDTCON1_HFPD_MASK (0xff << 8) |
| 158 | #define VIDTCON1_HFPD_SHIFT (8) | 154 | #define VIDTCON1_HFPD_SHIFT 8 |
| 159 | #define VIDTCON1_HFPD_LIMIT (0xff) | 155 | #define VIDTCON1_HFPD_LIMIT 0xff |
| 160 | #define VIDTCON1_HFPD(_x) ((_x) << 8) | 156 | #define VIDTCON1_HFPD(_x) ((_x) << 8) |
| 161 | 157 | ||
| 162 | #define VIDTCON1_HSPW_MASK (0xff << 0) | 158 | #define VIDTCON1_HSPW_MASK (0xff << 0) |
| 163 | #define VIDTCON1_HSPW_SHIFT (0) | 159 | #define VIDTCON1_HSPW_SHIFT 0 |
| 164 | #define VIDTCON1_HSPW_LIMIT (0xff) | 160 | #define VIDTCON1_HSPW_LIMIT 0xff |
| 165 | #define VIDTCON1_HSPW(_x) ((_x) << 0) | 161 | #define VIDTCON1_HSPW(_x) ((_x) << 0) |
| 166 | 162 | ||
| 167 | #define VIDTCON2 (0x18) | 163 | #define VIDTCON2 0x18 |
| 168 | #define VIDTCON2 (0x18) | ||
| 169 | #define VIDTCON2_LINEVAL_E(_x) ((((_x) & 0x800) >> 11) << 23) | 164 | #define VIDTCON2_LINEVAL_E(_x) ((((_x) & 0x800) >> 11) << 23) |
| 170 | #define VIDTCON2_LINEVAL_MASK (0x7ff << 11) | 165 | #define VIDTCON2_LINEVAL_MASK (0x7ff << 11) |
| 171 | #define VIDTCON2_LINEVAL_SHIFT (11) | 166 | #define VIDTCON2_LINEVAL_SHIFT 11 |
| 172 | #define VIDTCON2_LINEVAL_LIMIT (0x7ff) | 167 | #define VIDTCON2_LINEVAL_LIMIT 0x7ff |
| 173 | #define VIDTCON2_LINEVAL(_x) (((_x) & 0x7ff) << 11) | 168 | #define VIDTCON2_LINEVAL(_x) (((_x) & 0x7ff) << 11) |
| 174 | 169 | ||
| 175 | #define VIDTCON2_HOZVAL_E(_x) ((((_x) & 0x800) >> 11) << 22) | 170 | #define VIDTCON2_HOZVAL_E(_x) ((((_x) & 0x800) >> 11) << 22) |
| 176 | #define VIDTCON2_HOZVAL_MASK (0x7ff << 0) | 171 | #define VIDTCON2_HOZVAL_MASK (0x7ff << 0) |
| 177 | #define VIDTCON2_HOZVAL_SHIFT (0) | 172 | #define VIDTCON2_HOZVAL_SHIFT 0 |
| 178 | #define VIDTCON2_HOZVAL_LIMIT (0x7ff) | 173 | #define VIDTCON2_HOZVAL_LIMIT 0x7ff |
| 179 | #define VIDTCON2_HOZVAL(_x) (((_x) & 0x7ff) << 0) | 174 | #define VIDTCON2_HOZVAL(_x) (((_x) & 0x7ff) << 0) |
| 180 | 175 | ||
| 181 | /* WINCONx */ | 176 | /* WINCONx */ |
| 182 | 177 | ||
| 183 | #define WINCON(_win) (0x20 + ((_win) * 4)) | 178 | #define WINCON(_win) (0x20 + ((_win) * 4)) |
| 179 | #define WINCONx_CSCCON_EQ601 (0x0 << 28) | ||
| 180 | #define WINCONx_CSCCON_EQ709 (0x1 << 28) | ||
| 184 | #define WINCONx_CSCWIDTH_MASK (0x3 << 26) | 181 | #define WINCONx_CSCWIDTH_MASK (0x3 << 26) |
| 185 | #define WINCONx_CSCWIDTH_SHIFT (26) | 182 | #define WINCONx_CSCWIDTH_SHIFT 26 |
| 186 | #define WINCONx_CSCWIDTH_WIDE (0x0 << 26) | 183 | #define WINCONx_CSCWIDTH_WIDE (0x0 << 26) |
| 187 | #define WINCONx_CSCWIDTH_NARROW (0x3 << 26) | 184 | #define WINCONx_CSCWIDTH_NARROW (0x3 << 26) |
| 188 | #define WINCONx_ENLOCAL (1 << 22) | 185 | #define WINCONx_ENLOCAL (1 << 22) |
| @@ -195,14 +192,14 @@ | |||
| 195 | #define WINCONx_WSWP (1 << 15) | 192 | #define WINCONx_WSWP (1 << 15) |
| 196 | #define WINCONx_YCbCr (1 << 13) | 193 | #define WINCONx_YCbCr (1 << 13) |
| 197 | #define WINCONx_BURSTLEN_MASK (0x3 << 9) | 194 | #define WINCONx_BURSTLEN_MASK (0x3 << 9) |
| 198 | #define WINCONx_BURSTLEN_SHIFT (9) | 195 | #define WINCONx_BURSTLEN_SHIFT 9 |
| 199 | #define WINCONx_BURSTLEN_16WORD (0x0 << 9) | 196 | #define WINCONx_BURSTLEN_16WORD (0x0 << 9) |
| 200 | #define WINCONx_BURSTLEN_8WORD (0x1 << 9) | 197 | #define WINCONx_BURSTLEN_8WORD (0x1 << 9) |
| 201 | #define WINCONx_BURSTLEN_4WORD (0x2 << 9) | 198 | #define WINCONx_BURSTLEN_4WORD (0x2 << 9) |
| 202 | #define WINCONx_ENWIN (1 << 0) | 199 | #define WINCONx_ENWIN (1 << 0) |
| 203 | 200 | ||
| 204 | #define WINCON0_BPPMODE_MASK (0xf << 2) | 201 | #define WINCON0_BPPMODE_MASK (0xf << 2) |
| 205 | #define WINCON0_BPPMODE_SHIFT (2) | 202 | #define WINCON0_BPPMODE_SHIFT 2 |
| 206 | #define WINCON0_BPPMODE_1BPP (0x0 << 2) | 203 | #define WINCON0_BPPMODE_1BPP (0x0 << 2) |
| 207 | #define WINCON0_BPPMODE_2BPP (0x1 << 2) | 204 | #define WINCON0_BPPMODE_2BPP (0x1 << 2) |
| 208 | #define WINCON0_BPPMODE_4BPP (0x2 << 2) | 205 | #define WINCON0_BPPMODE_4BPP (0x2 << 2) |
| @@ -215,7 +212,7 @@ | |||
| 215 | #define WINCON1_LOCALSEL_CAMIF (1 << 23) | 212 | #define WINCON1_LOCALSEL_CAMIF (1 << 23) |
| 216 | #define WINCON1_BLD_PIX (1 << 6) | 213 | #define WINCON1_BLD_PIX (1 << 6) |
| 217 | #define WINCON1_BPPMODE_MASK (0xf << 2) | 214 | #define WINCON1_BPPMODE_MASK (0xf << 2) |
| 218 | #define WINCON1_BPPMODE_SHIFT (2) | 215 | #define WINCON1_BPPMODE_SHIFT 2 |
| 219 | #define WINCON1_BPPMODE_1BPP (0x0 << 2) | 216 | #define WINCON1_BPPMODE_1BPP (0x0 << 2) |
| 220 | #define WINCON1_BPPMODE_2BPP (0x1 << 2) | 217 | #define WINCON1_BPPMODE_2BPP (0x1 << 2) |
| 221 | #define WINCON1_BPPMODE_4BPP (0x2 << 2) | 218 | #define WINCON1_BPPMODE_4BPP (0x2 << 2) |
| @@ -234,7 +231,7 @@ | |||
| 234 | #define WINCON1_ALPHA_SEL (1 << 1) | 231 | #define WINCON1_ALPHA_SEL (1 << 1) |
| 235 | 232 | ||
| 236 | /* S5PV210 */ | 233 | /* S5PV210 */ |
| 237 | #define SHADOWCON (0x34) | 234 | #define SHADOWCON 0x34 |
| 238 | #define SHADOWCON_WINx_PROTECT(_win) (1 << (10 + (_win))) | 235 | #define SHADOWCON_WINx_PROTECT(_win) (1 << (10 + (_win))) |
| 239 | /* DMA channels (all windows) */ | 236 | /* DMA channels (all windows) */ |
| 240 | #define SHADOWCON_CHx_ENABLE(_win) (1 << (_win)) | 237 | #define SHADOWCON_CHx_ENABLE(_win) (1 << (_win)) |
| @@ -243,52 +240,52 @@ | |||
| 243 | 240 | ||
| 244 | /* VIDOSDx */ | 241 | /* VIDOSDx */ |
| 245 | 242 | ||
| 246 | #define VIDOSD_BASE (0x40) | 243 | #define VIDOSD_BASE 0x40 |
| 247 | #define VIDOSDxA_TOPLEFT_X_E(_x) ((((_x) & 0x800) >> 11) << 23) | 244 | #define VIDOSDxA_TOPLEFT_X_E(_x) ((((_x) & 0x800) >> 11) << 23) |
| 248 | #define VIDOSDxA_TOPLEFT_X_MASK (0x7ff << 11) | 245 | #define VIDOSDxA_TOPLEFT_X_MASK (0x7ff << 11) |
| 249 | #define VIDOSDxA_TOPLEFT_X_SHIFT (11) | 246 | #define VIDOSDxA_TOPLEFT_X_SHIFT 11 |
| 250 | #define VIDOSDxA_TOPLEFT_X_LIMIT (0x7ff) | 247 | #define VIDOSDxA_TOPLEFT_X_LIMIT 0x7ff |
| 251 | #define VIDOSDxA_TOPLEFT_X(_x) (((_x) & 0x7ff) << 11) | 248 | #define VIDOSDxA_TOPLEFT_X(_x) (((_x) & 0x7ff) << 11) |
| 252 | 249 | ||
| 253 | #define VIDOSDxA_TOPLEFT_Y_E(_x) ((((_x) & 0x800) >> 11) << 22) | 250 | #define VIDOSDxA_TOPLEFT_Y_E(_x) ((((_x) & 0x800) >> 11) << 22) |
| 254 | #define VIDOSDxA_TOPLEFT_Y_MASK (0x7ff << 0) | 251 | #define VIDOSDxA_TOPLEFT_Y_MASK (0x7ff << 0) |
| 255 | #define VIDOSDxA_TOPLEFT_Y_SHIFT (0) | 252 | #define VIDOSDxA_TOPLEFT_Y_SHIFT 0 |
| 256 | #define VIDOSDxA_TOPLEFT_Y_LIMIT (0x7ff) | 253 | #define VIDOSDxA_TOPLEFT_Y_LIMIT 0x7ff |
| 257 | #define VIDOSDxA_TOPLEFT_Y(_x) (((_x) & 0x7ff) << 0) | 254 | #define VIDOSDxA_TOPLEFT_Y(_x) (((_x) & 0x7ff) << 0) |
| 258 | 255 | ||
| 259 | #define VIDOSDxB_BOTRIGHT_X_E(_x) ((((_x) & 0x800) >> 11) << 23) | 256 | #define VIDOSDxB_BOTRIGHT_X_E(_x) ((((_x) & 0x800) >> 11) << 23) |
| 260 | #define VIDOSDxB_BOTRIGHT_X_MASK (0x7ff << 11) | 257 | #define VIDOSDxB_BOTRIGHT_X_MASK (0x7ff << 11) |
| 261 | #define VIDOSDxB_BOTRIGHT_X_SHIFT (11) | 258 | #define VIDOSDxB_BOTRIGHT_X_SHIFT 11 |
| 262 | #define VIDOSDxB_BOTRIGHT_X_LIMIT (0x7ff) | 259 | #define VIDOSDxB_BOTRIGHT_X_LIMIT 0x7ff |
| 263 | #define VIDOSDxB_BOTRIGHT_X(_x) (((_x) & 0x7ff) << 11) | 260 | #define VIDOSDxB_BOTRIGHT_X(_x) (((_x) & 0x7ff) << 11) |
| 264 | 261 | ||
| 265 | #define VIDOSDxB_BOTRIGHT_Y_E(_x) ((((_x) & 0x800) >> 11) << 22) | 262 | #define VIDOSDxB_BOTRIGHT_Y_E(_x) ((((_x) & 0x800) >> 11) << 22) |
| 266 | #define VIDOSDxB_BOTRIGHT_Y_MASK (0x7ff << 0) | 263 | #define VIDOSDxB_BOTRIGHT_Y_MASK (0x7ff << 0) |
| 267 | #define VIDOSDxB_BOTRIGHT_Y_SHIFT (0) | 264 | #define VIDOSDxB_BOTRIGHT_Y_SHIFT 0 |
| 268 | #define VIDOSDxB_BOTRIGHT_Y_LIMIT (0x7ff) | 265 | #define VIDOSDxB_BOTRIGHT_Y_LIMIT 0x7ff |
| 269 | #define VIDOSDxB_BOTRIGHT_Y(_x) (((_x) & 0x7ff) << 0) | 266 | #define VIDOSDxB_BOTRIGHT_Y(_x) (((_x) & 0x7ff) << 0) |
| 270 | 267 | ||
| 271 | /* For VIDOSD[1..4]C */ | 268 | /* For VIDOSD[1..4]C */ |
| 272 | #define VIDISD14C_ALPHA0_R(_x) ((_x) << 20) | 269 | #define VIDISD14C_ALPHA0_R(_x) ((_x) << 20) |
| 273 | #define VIDISD14C_ALPHA0_G_MASK (0xf << 16) | 270 | #define VIDISD14C_ALPHA0_G_MASK (0xf << 16) |
| 274 | #define VIDISD14C_ALPHA0_G_SHIFT (16) | 271 | #define VIDISD14C_ALPHA0_G_SHIFT 16 |
| 275 | #define VIDISD14C_ALPHA0_G_LIMIT (0xf) | 272 | #define VIDISD14C_ALPHA0_G_LIMIT 0xf |
| 276 | #define VIDISD14C_ALPHA0_G(_x) ((_x) << 16) | 273 | #define VIDISD14C_ALPHA0_G(_x) ((_x) << 16) |
| 277 | #define VIDISD14C_ALPHA0_B_MASK (0xf << 12) | 274 | #define VIDISD14C_ALPHA0_B_MASK (0xf << 12) |
| 278 | #define VIDISD14C_ALPHA0_B_SHIFT (12) | 275 | #define VIDISD14C_ALPHA0_B_SHIFT 12 |
| 279 | #define VIDISD14C_ALPHA0_B_LIMIT (0xf) | 276 | #define VIDISD14C_ALPHA0_B_LIMIT 0xf |
| 280 | #define VIDISD14C_ALPHA0_B(_x) ((_x) << 12) | 277 | #define VIDISD14C_ALPHA0_B(_x) ((_x) << 12) |
| 281 | #define VIDISD14C_ALPHA1_R_MASK (0xf << 8) | 278 | #define VIDISD14C_ALPHA1_R_MASK (0xf << 8) |
| 282 | #define VIDISD14C_ALPHA1_R_SHIFT (8) | 279 | #define VIDISD14C_ALPHA1_R_SHIFT 8 |
| 283 | #define VIDISD14C_ALPHA1_R_LIMIT (0xf) | 280 | #define VIDISD14C_ALPHA1_R_LIMIT 0xf |
| 284 | #define VIDISD14C_ALPHA1_R(_x) ((_x) << 8) | 281 | #define VIDISD14C_ALPHA1_R(_x) ((_x) << 8) |
| 285 | #define VIDISD14C_ALPHA1_G_MASK (0xf << 4) | 282 | #define VIDISD14C_ALPHA1_G_MASK (0xf << 4) |
| 286 | #define VIDISD14C_ALPHA1_G_SHIFT (4) | 283 | #define VIDISD14C_ALPHA1_G_SHIFT 4 |
| 287 | #define VIDISD14C_ALPHA1_G_LIMIT (0xf) | 284 | #define VIDISD14C_ALPHA1_G_LIMIT 0xf |
| 288 | #define VIDISD14C_ALPHA1_G(_x) ((_x) << 4) | 285 | #define VIDISD14C_ALPHA1_G(_x) ((_x) << 4) |
| 289 | #define VIDISD14C_ALPHA1_B_MASK (0xf << 0) | 286 | #define VIDISD14C_ALPHA1_B_MASK (0xf << 0) |
| 290 | #define VIDISD14C_ALPHA1_B_SHIFT (0) | 287 | #define VIDISD14C_ALPHA1_B_SHIFT 0 |
| 291 | #define VIDISD14C_ALPHA1_B_LIMIT (0xf) | 288 | #define VIDISD14C_ALPHA1_B_LIMIT 0xf |
| 292 | #define VIDISD14C_ALPHA1_B(_x) ((_x) << 0) | 289 | #define VIDISD14C_ALPHA1_B(_x) ((_x) << 0) |
| 293 | 290 | ||
| 294 | /* Video buffer addresses */ | 291 | /* Video buffer addresses */ |
| @@ -300,22 +297,22 @@ | |||
| 300 | 297 | ||
| 301 | #define VIDW_BUF_SIZE_OFFSET_E(_x) ((((_x) & 0x2000) >> 13) << 27) | 298 | #define VIDW_BUF_SIZE_OFFSET_E(_x) ((((_x) & 0x2000) >> 13) << 27) |
| 302 | #define VIDW_BUF_SIZE_OFFSET_MASK (0x1fff << 13) | 299 | #define VIDW_BUF_SIZE_OFFSET_MASK (0x1fff << 13) |
| 303 | #define VIDW_BUF_SIZE_OFFSET_SHIFT (13) | 300 | #define VIDW_BUF_SIZE_OFFSET_SHIFT 13 |
| 304 | #define VIDW_BUF_SIZE_OFFSET_LIMIT (0x1fff) | 301 | #define VIDW_BUF_SIZE_OFFSET_LIMIT 0x1fff |
| 305 | #define VIDW_BUF_SIZE_OFFSET(_x) (((_x) & 0x1fff) << 13) | 302 | #define VIDW_BUF_SIZE_OFFSET(_x) (((_x) & 0x1fff) << 13) |
| 306 | 303 | ||
| 307 | #define VIDW_BUF_SIZE_PAGEWIDTH_E(_x) ((((_x) & 0x2000) >> 13) << 26) | 304 | #define VIDW_BUF_SIZE_PAGEWIDTH_E(_x) ((((_x) & 0x2000) >> 13) << 26) |
| 308 | #define VIDW_BUF_SIZE_PAGEWIDTH_MASK (0x1fff << 0) | 305 | #define VIDW_BUF_SIZE_PAGEWIDTH_MASK (0x1fff << 0) |
| 309 | #define VIDW_BUF_SIZE_PAGEWIDTH_SHIFT (0) | 306 | #define VIDW_BUF_SIZE_PAGEWIDTH_SHIFT 0 |
| 310 | #define VIDW_BUF_SIZE_PAGEWIDTH_LIMIT (0x1fff) | 307 | #define VIDW_BUF_SIZE_PAGEWIDTH_LIMIT 0x1fff |
| 311 | #define VIDW_BUF_SIZE_PAGEWIDTH(_x) (((_x) & 0x1fff) << 0) | 308 | #define VIDW_BUF_SIZE_PAGEWIDTH(_x) (((_x) & 0x1fff) << 0) |
| 312 | 309 | ||
| 313 | /* Interrupt controls and status */ | 310 | /* Interrupt controls and status */ |
| 314 | 311 | ||
| 315 | #define VIDINTCON0 (0x130) | 312 | #define VIDINTCON0 0x130 |
| 316 | #define VIDINTCON0_FIFOINTERVAL_MASK (0x3f << 20) | 313 | #define VIDINTCON0_FIFOINTERVAL_MASK (0x3f << 20) |
| 317 | #define VIDINTCON0_FIFOINTERVAL_SHIFT (20) | 314 | #define VIDINTCON0_FIFOINTERVAL_SHIFT 20 |
| 318 | #define VIDINTCON0_FIFOINTERVAL_LIMIT (0x3f) | 315 | #define VIDINTCON0_FIFOINTERVAL_LIMIT 0x3f |
| 319 | #define VIDINTCON0_FIFOINTERVAL(_x) ((_x) << 20) | 316 | #define VIDINTCON0_FIFOINTERVAL(_x) ((_x) << 20) |
| 320 | 317 | ||
| 321 | #define VIDINTCON0_INT_SYSMAINCON (1 << 19) | 318 | #define VIDINTCON0_INT_SYSMAINCON (1 << 19) |
| @@ -323,7 +320,7 @@ | |||
| 323 | #define VIDINTCON0_INT_I80IFDONE (1 << 17) | 320 | #define VIDINTCON0_INT_I80IFDONE (1 << 17) |
| 324 | 321 | ||
| 325 | #define VIDINTCON0_FRAMESEL0_MASK (0x3 << 15) | 322 | #define VIDINTCON0_FRAMESEL0_MASK (0x3 << 15) |
| 326 | #define VIDINTCON0_FRAMESEL0_SHIFT (15) | 323 | #define VIDINTCON0_FRAMESEL0_SHIFT 15 |
| 327 | #define VIDINTCON0_FRAMESEL0_BACKPORCH (0x0 << 15) | 324 | #define VIDINTCON0_FRAMESEL0_BACKPORCH (0x0 << 15) |
| 328 | #define VIDINTCON0_FRAMESEL0_VSYNC (0x1 << 15) | 325 | #define VIDINTCON0_FRAMESEL0_VSYNC (0x1 << 15) |
| 329 | #define VIDINTCON0_FRAMESEL0_ACTIVE (0x2 << 15) | 326 | #define VIDINTCON0_FRAMESEL0_ACTIVE (0x2 << 15) |
| @@ -338,7 +335,7 @@ | |||
| 338 | 335 | ||
| 339 | #define VIDINTCON0_INT_FRAME (1 << 12) | 336 | #define VIDINTCON0_INT_FRAME (1 << 12) |
| 340 | #define VIDINTCON0_FIFIOSEL_MASK (0x7f << 5) | 337 | #define VIDINTCON0_FIFIOSEL_MASK (0x7f << 5) |
| 341 | #define VIDINTCON0_FIFIOSEL_SHIFT (5) | 338 | #define VIDINTCON0_FIFIOSEL_SHIFT 5 |
| 342 | #define VIDINTCON0_FIFIOSEL_WINDOW0 (0x1 << 5) | 339 | #define VIDINTCON0_FIFIOSEL_WINDOW0 (0x1 << 5) |
| 343 | #define VIDINTCON0_FIFIOSEL_WINDOW1 (0x2 << 5) | 340 | #define VIDINTCON0_FIFIOSEL_WINDOW1 (0x2 << 5) |
| 344 | #define VIDINTCON0_FIFIOSEL_WINDOW2 (0x10 << 5) | 341 | #define VIDINTCON0_FIFIOSEL_WINDOW2 (0x10 << 5) |
| @@ -346,7 +343,7 @@ | |||
| 346 | #define VIDINTCON0_FIFIOSEL_WINDOW4 (0x40 << 5) | 343 | #define VIDINTCON0_FIFIOSEL_WINDOW4 (0x40 << 5) |
| 347 | 344 | ||
| 348 | #define VIDINTCON0_FIFOLEVEL_MASK (0x7 << 2) | 345 | #define VIDINTCON0_FIFOLEVEL_MASK (0x7 << 2) |
| 349 | #define VIDINTCON0_FIFOLEVEL_SHIFT (2) | 346 | #define VIDINTCON0_FIFOLEVEL_SHIFT 2 |
| 350 | #define VIDINTCON0_FIFOLEVEL_TO25PC (0x0 << 2) | 347 | #define VIDINTCON0_FIFOLEVEL_TO25PC (0x0 << 2) |
| 351 | #define VIDINTCON0_FIFOLEVEL_TO50PC (0x1 << 2) | 348 | #define VIDINTCON0_FIFOLEVEL_TO50PC (0x1 << 2) |
| 352 | #define VIDINTCON0_FIFOLEVEL_TO75PC (0x2 << 2) | 349 | #define VIDINTCON0_FIFOLEVEL_TO75PC (0x2 << 2) |
| @@ -354,46 +351,46 @@ | |||
| 354 | #define VIDINTCON0_FIFOLEVEL_FULL (0x4 << 2) | 351 | #define VIDINTCON0_FIFOLEVEL_FULL (0x4 << 2) |
| 355 | 352 | ||
| 356 | #define VIDINTCON0_INT_FIFO_MASK (0x3 << 0) | 353 | #define VIDINTCON0_INT_FIFO_MASK (0x3 << 0) |
| 357 | #define VIDINTCON0_INT_FIFO_SHIFT (0) | 354 | #define VIDINTCON0_INT_FIFO_SHIFT 0 |
| 358 | #define VIDINTCON0_INT_ENABLE (1 << 0) | 355 | #define VIDINTCON0_INT_ENABLE (1 << 0) |
| 359 | 356 | ||
| 360 | #define VIDINTCON1 (0x134) | 357 | #define VIDINTCON1 0x134 |
| 361 | #define VIDINTCON1_INT_I180 (1 << 2) | 358 | #define VIDINTCON1_INT_I180 (1 << 2) |
| 362 | #define VIDINTCON1_INT_FRAME (1 << 1) | 359 | #define VIDINTCON1_INT_FRAME (1 << 1) |
| 363 | #define VIDINTCON1_INT_FIFO (1 << 0) | 360 | #define VIDINTCON1_INT_FIFO (1 << 0) |
| 364 | 361 | ||
| 365 | /* Window colour-key control registers */ | 362 | /* Window colour-key control registers */ |
| 366 | #define WKEYCON (0x140) /* 6410,V210 */ | 363 | #define WKEYCON 0x140 |
| 367 | 364 | ||
| 368 | #define WKEYCON0 (0x00) | 365 | #define WKEYCON0 0x00 |
| 369 | #define WKEYCON1 (0x04) | 366 | #define WKEYCON1 0x04 |
| 370 | 367 | ||
| 371 | #define WxKEYCON0_KEYBL_EN (1 << 26) | 368 | #define WxKEYCON0_KEYBL_EN (1 << 26) |
| 372 | #define WxKEYCON0_KEYEN_F (1 << 25) | 369 | #define WxKEYCON0_KEYEN_F (1 << 25) |
| 373 | #define WxKEYCON0_DIRCON (1 << 24) | 370 | #define WxKEYCON0_DIRCON (1 << 24) |
| 374 | #define WxKEYCON0_COMPKEY_MASK (0xffffff << 0) | 371 | #define WxKEYCON0_COMPKEY_MASK (0xffffff << 0) |
| 375 | #define WxKEYCON0_COMPKEY_SHIFT (0) | 372 | #define WxKEYCON0_COMPKEY_SHIFT 0 |
| 376 | #define WxKEYCON0_COMPKEY_LIMIT (0xffffff) | 373 | #define WxKEYCON0_COMPKEY_LIMIT 0xffffff |
| 377 | #define WxKEYCON0_COMPKEY(_x) ((_x) << 0) | 374 | #define WxKEYCON0_COMPKEY(_x) ((_x) << 0) |
| 378 | #define WxKEYCON1_COLVAL_MASK (0xffffff << 0) | 375 | #define WxKEYCON1_COLVAL_MASK (0xffffff << 0) |
| 379 | #define WxKEYCON1_COLVAL_SHIFT (0) | 376 | #define WxKEYCON1_COLVAL_SHIFT 0 |
| 380 | #define WxKEYCON1_COLVAL_LIMIT (0xffffff) | 377 | #define WxKEYCON1_COLVAL_LIMIT 0xffffff |
| 381 | #define WxKEYCON1_COLVAL(_x) ((_x) << 0) | 378 | #define WxKEYCON1_COLVAL(_x) ((_x) << 0) |
| 382 | 379 | ||
| 383 | /* Dithering control */ | 380 | /* Dithering control */ |
| 384 | #define DITHMODE (0x170) | 381 | #define DITHMODE 0x170 |
| 385 | #define DITHMODE_R_POS_MASK (0x3 << 5) | 382 | #define DITHMODE_R_POS_MASK (0x3 << 5) |
| 386 | #define DITHMODE_R_POS_SHIFT (5) | 383 | #define DITHMODE_R_POS_SHIFT 5 |
| 387 | #define DITHMODE_R_POS_8BIT (0x0 << 5) | 384 | #define DITHMODE_R_POS_8BIT (0x0 << 5) |
| 388 | #define DITHMODE_R_POS_6BIT (0x1 << 5) | 385 | #define DITHMODE_R_POS_6BIT (0x1 << 5) |
| 389 | #define DITHMODE_R_POS_5BIT (0x2 << 5) | 386 | #define DITHMODE_R_POS_5BIT (0x2 << 5) |
| 390 | #define DITHMODE_G_POS_MASK (0x3 << 3) | 387 | #define DITHMODE_G_POS_MASK (0x3 << 3) |
| 391 | #define DITHMODE_G_POS_SHIFT (3) | 388 | #define DITHMODE_G_POS_SHIFT 3 |
| 392 | #define DITHMODE_G_POS_8BIT (0x0 << 3) | 389 | #define DITHMODE_G_POS_8BIT (0x0 << 3) |
| 393 | #define DITHMODE_G_POS_6BIT (0x1 << 3) | 390 | #define DITHMODE_G_POS_6BIT (0x1 << 3) |
| 394 | #define DITHMODE_G_POS_5BIT (0x2 << 3) | 391 | #define DITHMODE_G_POS_5BIT (0x2 << 3) |
| 395 | #define DITHMODE_B_POS_MASK (0x3 << 1) | 392 | #define DITHMODE_B_POS_MASK (0x3 << 1) |
| 396 | #define DITHMODE_B_POS_SHIFT (1) | 393 | #define DITHMODE_B_POS_SHIFT 1 |
| 397 | #define DITHMODE_B_POS_8BIT (0x0 << 1) | 394 | #define DITHMODE_B_POS_8BIT (0x0 << 1) |
| 398 | #define DITHMODE_B_POS_6BIT (0x1 << 1) | 395 | #define DITHMODE_B_POS_6BIT (0x1 << 1) |
| 399 | #define DITHMODE_B_POS_5BIT (0x2 << 1) | 396 | #define DITHMODE_B_POS_5BIT (0x2 << 1) |
| @@ -403,18 +400,18 @@ | |||
| 403 | #define WINxMAP(_win) (0x180 + ((_win) * 4)) | 400 | #define WINxMAP(_win) (0x180 + ((_win) * 4)) |
| 404 | #define WINxMAP_MAP (1 << 24) | 401 | #define WINxMAP_MAP (1 << 24) |
| 405 | #define WINxMAP_MAP_COLOUR_MASK (0xffffff << 0) | 402 | #define WINxMAP_MAP_COLOUR_MASK (0xffffff << 0) |
| 406 | #define WINxMAP_MAP_COLOUR_SHIFT (0) | 403 | #define WINxMAP_MAP_COLOUR_SHIFT 0 |
| 407 | #define WINxMAP_MAP_COLOUR_LIMIT (0xffffff) | 404 | #define WINxMAP_MAP_COLOUR_LIMIT 0xffffff |
| 408 | #define WINxMAP_MAP_COLOUR(_x) ((_x) << 0) | 405 | #define WINxMAP_MAP_COLOUR(_x) ((_x) << 0) |
| 409 | 406 | ||
| 410 | /* Winodw palette control */ | 407 | /* Winodw palette control */ |
| 411 | #define WPALCON (0x1A0) | 408 | #define WPALCON 0x1A0 |
| 412 | #define WPALCON_PAL_UPDATE (1 << 9) | 409 | #define WPALCON_PAL_UPDATE (1 << 9) |
| 413 | #define WPALCON_W4PAL_16BPP_A555 (1 << 8) | 410 | #define WPALCON_W4PAL_16BPP_A555 (1 << 8) |
| 414 | #define WPALCON_W3PAL_16BPP_A555 (1 << 7) | 411 | #define WPALCON_W3PAL_16BPP_A555 (1 << 7) |
| 415 | #define WPALCON_W2PAL_16BPP_A555 (1 << 6) | 412 | #define WPALCON_W2PAL_16BPP_A555 (1 << 6) |
| 416 | #define WPALCON_W1PAL_MASK (0x7 << 3) | 413 | #define WPALCON_W1PAL_MASK (0x7 << 3) |
| 417 | #define WPALCON_W1PAL_SHIFT (3) | 414 | #define WPALCON_W1PAL_SHIFT 3 |
| 418 | #define WPALCON_W1PAL_25BPP_A888 (0x0 << 3) | 415 | #define WPALCON_W1PAL_25BPP_A888 (0x0 << 3) |
| 419 | #define WPALCON_W1PAL_24BPP (0x1 << 3) | 416 | #define WPALCON_W1PAL_24BPP (0x1 << 3) |
| 420 | #define WPALCON_W1PAL_19BPP_A666 (0x2 << 3) | 417 | #define WPALCON_W1PAL_19BPP_A666 (0x2 << 3) |
| @@ -423,7 +420,7 @@ | |||
| 423 | #define WPALCON_W1PAL_16BPP_A555 (0x5 << 3) | 420 | #define WPALCON_W1PAL_16BPP_A555 (0x5 << 3) |
| 424 | #define WPALCON_W1PAL_16BPP_565 (0x6 << 3) | 421 | #define WPALCON_W1PAL_16BPP_565 (0x6 << 3) |
| 425 | #define WPALCON_W0PAL_MASK (0x7 << 0) | 422 | #define WPALCON_W0PAL_MASK (0x7 << 0) |
| 426 | #define WPALCON_W0PAL_SHIFT (0) | 423 | #define WPALCON_W0PAL_SHIFT 0 |
| 427 | #define WPALCON_W0PAL_25BPP_A888 (0x0 << 0) | 424 | #define WPALCON_W0PAL_25BPP_A888 (0x0 << 0) |
| 428 | #define WPALCON_W0PAL_24BPP (0x1 << 0) | 425 | #define WPALCON_W0PAL_24BPP (0x1 << 0) |
| 429 | #define WPALCON_W0PAL_19BPP_A666 (0x2 << 0) | 426 | #define WPALCON_W0PAL_19BPP_A666 (0x2 << 0) |
| @@ -433,13 +430,11 @@ | |||
| 433 | #define WPALCON_W0PAL_16BPP_565 (0x6 << 0) | 430 | #define WPALCON_W0PAL_16BPP_565 (0x6 << 0) |
| 434 | 431 | ||
| 435 | /* Blending equation control */ | 432 | /* Blending equation control */ |
| 436 | #define BLENDCON (0x260) | 433 | #define BLENDCON 0x260 |
| 437 | #define BLENDCON_NEW_MASK (1 << 0) | 434 | #define BLENDCON_NEW_MASK (1 << 0) |
| 438 | #define BLENDCON_NEW_8BIT_ALPHA_VALUE (1 << 0) | 435 | #define BLENDCON_NEW_8BIT_ALPHA_VALUE (1 << 0) |
| 439 | #define BLENDCON_NEW_4BIT_ALPHA_VALUE (0 << 0) | 436 | #define BLENDCON_NEW_4BIT_ALPHA_VALUE (0 << 0) |
| 440 | 437 | ||
| 441 | #define S3C_FB_MAX_WIN (5) /* number of hardware windows available. */ | ||
| 442 | |||
| 443 | /* Notes on per-window bpp settings | 438 | /* Notes on per-window bpp settings |
| 444 | * | 439 | * |
| 445 | * Value Win0 Win1 Win2 Win3 Win 4 | 440 | * Value Win0 Win1 Win2 Win3 Win 4 |
| @@ -462,8 +457,8 @@ | |||
| 462 | */ | 457 | */ |
| 463 | 458 | ||
| 464 | /* FIMD Version 8 register offset definitions */ | 459 | /* FIMD Version 8 register offset definitions */ |
| 465 | #define FIMD_V8_VIDTCON0 (0x20010) | 460 | #define FIMD_V8_VIDTCON0 0x20010 |
| 466 | #define FIMD_V8_VIDTCON1 (0x20014) | 461 | #define FIMD_V8_VIDTCON1 0x20014 |
| 467 | #define FIMD_V8_VIDTCON2 (0x20018) | 462 | #define FIMD_V8_VIDTCON2 0x20018 |
| 468 | #define FIMD_V8_VIDTCON3 (0x2001C) | 463 | #define FIMD_V8_VIDTCON3 0x2001C |
| 469 | #define FIMD_V8_VIDCON1 (0x20004) | 464 | #define FIMD_V8_VIDCON1 0x20004 |
