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