1 /* 2 * linux/drivers/video/omap2/dss/dispc.h 3 * 4 * Copyright (C) 2011 Texas Instruments 5 * Author: Archit Taneja <archit@ti.com> 6 * 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 version 2 as published by 10 * the Free Software Foundation. 11 * 12 * This program is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 * more details. 16 * 17 * You should have received a copy of the GNU General Public License along with 18 * this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef __OMAP2_DISPC_REG_H 22 #define __OMAP2_DISPC_REG_H 23 24 /* DISPC common registers */ 25 #define DISPC_REVISION 0x0000 26 #define DISPC_SYSCONFIG 0x0010 27 #define DISPC_SYSSTATUS 0x0014 28 #define DISPC_IRQSTATUS 0x0018 29 #define DISPC_IRQENABLE 0x001C 30 #define DISPC_CONTROL 0x0040 31 #define DISPC_CONFIG 0x0044 32 #define DISPC_CAPABLE 0x0048 33 #define DISPC_LINE_STATUS 0x005C 34 #define DISPC_LINE_NUMBER 0x0060 35 #define DISPC_GLOBAL_ALPHA 0x0074 36 #define DISPC_CONTROL2 0x0238 37 #define DISPC_CONFIG2 0x0620 38 #define DISPC_DIVISOR 0x0804 39 #define DISPC_GLOBAL_BUFFER 0x0800 40 #define DISPC_CONTROL3 0x0848 41 #define DISPC_CONFIG3 0x084C 42 #define DISPC_MSTANDBY_CTRL 0x0858 43 #define DISPC_GLOBAL_MFLAG_ATTRIBUTE 0x085C 44 45 #define DISPC_GAMMA_TABLE0 0x0630 46 #define DISPC_GAMMA_TABLE1 0x0634 47 #define DISPC_GAMMA_TABLE2 0x0638 48 #define DISPC_GAMMA_TABLE3 0x0850 49 50 /* DISPC overlay registers */ 51 #define DISPC_OVL_BA0(n) (DISPC_OVL_BASE(n) + \ 52 DISPC_BA0_OFFSET(n)) 53 #define DISPC_OVL_BA1(n) (DISPC_OVL_BASE(n) + \ 54 DISPC_BA1_OFFSET(n)) 55 #define DISPC_OVL_BA0_UV(n) (DISPC_OVL_BASE(n) + \ 56 DISPC_BA0_UV_OFFSET(n)) 57 #define DISPC_OVL_BA1_UV(n) (DISPC_OVL_BASE(n) + \ 58 DISPC_BA1_UV_OFFSET(n)) 59 #define DISPC_OVL_POSITION(n) (DISPC_OVL_BASE(n) + \ 60 DISPC_POS_OFFSET(n)) 61 #define DISPC_OVL_SIZE(n) (DISPC_OVL_BASE(n) + \ 62 DISPC_SIZE_OFFSET(n)) 63 #define DISPC_OVL_ATTRIBUTES(n) (DISPC_OVL_BASE(n) + \ 64 DISPC_ATTR_OFFSET(n)) 65 #define DISPC_OVL_ATTRIBUTES2(n) (DISPC_OVL_BASE(n) + \ 66 DISPC_ATTR2_OFFSET(n)) 67 #define DISPC_OVL_FIFO_THRESHOLD(n) (DISPC_OVL_BASE(n) + \ 68 DISPC_FIFO_THRESH_OFFSET(n)) 69 #define DISPC_OVL_FIFO_SIZE_STATUS(n) (DISPC_OVL_BASE(n) + \ 70 DISPC_FIFO_SIZE_STATUS_OFFSET(n)) 71 #define DISPC_OVL_ROW_INC(n) (DISPC_OVL_BASE(n) + \ 72 DISPC_ROW_INC_OFFSET(n)) 73 #define DISPC_OVL_PIXEL_INC(n) (DISPC_OVL_BASE(n) + \ 74 DISPC_PIX_INC_OFFSET(n)) 75 #define DISPC_OVL_WINDOW_SKIP(n) (DISPC_OVL_BASE(n) + \ 76 DISPC_WINDOW_SKIP_OFFSET(n)) 77 #define DISPC_OVL_TABLE_BA(n) (DISPC_OVL_BASE(n) + \ 78 DISPC_TABLE_BA_OFFSET(n)) 79 #define DISPC_OVL_FIR(n) (DISPC_OVL_BASE(n) + \ 80 DISPC_FIR_OFFSET(n)) 81 #define DISPC_OVL_FIR2(n) (DISPC_OVL_BASE(n) + \ 82 DISPC_FIR2_OFFSET(n)) 83 #define DISPC_OVL_PICTURE_SIZE(n) (DISPC_OVL_BASE(n) + \ 84 DISPC_PIC_SIZE_OFFSET(n)) 85 #define DISPC_OVL_ACCU0(n) (DISPC_OVL_BASE(n) + \ 86 DISPC_ACCU0_OFFSET(n)) 87 #define DISPC_OVL_ACCU1(n) (DISPC_OVL_BASE(n) + \ 88 DISPC_ACCU1_OFFSET(n)) 89 #define DISPC_OVL_ACCU2_0(n) (DISPC_OVL_BASE(n) + \ 90 DISPC_ACCU2_0_OFFSET(n)) 91 #define DISPC_OVL_ACCU2_1(n) (DISPC_OVL_BASE(n) + \ 92 DISPC_ACCU2_1_OFFSET(n)) 93 #define DISPC_OVL_FIR_COEF_H(n, i) (DISPC_OVL_BASE(n) + \ 94 DISPC_FIR_COEF_H_OFFSET(n, i)) 95 #define DISPC_OVL_FIR_COEF_HV(n, i) (DISPC_OVL_BASE(n) + \ 96 DISPC_FIR_COEF_HV_OFFSET(n, i)) 97 #define DISPC_OVL_FIR_COEF_H2(n, i) (DISPC_OVL_BASE(n) + \ 98 DISPC_FIR_COEF_H2_OFFSET(n, i)) 99 #define DISPC_OVL_FIR_COEF_HV2(n, i) (DISPC_OVL_BASE(n) + \ 100 DISPC_FIR_COEF_HV2_OFFSET(n, i)) 101 #define DISPC_OVL_CONV_COEF(n, i) (DISPC_OVL_BASE(n) + \ 102 DISPC_CONV_COEF_OFFSET(n, i)) 103 #define DISPC_OVL_FIR_COEF_V(n, i) (DISPC_OVL_BASE(n) + \ 104 DISPC_FIR_COEF_V_OFFSET(n, i)) 105 #define DISPC_OVL_FIR_COEF_V2(n, i) (DISPC_OVL_BASE(n) + \ 106 DISPC_FIR_COEF_V2_OFFSET(n, i)) 107 #define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \ 108 DISPC_PRELOAD_OFFSET(n)) 109 #define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n) 110 111 /* DISPC up/downsampling FIR filter coefficient structure */ 112 struct dispc_coef { 113 s8 hc4_vc22; 114 s8 hc3_vc2; 115 u8 hc2_vc1; 116 s8 hc1_vc0; 117 s8 hc0_vc00; 118 }; 119 120 const struct dispc_coef *dispc_ovl_get_scale_coef(int inc, int five_taps); 121 122 /* DISPC manager/channel specific registers */ 123 static inline u16 DISPC_DEFAULT_COLOR(enum omap_channel channel) 124 { 125 switch (channel) { 126 case OMAP_DSS_CHANNEL_LCD: 127 return 0x004C; 128 case OMAP_DSS_CHANNEL_DIGIT: 129 return 0x0050; 130 case OMAP_DSS_CHANNEL_LCD2: 131 return 0x03AC; 132 case OMAP_DSS_CHANNEL_LCD3: 133 return 0x0814; 134 default: 135 BUG(); 136 return 0; 137 } 138 } 139 140 static inline u16 DISPC_TRANS_COLOR(enum omap_channel channel) 141 { 142 switch (channel) { 143 case OMAP_DSS_CHANNEL_LCD: 144 return 0x0054; 145 case OMAP_DSS_CHANNEL_DIGIT: 146 return 0x0058; 147 case OMAP_DSS_CHANNEL_LCD2: 148 return 0x03B0; 149 case OMAP_DSS_CHANNEL_LCD3: 150 return 0x0818; 151 default: 152 BUG(); 153 return 0; 154 } 155 } 156 157 static inline u16 DISPC_TIMING_H(enum omap_channel channel) 158 { 159 switch (channel) { 160 case OMAP_DSS_CHANNEL_LCD: 161 return 0x0064; 162 case OMAP_DSS_CHANNEL_DIGIT: 163 BUG(); 164 return 0; 165 case OMAP_DSS_CHANNEL_LCD2: 166 return 0x0400; 167 case OMAP_DSS_CHANNEL_LCD3: 168 return 0x0840; 169 default: 170 BUG(); 171 return 0; 172 } 173 } 174 175 static inline u16 DISPC_TIMING_V(enum omap_channel channel) 176 { 177 switch (channel) { 178 case OMAP_DSS_CHANNEL_LCD: 179 return 0x0068; 180 case OMAP_DSS_CHANNEL_DIGIT: 181 BUG(); 182 return 0; 183 case OMAP_DSS_CHANNEL_LCD2: 184 return 0x0404; 185 case OMAP_DSS_CHANNEL_LCD3: 186 return 0x0844; 187 default: 188 BUG(); 189 return 0; 190 } 191 } 192 193 static inline u16 DISPC_POL_FREQ(enum omap_channel channel) 194 { 195 switch (channel) { 196 case OMAP_DSS_CHANNEL_LCD: 197 return 0x006C; 198 case OMAP_DSS_CHANNEL_DIGIT: 199 BUG(); 200 return 0; 201 case OMAP_DSS_CHANNEL_LCD2: 202 return 0x0408; 203 case OMAP_DSS_CHANNEL_LCD3: 204 return 0x083C; 205 default: 206 BUG(); 207 return 0; 208 } 209 } 210 211 static inline u16 DISPC_DIVISORo(enum omap_channel channel) 212 { 213 switch (channel) { 214 case OMAP_DSS_CHANNEL_LCD: 215 return 0x0070; 216 case OMAP_DSS_CHANNEL_DIGIT: 217 BUG(); 218 return 0; 219 case OMAP_DSS_CHANNEL_LCD2: 220 return 0x040C; 221 case OMAP_DSS_CHANNEL_LCD3: 222 return 0x0838; 223 default: 224 BUG(); 225 return 0; 226 } 227 } 228 229 /* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */ 230 static inline u16 DISPC_SIZE_MGR(enum omap_channel channel) 231 { 232 switch (channel) { 233 case OMAP_DSS_CHANNEL_LCD: 234 return 0x007C; 235 case OMAP_DSS_CHANNEL_DIGIT: 236 return 0x0078; 237 case OMAP_DSS_CHANNEL_LCD2: 238 return 0x03CC; 239 case OMAP_DSS_CHANNEL_LCD3: 240 return 0x0834; 241 default: 242 BUG(); 243 return 0; 244 } 245 } 246 247 static inline u16 DISPC_DATA_CYCLE1(enum omap_channel channel) 248 { 249 switch (channel) { 250 case OMAP_DSS_CHANNEL_LCD: 251 return 0x01D4; 252 case OMAP_DSS_CHANNEL_DIGIT: 253 BUG(); 254 return 0; 255 case OMAP_DSS_CHANNEL_LCD2: 256 return 0x03C0; 257 case OMAP_DSS_CHANNEL_LCD3: 258 return 0x0828; 259 default: 260 BUG(); 261 return 0; 262 } 263 } 264 265 static inline u16 DISPC_DATA_CYCLE2(enum omap_channel channel) 266 { 267 switch (channel) { 268 case OMAP_DSS_CHANNEL_LCD: 269 return 0x01D8; 270 case OMAP_DSS_CHANNEL_DIGIT: 271 BUG(); 272 return 0; 273 case OMAP_DSS_CHANNEL_LCD2: 274 return 0x03C4; 275 case OMAP_DSS_CHANNEL_LCD3: 276 return 0x082C; 277 default: 278 BUG(); 279 return 0; 280 } 281 } 282 283 static inline u16 DISPC_DATA_CYCLE3(enum omap_channel channel) 284 { 285 switch (channel) { 286 case OMAP_DSS_CHANNEL_LCD: 287 return 0x01DC; 288 case OMAP_DSS_CHANNEL_DIGIT: 289 BUG(); 290 return 0; 291 case OMAP_DSS_CHANNEL_LCD2: 292 return 0x03C8; 293 case OMAP_DSS_CHANNEL_LCD3: 294 return 0x0830; 295 default: 296 BUG(); 297 return 0; 298 } 299 } 300 301 static inline u16 DISPC_CPR_COEF_R(enum omap_channel channel) 302 { 303 switch (channel) { 304 case OMAP_DSS_CHANNEL_LCD: 305 return 0x0220; 306 case OMAP_DSS_CHANNEL_DIGIT: 307 BUG(); 308 return 0; 309 case OMAP_DSS_CHANNEL_LCD2: 310 return 0x03BC; 311 case OMAP_DSS_CHANNEL_LCD3: 312 return 0x0824; 313 default: 314 BUG(); 315 return 0; 316 } 317 } 318 319 static inline u16 DISPC_CPR_COEF_G(enum omap_channel channel) 320 { 321 switch (channel) { 322 case OMAP_DSS_CHANNEL_LCD: 323 return 0x0224; 324 case OMAP_DSS_CHANNEL_DIGIT: 325 BUG(); 326 return 0; 327 case OMAP_DSS_CHANNEL_LCD2: 328 return 0x03B8; 329 case OMAP_DSS_CHANNEL_LCD3: 330 return 0x0820; 331 default: 332 BUG(); 333 return 0; 334 } 335 } 336 337 static inline u16 DISPC_CPR_COEF_B(enum omap_channel channel) 338 { 339 switch (channel) { 340 case OMAP_DSS_CHANNEL_LCD: 341 return 0x0228; 342 case OMAP_DSS_CHANNEL_DIGIT: 343 BUG(); 344 return 0; 345 case OMAP_DSS_CHANNEL_LCD2: 346 return 0x03B4; 347 case OMAP_DSS_CHANNEL_LCD3: 348 return 0x081C; 349 default: 350 BUG(); 351 return 0; 352 } 353 } 354 355 /* DISPC overlay register base addresses */ 356 static inline u16 DISPC_OVL_BASE(enum omap_plane_id plane) 357 { 358 switch (plane) { 359 case OMAP_DSS_GFX: 360 return 0x0080; 361 case OMAP_DSS_VIDEO1: 362 return 0x00BC; 363 case OMAP_DSS_VIDEO2: 364 return 0x014C; 365 case OMAP_DSS_VIDEO3: 366 return 0x0300; 367 case OMAP_DSS_WB: 368 return 0x0500; 369 default: 370 BUG(); 371 return 0; 372 } 373 } 374 375 /* DISPC overlay register offsets */ 376 static inline u16 DISPC_BA0_OFFSET(enum omap_plane_id plane) 377 { 378 switch (plane) { 379 case OMAP_DSS_GFX: 380 case OMAP_DSS_VIDEO1: 381 case OMAP_DSS_VIDEO2: 382 return 0x0000; 383 case OMAP_DSS_VIDEO3: 384 case OMAP_DSS_WB: 385 return 0x0008; 386 default: 387 BUG(); 388 return 0; 389 } 390 } 391 392 static inline u16 DISPC_BA1_OFFSET(enum omap_plane_id plane) 393 { 394 switch (plane) { 395 case OMAP_DSS_GFX: 396 case OMAP_DSS_VIDEO1: 397 case OMAP_DSS_VIDEO2: 398 return 0x0004; 399 case OMAP_DSS_VIDEO3: 400 case OMAP_DSS_WB: 401 return 0x000C; 402 default: 403 BUG(); 404 return 0; 405 } 406 } 407 408 static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane_id plane) 409 { 410 switch (plane) { 411 case OMAP_DSS_GFX: 412 BUG(); 413 return 0; 414 case OMAP_DSS_VIDEO1: 415 return 0x0544; 416 case OMAP_DSS_VIDEO2: 417 return 0x04BC; 418 case OMAP_DSS_VIDEO3: 419 return 0x0310; 420 case OMAP_DSS_WB: 421 return 0x0118; 422 default: 423 BUG(); 424 return 0; 425 } 426 } 427 428 static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane_id plane) 429 { 430 switch (plane) { 431 case OMAP_DSS_GFX: 432 BUG(); 433 return 0; 434 case OMAP_DSS_VIDEO1: 435 return 0x0548; 436 case OMAP_DSS_VIDEO2: 437 return 0x04C0; 438 case OMAP_DSS_VIDEO3: 439 return 0x0314; 440 case OMAP_DSS_WB: 441 return 0x011C; 442 default: 443 BUG(); 444 return 0; 445 } 446 } 447 448 static inline u16 DISPC_POS_OFFSET(enum omap_plane_id plane) 449 { 450 switch (plane) { 451 case OMAP_DSS_GFX: 452 case OMAP_DSS_VIDEO1: 453 case OMAP_DSS_VIDEO2: 454 return 0x0008; 455 case OMAP_DSS_VIDEO3: 456 return 0x009C; 457 default: 458 BUG(); 459 return 0; 460 } 461 } 462 463 static inline u16 DISPC_SIZE_OFFSET(enum omap_plane_id plane) 464 { 465 switch (plane) { 466 case OMAP_DSS_GFX: 467 case OMAP_DSS_VIDEO1: 468 case OMAP_DSS_VIDEO2: 469 return 0x000C; 470 case OMAP_DSS_VIDEO3: 471 case OMAP_DSS_WB: 472 return 0x00A8; 473 default: 474 BUG(); 475 return 0; 476 } 477 } 478 479 static inline u16 DISPC_ATTR_OFFSET(enum omap_plane_id plane) 480 { 481 switch (plane) { 482 case OMAP_DSS_GFX: 483 return 0x0020; 484 case OMAP_DSS_VIDEO1: 485 case OMAP_DSS_VIDEO2: 486 return 0x0010; 487 case OMAP_DSS_VIDEO3: 488 case OMAP_DSS_WB: 489 return 0x0070; 490 default: 491 BUG(); 492 return 0; 493 } 494 } 495 496 static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane_id plane) 497 { 498 switch (plane) { 499 case OMAP_DSS_GFX: 500 BUG(); 501 return 0; 502 case OMAP_DSS_VIDEO1: 503 return 0x0568; 504 case OMAP_DSS_VIDEO2: 505 return 0x04DC; 506 case OMAP_DSS_VIDEO3: 507 return 0x032C; 508 case OMAP_DSS_WB: 509 return 0x0310; 510 default: 511 BUG(); 512 return 0; 513 } 514 } 515 516 static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane_id plane) 517 { 518 switch (plane) { 519 case OMAP_DSS_GFX: 520 return 0x0024; 521 case OMAP_DSS_VIDEO1: 522 case OMAP_DSS_VIDEO2: 523 return 0x0014; 524 case OMAP_DSS_VIDEO3: 525 case OMAP_DSS_WB: 526 return 0x008C; 527 default: 528 BUG(); 529 return 0; 530 } 531 } 532 533 static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane_id plane) 534 { 535 switch (plane) { 536 case OMAP_DSS_GFX: 537 return 0x0028; 538 case OMAP_DSS_VIDEO1: 539 case OMAP_DSS_VIDEO2: 540 return 0x0018; 541 case OMAP_DSS_VIDEO3: 542 case OMAP_DSS_WB: 543 return 0x0088; 544 default: 545 BUG(); 546 return 0; 547 } 548 } 549 550 static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane_id plane) 551 { 552 switch (plane) { 553 case OMAP_DSS_GFX: 554 return 0x002C; 555 case OMAP_DSS_VIDEO1: 556 case OMAP_DSS_VIDEO2: 557 return 0x001C; 558 case OMAP_DSS_VIDEO3: 559 case OMAP_DSS_WB: 560 return 0x00A4; 561 default: 562 BUG(); 563 return 0; 564 } 565 } 566 567 static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane_id plane) 568 { 569 switch (plane) { 570 case OMAP_DSS_GFX: 571 return 0x0030; 572 case OMAP_DSS_VIDEO1: 573 case OMAP_DSS_VIDEO2: 574 return 0x0020; 575 case OMAP_DSS_VIDEO3: 576 case OMAP_DSS_WB: 577 return 0x0098; 578 default: 579 BUG(); 580 return 0; 581 } 582 } 583 584 static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane_id plane) 585 { 586 switch (plane) { 587 case OMAP_DSS_GFX: 588 return 0x0034; 589 case OMAP_DSS_VIDEO1: 590 case OMAP_DSS_VIDEO2: 591 case OMAP_DSS_VIDEO3: 592 BUG(); 593 return 0; 594 default: 595 BUG(); 596 return 0; 597 } 598 } 599 600 static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane_id plane) 601 { 602 switch (plane) { 603 case OMAP_DSS_GFX: 604 return 0x0038; 605 case OMAP_DSS_VIDEO1: 606 case OMAP_DSS_VIDEO2: 607 case OMAP_DSS_VIDEO3: 608 BUG(); 609 return 0; 610 default: 611 BUG(); 612 return 0; 613 } 614 } 615 616 static inline u16 DISPC_FIR_OFFSET(enum omap_plane_id plane) 617 { 618 switch (plane) { 619 case OMAP_DSS_GFX: 620 BUG(); 621 return 0; 622 case OMAP_DSS_VIDEO1: 623 case OMAP_DSS_VIDEO2: 624 return 0x0024; 625 case OMAP_DSS_VIDEO3: 626 case OMAP_DSS_WB: 627 return 0x0090; 628 default: 629 BUG(); 630 return 0; 631 } 632 } 633 634 static inline u16 DISPC_FIR2_OFFSET(enum omap_plane_id plane) 635 { 636 switch (plane) { 637 case OMAP_DSS_GFX: 638 BUG(); 639 return 0; 640 case OMAP_DSS_VIDEO1: 641 return 0x0580; 642 case OMAP_DSS_VIDEO2: 643 return 0x055C; 644 case OMAP_DSS_VIDEO3: 645 return 0x0424; 646 case OMAP_DSS_WB: 647 return 0x290; 648 default: 649 BUG(); 650 return 0; 651 } 652 } 653 654 static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane_id plane) 655 { 656 switch (plane) { 657 case OMAP_DSS_GFX: 658 BUG(); 659 return 0; 660 case OMAP_DSS_VIDEO1: 661 case OMAP_DSS_VIDEO2: 662 return 0x0028; 663 case OMAP_DSS_VIDEO3: 664 case OMAP_DSS_WB: 665 return 0x0094; 666 default: 667 BUG(); 668 return 0; 669 } 670 } 671 672 673 static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane_id plane) 674 { 675 switch (plane) { 676 case OMAP_DSS_GFX: 677 BUG(); 678 return 0; 679 case OMAP_DSS_VIDEO1: 680 case OMAP_DSS_VIDEO2: 681 return 0x002C; 682 case OMAP_DSS_VIDEO3: 683 case OMAP_DSS_WB: 684 return 0x0000; 685 default: 686 BUG(); 687 return 0; 688 } 689 } 690 691 static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane_id plane) 692 { 693 switch (plane) { 694 case OMAP_DSS_GFX: 695 BUG(); 696 return 0; 697 case OMAP_DSS_VIDEO1: 698 return 0x0584; 699 case OMAP_DSS_VIDEO2: 700 return 0x0560; 701 case OMAP_DSS_VIDEO3: 702 return 0x0428; 703 case OMAP_DSS_WB: 704 return 0x0294; 705 default: 706 BUG(); 707 return 0; 708 } 709 } 710 711 static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane_id plane) 712 { 713 switch (plane) { 714 case OMAP_DSS_GFX: 715 BUG(); 716 return 0; 717 case OMAP_DSS_VIDEO1: 718 case OMAP_DSS_VIDEO2: 719 return 0x0030; 720 case OMAP_DSS_VIDEO3: 721 case OMAP_DSS_WB: 722 return 0x0004; 723 default: 724 BUG(); 725 return 0; 726 } 727 } 728 729 static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane_id plane) 730 { 731 switch (plane) { 732 case OMAP_DSS_GFX: 733 BUG(); 734 return 0; 735 case OMAP_DSS_VIDEO1: 736 return 0x0588; 737 case OMAP_DSS_VIDEO2: 738 return 0x0564; 739 case OMAP_DSS_VIDEO3: 740 return 0x042C; 741 case OMAP_DSS_WB: 742 return 0x0298; 743 default: 744 BUG(); 745 return 0; 746 } 747 } 748 749 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 750 static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane_id plane, u16 i) 751 { 752 switch (plane) { 753 case OMAP_DSS_GFX: 754 BUG(); 755 return 0; 756 case OMAP_DSS_VIDEO1: 757 case OMAP_DSS_VIDEO2: 758 return 0x0034 + i * 0x8; 759 case OMAP_DSS_VIDEO3: 760 case OMAP_DSS_WB: 761 return 0x0010 + i * 0x8; 762 default: 763 BUG(); 764 return 0; 765 } 766 } 767 768 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 769 static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane_id plane, u16 i) 770 { 771 switch (plane) { 772 case OMAP_DSS_GFX: 773 BUG(); 774 return 0; 775 case OMAP_DSS_VIDEO1: 776 return 0x058C + i * 0x8; 777 case OMAP_DSS_VIDEO2: 778 return 0x0568 + i * 0x8; 779 case OMAP_DSS_VIDEO3: 780 return 0x0430 + i * 0x8; 781 case OMAP_DSS_WB: 782 return 0x02A0 + i * 0x8; 783 default: 784 BUG(); 785 return 0; 786 } 787 } 788 789 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 790 static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane_id plane, u16 i) 791 { 792 switch (plane) { 793 case OMAP_DSS_GFX: 794 BUG(); 795 return 0; 796 case OMAP_DSS_VIDEO1: 797 case OMAP_DSS_VIDEO2: 798 return 0x0038 + i * 0x8; 799 case OMAP_DSS_VIDEO3: 800 case OMAP_DSS_WB: 801 return 0x0014 + i * 0x8; 802 default: 803 BUG(); 804 return 0; 805 } 806 } 807 808 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 809 static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane_id plane, u16 i) 810 { 811 switch (plane) { 812 case OMAP_DSS_GFX: 813 BUG(); 814 return 0; 815 case OMAP_DSS_VIDEO1: 816 return 0x0590 + i * 8; 817 case OMAP_DSS_VIDEO2: 818 return 0x056C + i * 0x8; 819 case OMAP_DSS_VIDEO3: 820 return 0x0434 + i * 0x8; 821 case OMAP_DSS_WB: 822 return 0x02A4 + i * 0x8; 823 default: 824 BUG(); 825 return 0; 826 } 827 } 828 829 /* coef index i = {0, 1, 2, 3, 4,} */ 830 static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane_id plane, u16 i) 831 { 832 switch (plane) { 833 case OMAP_DSS_GFX: 834 BUG(); 835 return 0; 836 case OMAP_DSS_VIDEO1: 837 case OMAP_DSS_VIDEO2: 838 case OMAP_DSS_VIDEO3: 839 case OMAP_DSS_WB: 840 return 0x0074 + i * 0x4; 841 default: 842 BUG(); 843 return 0; 844 } 845 } 846 847 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 848 static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane_id plane, u16 i) 849 { 850 switch (plane) { 851 case OMAP_DSS_GFX: 852 BUG(); 853 return 0; 854 case OMAP_DSS_VIDEO1: 855 return 0x0124 + i * 0x4; 856 case OMAP_DSS_VIDEO2: 857 return 0x00B4 + i * 0x4; 858 case OMAP_DSS_VIDEO3: 859 case OMAP_DSS_WB: 860 return 0x0050 + i * 0x4; 861 default: 862 BUG(); 863 return 0; 864 } 865 } 866 867 /* coef index i = {0, 1, 2, 3, 4, 5, 6, 7} */ 868 static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane_id plane, u16 i) 869 { 870 switch (plane) { 871 case OMAP_DSS_GFX: 872 BUG(); 873 return 0; 874 case OMAP_DSS_VIDEO1: 875 return 0x05CC + i * 0x4; 876 case OMAP_DSS_VIDEO2: 877 return 0x05A8 + i * 0x4; 878 case OMAP_DSS_VIDEO3: 879 return 0x0470 + i * 0x4; 880 case OMAP_DSS_WB: 881 return 0x02E0 + i * 0x4; 882 default: 883 BUG(); 884 return 0; 885 } 886 } 887 888 static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane_id plane) 889 { 890 switch (plane) { 891 case OMAP_DSS_GFX: 892 return 0x01AC; 893 case OMAP_DSS_VIDEO1: 894 return 0x0174; 895 case OMAP_DSS_VIDEO2: 896 return 0x00E8; 897 case OMAP_DSS_VIDEO3: 898 return 0x00A0; 899 default: 900 BUG(); 901 return 0; 902 } 903 } 904 905 static inline u16 DISPC_MFLAG_THRESHOLD_OFFSET(enum omap_plane_id plane) 906 { 907 switch (plane) { 908 case OMAP_DSS_GFX: 909 return 0x0860; 910 case OMAP_DSS_VIDEO1: 911 return 0x0864; 912 case OMAP_DSS_VIDEO2: 913 return 0x0868; 914 case OMAP_DSS_VIDEO3: 915 return 0x086c; 916 case OMAP_DSS_WB: 917 return 0x0870; 918 default: 919 BUG(); 920 return 0; 921 } 922 } 923 #endif 924