.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright © 2014-2015 Broadcom |
---|
3 | | - * |
---|
4 | | - * This program is free software; you can redistribute it and/or modify |
---|
5 | | - * it under the terms of the GNU General Public License version 2 as |
---|
6 | | - * published by the Free Software Foundation. |
---|
7 | 4 | */ |
---|
8 | 5 | |
---|
9 | 6 | #ifndef VC4_REGS_H |
---|
10 | 7 | #define VC4_REGS_H |
---|
11 | 8 | |
---|
| 9 | +#include <linux/bitfield.h> |
---|
12 | 10 | #include <linux/bitops.h> |
---|
13 | 11 | |
---|
14 | 12 | #define VC4_MASK(high, low) ((u32)GENMASK(high, low)) |
---|
15 | 13 | /* Using the GNU statement expression extension */ |
---|
16 | 14 | #define VC4_SET_FIELD(value, field) \ |
---|
17 | 15 | ({ \ |
---|
18 | | - uint32_t fieldval = (value) << field##_SHIFT; \ |
---|
19 | | - WARN_ON((fieldval & ~field##_MASK) != 0); \ |
---|
20 | | - fieldval & field##_MASK; \ |
---|
| 16 | + WARN_ON(!FIELD_FIT(field##_MASK, value)); \ |
---|
| 17 | + FIELD_PREP(field##_MASK, value); \ |
---|
21 | 18 | }) |
---|
22 | 19 | |
---|
23 | | -#define VC4_GET_FIELD(word, field) (((word) & field##_MASK) >> \ |
---|
24 | | - field##_SHIFT) |
---|
| 20 | +#define VC4_GET_FIELD(word, field) FIELD_GET(field##_MASK, word) |
---|
25 | 21 | |
---|
26 | 22 | #define V3D_IDENT0 0x00000 |
---|
27 | 23 | # define V3D_EXPECTED_IDENT0 \ |
---|
.. | .. |
---|
133 | 129 | #define V3D_ERRSTAT 0x00f20 |
---|
134 | 130 | |
---|
135 | 131 | #define PV_CONTROL 0x00 |
---|
| 132 | +# define PV5_CONTROL_FIFO_LEVEL_HIGH_MASK VC4_MASK(26, 25) |
---|
| 133 | +# define PV5_CONTROL_FIFO_LEVEL_HIGH_SHIFT 25 |
---|
136 | 134 | # define PV_CONTROL_FORMAT_MASK VC4_MASK(23, 21) |
---|
137 | 135 | # define PV_CONTROL_FORMAT_SHIFT 21 |
---|
138 | 136 | # define PV_CONTROL_FORMAT_24 0 |
---|
.. | .. |
---|
212 | 210 | |
---|
213 | 211 | #define PV_HACT_ACT 0x30 |
---|
214 | 212 | |
---|
| 213 | +#define PV_MUX_CFG 0x34 |
---|
| 214 | +# define PV_MUX_CFG_RGB_PIXEL_MUX_MODE_MASK VC4_MASK(5, 2) |
---|
| 215 | +# define PV_MUX_CFG_RGB_PIXEL_MUX_MODE_SHIFT 2 |
---|
| 216 | +# define PV_MUX_CFG_RGB_PIXEL_MUX_MODE_NO_SWAP 8 |
---|
| 217 | + |
---|
| 218 | +#define SCALER_CHANNELS_COUNT 3 |
---|
| 219 | + |
---|
215 | 220 | #define SCALER_DISPCTRL 0x00000000 |
---|
216 | 221 | /* Global register for clock gating the HVS */ |
---|
217 | 222 | # define SCALER_DISPCTRL_ENABLE BIT(31) |
---|
218 | | -# define SCALER_DISPCTRL_DSP2EISLUR BIT(15) |
---|
219 | | -# define SCALER_DISPCTRL_DSP1EISLUR BIT(14) |
---|
| 223 | +# define SCALER_DISPCTRL_PANIC0_MASK VC4_MASK(25, 24) |
---|
| 224 | +# define SCALER_DISPCTRL_PANIC0_SHIFT 24 |
---|
| 225 | +# define SCALER_DISPCTRL_PANIC1_MASK VC4_MASK(27, 26) |
---|
| 226 | +# define SCALER_DISPCTRL_PANIC1_SHIFT 26 |
---|
| 227 | +# define SCALER_DISPCTRL_PANIC2_MASK VC4_MASK(29, 28) |
---|
| 228 | +# define SCALER_DISPCTRL_PANIC2_SHIFT 28 |
---|
220 | 229 | # define SCALER_DISPCTRL_DSP3_MUX_MASK VC4_MASK(19, 18) |
---|
221 | 230 | # define SCALER_DISPCTRL_DSP3_MUX_SHIFT 18 |
---|
222 | 231 | |
---|
.. | .. |
---|
224 | 233 | * SCALER_DISPSTAT_IRQDISP0. Note that short frame contributions are |
---|
225 | 234 | * always enabled. |
---|
226 | 235 | */ |
---|
227 | | -# define SCALER_DISPCTRL_DSP0EISLUR BIT(13) |
---|
228 | | -# define SCALER_DISPCTRL_DSP2EIEOLN BIT(12) |
---|
229 | | -# define SCALER_DISPCTRL_DSP2EIEOF BIT(11) |
---|
230 | | -# define SCALER_DISPCTRL_DSP1EIEOLN BIT(10) |
---|
231 | | -# define SCALER_DISPCTRL_DSP1EIEOF BIT(9) |
---|
| 236 | +# define SCALER_DISPCTRL_DSPEISLUR(x) BIT(13 + (x)) |
---|
232 | 237 | /* Enables Display 0 end-of-line-N contribution to |
---|
233 | 238 | * SCALER_DISPSTAT_IRQDISP0 |
---|
234 | 239 | */ |
---|
235 | | -# define SCALER_DISPCTRL_DSP0EIEOLN BIT(8) |
---|
| 240 | +# define SCALER_DISPCTRL_DSPEIEOLN(x) BIT(8 + ((x) * 2)) |
---|
236 | 241 | /* Enables Display 0 EOF contribution to SCALER_DISPSTAT_IRQDISP0 */ |
---|
237 | | -# define SCALER_DISPCTRL_DSP0EIEOF BIT(7) |
---|
| 242 | +# define SCALER_DISPCTRL_DSPEIEOF(x) BIT(7 + ((x) * 2)) |
---|
238 | 243 | |
---|
239 | 244 | # define SCALER_DISPCTRL_SLVRDEIRQ BIT(6) |
---|
240 | 245 | # define SCALER_DISPCTRL_SLVWREIRQ BIT(5) |
---|
241 | 246 | # define SCALER_DISPCTRL_DMAEIRQ BIT(4) |
---|
242 | | -# define SCALER_DISPCTRL_DISP2EIRQ BIT(3) |
---|
243 | | -# define SCALER_DISPCTRL_DISP1EIRQ BIT(2) |
---|
244 | 247 | /* Enables interrupt generation on the enabled EOF/EOLN/EISLUR |
---|
245 | 248 | * bits and short frames.. |
---|
246 | 249 | */ |
---|
247 | | -# define SCALER_DISPCTRL_DISP0EIRQ BIT(1) |
---|
| 250 | +# define SCALER_DISPCTRL_DISPEIRQ(x) BIT(1 + (x)) |
---|
248 | 251 | /* Enables interrupt generation on scaler profiler interrupt. */ |
---|
249 | 252 | # define SCALER_DISPCTRL_SCLEIRQ BIT(0) |
---|
250 | 253 | |
---|
251 | 254 | #define SCALER_DISPSTAT 0x00000004 |
---|
252 | | -# define SCALER_DISPSTAT_COBLOW2 BIT(29) |
---|
253 | | -# define SCALER_DISPSTAT_EOLN2 BIT(28) |
---|
254 | | -# define SCALER_DISPSTAT_ESFRAME2 BIT(27) |
---|
255 | | -# define SCALER_DISPSTAT_ESLINE2 BIT(26) |
---|
256 | | -# define SCALER_DISPSTAT_EUFLOW2 BIT(25) |
---|
257 | | -# define SCALER_DISPSTAT_EOF2 BIT(24) |
---|
258 | | - |
---|
259 | | -# define SCALER_DISPSTAT_COBLOW1 BIT(21) |
---|
260 | | -# define SCALER_DISPSTAT_EOLN1 BIT(20) |
---|
261 | | -# define SCALER_DISPSTAT_ESFRAME1 BIT(19) |
---|
262 | | -# define SCALER_DISPSTAT_ESLINE1 BIT(18) |
---|
263 | | -# define SCALER_DISPSTAT_EUFLOW1 BIT(17) |
---|
264 | | -# define SCALER_DISPSTAT_EOF1 BIT(16) |
---|
265 | | - |
---|
266 | 255 | # define SCALER_DISPSTAT_RESP_MASK VC4_MASK(15, 14) |
---|
267 | 256 | # define SCALER_DISPSTAT_RESP_SHIFT 14 |
---|
268 | 257 | # define SCALER_DISPSTAT_RESP_OKAY 0 |
---|
.. | .. |
---|
270 | 259 | # define SCALER_DISPSTAT_RESP_SLVERR 2 |
---|
271 | 260 | # define SCALER_DISPSTAT_RESP_DECERR 3 |
---|
272 | 261 | |
---|
273 | | -# define SCALER_DISPSTAT_COBLOW0 BIT(13) |
---|
| 262 | +# define SCALER_DISPSTAT_COBLOW(x) BIT(13 + ((x) * 8)) |
---|
274 | 263 | /* Set when the DISPEOLN line is done compositing. */ |
---|
275 | | -# define SCALER_DISPSTAT_EOLN0 BIT(12) |
---|
| 264 | +# define SCALER_DISPSTAT_EOLN(x) BIT(12 + ((x) * 8)) |
---|
276 | 265 | /* Set when VSTART is seen but there are still pixels in the current |
---|
277 | 266 | * output line. |
---|
278 | 267 | */ |
---|
279 | | -# define SCALER_DISPSTAT_ESFRAME0 BIT(11) |
---|
| 268 | +# define SCALER_DISPSTAT_ESFRAME(x) BIT(11 + ((x) * 8)) |
---|
280 | 269 | /* Set when HSTART is seen but there are still pixels in the current |
---|
281 | 270 | * output line. |
---|
282 | 271 | */ |
---|
283 | | -# define SCALER_DISPSTAT_ESLINE0 BIT(10) |
---|
| 272 | +# define SCALER_DISPSTAT_ESLINE(x) BIT(10 + ((x) * 8)) |
---|
284 | 273 | /* Set when the the downstream tries to read from the display FIFO |
---|
285 | 274 | * while it's empty. |
---|
286 | 275 | */ |
---|
287 | | -# define SCALER_DISPSTAT_EUFLOW0 BIT(9) |
---|
| 276 | +# define SCALER_DISPSTAT_EUFLOW(x) BIT(9 + ((x) * 8)) |
---|
288 | 277 | /* Set when the display mode changes from RUN to EOF */ |
---|
289 | | -# define SCALER_DISPSTAT_EOF0 BIT(8) |
---|
| 278 | +# define SCALER_DISPSTAT_EOF(x) BIT(8 + ((x) * 8)) |
---|
| 279 | + |
---|
| 280 | +# define SCALER_DISPSTAT_IRQMASK(x) VC4_MASK(13 + ((x) * 8), \ |
---|
| 281 | + 8 + ((x) * 8)) |
---|
290 | 282 | |
---|
291 | 283 | /* Set on AXI invalid DMA ID error. */ |
---|
292 | 284 | # define SCALER_DISPSTAT_DMA_ERROR BIT(7) |
---|
.. | .. |
---|
298 | 290 | * SCALER_DISPSTAT_RESP_ERROR is not SCALER_DISPSTAT_RESP_OKAY. |
---|
299 | 291 | */ |
---|
300 | 292 | # define SCALER_DISPSTAT_IRQDMA BIT(4) |
---|
301 | | -# define SCALER_DISPSTAT_IRQDISP2 BIT(3) |
---|
302 | | -# define SCALER_DISPSTAT_IRQDISP1 BIT(2) |
---|
303 | 293 | /* Set when any of the EOF/EOLN/ESFRAME/ESLINE bits are set and their |
---|
304 | 294 | * corresponding interrupt bit is enabled in DISPCTRL. |
---|
305 | 295 | */ |
---|
306 | | -# define SCALER_DISPSTAT_IRQDISP0 BIT(1) |
---|
| 296 | +# define SCALER_DISPSTAT_IRQDISP(x) BIT(1 + (x)) |
---|
307 | 297 | /* On read, the profiler interrupt. On write, clear *all* interrupt bits. */ |
---|
308 | 298 | # define SCALER_DISPSTAT_IRQSCL BIT(0) |
---|
309 | 299 | |
---|
310 | 300 | #define SCALER_DISPID 0x00000008 |
---|
311 | 301 | #define SCALER_DISPECTRL 0x0000000c |
---|
| 302 | +# define SCALER_DISPECTRL_DSP2_MUX_SHIFT 31 |
---|
| 303 | +# define SCALER_DISPECTRL_DSP2_MUX_MASK VC4_MASK(31, 31) |
---|
| 304 | + |
---|
312 | 305 | #define SCALER_DISPPROF 0x00000010 |
---|
| 306 | + |
---|
313 | 307 | #define SCALER_DISPDITHER 0x00000014 |
---|
| 308 | +# define SCALER_DISPDITHER_DSP5_MUX_SHIFT 30 |
---|
| 309 | +# define SCALER_DISPDITHER_DSP5_MUX_MASK VC4_MASK(31, 30) |
---|
| 310 | + |
---|
314 | 311 | #define SCALER_DISPEOLN 0x00000018 |
---|
| 312 | +# define SCALER_DISPEOLN_DSP4_MUX_SHIFT 30 |
---|
| 313 | +# define SCALER_DISPEOLN_DSP4_MUX_MASK VC4_MASK(31, 30) |
---|
| 314 | + |
---|
315 | 315 | #define SCALER_DISPLIST0 0x00000020 |
---|
316 | 316 | #define SCALER_DISPLIST1 0x00000024 |
---|
317 | 317 | #define SCALER_DISPLIST2 0x00000028 |
---|
.. | .. |
---|
349 | 349 | # define SCALER_DISPCTRLX_WIDTH_SHIFT 12 |
---|
350 | 350 | # define SCALER_DISPCTRLX_HEIGHT_MASK VC4_MASK(11, 0) |
---|
351 | 351 | # define SCALER_DISPCTRLX_HEIGHT_SHIFT 0 |
---|
| 352 | + |
---|
| 353 | +# define SCALER5_DISPCTRLX_WIDTH_MASK VC4_MASK(28, 16) |
---|
| 354 | +# define SCALER5_DISPCTRLX_WIDTH_SHIFT 16 |
---|
| 355 | +/* Generates a single frame when VSTART is seen and stops at the last |
---|
| 356 | + * pixel read from the FIFO. |
---|
| 357 | + */ |
---|
| 358 | +# define SCALER5_DISPCTRLX_ONESHOT BIT(15) |
---|
| 359 | +/* Processes a single context in the dlist and then task switch, |
---|
| 360 | + * instead of an entire line. |
---|
| 361 | + */ |
---|
| 362 | +# define SCALER5_DISPCTRLX_ONECTX_MASK VC4_MASK(14, 13) |
---|
| 363 | +# define SCALER5_DISPCTRLX_ONECTX_SHIFT 13 |
---|
| 364 | +# define SCALER5_DISPCTRLX_HEIGHT_MASK VC4_MASK(12, 0) |
---|
| 365 | +# define SCALER5_DISPCTRLX_HEIGHT_SHIFT 0 |
---|
352 | 366 | |
---|
353 | 367 | #define SCALER_DISPBKGND0 0x00000044 |
---|
354 | 368 | # define SCALER_DISPBKGND_AUTOHS BIT(31) |
---|
.. | .. |
---|
483 | 497 | #define SCALER_DLIST_START 0x00002000 |
---|
484 | 498 | #define SCALER_DLIST_SIZE 0x00004000 |
---|
485 | 499 | |
---|
486 | | -#define VC4_HDMI_CORE_REV 0x000 |
---|
| 500 | +#define SCALER5_DLIST_START 0x00004000 |
---|
487 | 501 | |
---|
488 | | -#define VC4_HDMI_SW_RESET_CONTROL 0x004 |
---|
489 | 502 | # define VC4_HDMI_SW_RESET_FORMAT_DETECT BIT(1) |
---|
490 | 503 | # define VC4_HDMI_SW_RESET_HDMI BIT(0) |
---|
491 | 504 | |
---|
492 | | -#define VC4_HDMI_HOTPLUG_INT 0x008 |
---|
493 | | - |
---|
494 | | -#define VC4_HDMI_HOTPLUG 0x00c |
---|
495 | 505 | # define VC4_HDMI_HOTPLUG_CONNECTED BIT(0) |
---|
496 | 506 | |
---|
497 | | -/* 3 bits per field, where each field maps from that corresponding MAI |
---|
498 | | - * bus channel to the given HDMI channel. |
---|
499 | | - */ |
---|
500 | | -#define VC4_HDMI_MAI_CHANNEL_MAP 0x090 |
---|
501 | | - |
---|
502 | | -#define VC4_HDMI_MAI_CONFIG 0x094 |
---|
503 | 507 | # define VC4_HDMI_MAI_CONFIG_FORMAT_REVERSE BIT(27) |
---|
504 | 508 | # define VC4_HDMI_MAI_CONFIG_BIT_REVERSE BIT(26) |
---|
505 | 509 | # define VC4_HDMI_MAI_CHANNEL_MASK_MASK VC4_MASK(15, 0) |
---|
506 | 510 | # define VC4_HDMI_MAI_CHANNEL_MASK_SHIFT 0 |
---|
507 | 511 | |
---|
508 | | -/* Last received format word on the MAI bus. */ |
---|
509 | | -#define VC4_HDMI_MAI_FORMAT 0x098 |
---|
510 | | - |
---|
511 | | -#define VC4_HDMI_AUDIO_PACKET_CONFIG 0x09c |
---|
512 | 512 | # define VC4_HDMI_AUDIO_PACKET_ZERO_DATA_ON_SAMPLE_FLAT BIT(29) |
---|
513 | 513 | # define VC4_HDMI_AUDIO_PACKET_ZERO_DATA_ON_INACTIVE_CHANNELS BIT(24) |
---|
514 | 514 | # define VC4_HDMI_AUDIO_PACKET_FORCE_SAMPLE_PRESENT BIT(19) |
---|
.. | .. |
---|
522 | 522 | # define VC4_HDMI_AUDIO_PACKET_CEA_MASK_MASK VC4_MASK(7, 0) |
---|
523 | 523 | # define VC4_HDMI_AUDIO_PACKET_CEA_MASK_SHIFT 0 |
---|
524 | 524 | |
---|
525 | | -#define VC4_HDMI_RAM_PACKET_CONFIG 0x0a0 |
---|
526 | 525 | # define VC4_HDMI_RAM_PACKET_ENABLE BIT(16) |
---|
527 | 526 | |
---|
528 | | -#define VC4_HDMI_RAM_PACKET_STATUS 0x0a4 |
---|
529 | | - |
---|
530 | | -#define VC4_HDMI_CRP_CFG 0x0a8 |
---|
531 | 527 | /* When set, the CTS_PERIOD counts based on MAI bus sync pulse instead |
---|
532 | 528 | * of pixel clock. |
---|
533 | 529 | */ |
---|
.. | .. |
---|
541 | 537 | # define VC4_HDMI_CRP_CFG_N_MASK VC4_MASK(19, 0) |
---|
542 | 538 | # define VC4_HDMI_CRP_CFG_N_SHIFT 0 |
---|
543 | 539 | |
---|
544 | | -/* 20-bit fields containing CTS values to be transmitted if !EXTERNAL_CTS_EN */ |
---|
545 | | -#define VC4_HDMI_CTS_0 0x0ac |
---|
546 | | -#define VC4_HDMI_CTS_1 0x0b0 |
---|
547 | | -/* 20-bit fields containing number of clocks to send CTS0/1 before |
---|
548 | | - * switching to the other one. |
---|
549 | | - */ |
---|
550 | | -#define VC4_HDMI_CTS_PERIOD_0 0x0b4 |
---|
551 | | -#define VC4_HDMI_CTS_PERIOD_1 0x0b8 |
---|
552 | | - |
---|
553 | | -#define VC4_HDMI_HORZA 0x0c4 |
---|
554 | 540 | # define VC4_HDMI_HORZA_VPOS BIT(14) |
---|
555 | 541 | # define VC4_HDMI_HORZA_HPOS BIT(13) |
---|
556 | 542 | /* Horizontal active pixels (hdisplay). */ |
---|
557 | 543 | # define VC4_HDMI_HORZA_HAP_MASK VC4_MASK(12, 0) |
---|
558 | 544 | # define VC4_HDMI_HORZA_HAP_SHIFT 0 |
---|
559 | 545 | |
---|
560 | | -#define VC4_HDMI_HORZB 0x0c8 |
---|
561 | 546 | /* Horizontal pack porch (htotal - hsync_end). */ |
---|
562 | 547 | # define VC4_HDMI_HORZB_HBP_MASK VC4_MASK(29, 20) |
---|
563 | 548 | # define VC4_HDMI_HORZB_HBP_SHIFT 20 |
---|
.. | .. |
---|
568 | 553 | # define VC4_HDMI_HORZB_HFP_MASK VC4_MASK(9, 0) |
---|
569 | 554 | # define VC4_HDMI_HORZB_HFP_SHIFT 0 |
---|
570 | 555 | |
---|
571 | | -#define VC4_HDMI_FIFO_CTL 0x05c |
---|
572 | 556 | # define VC4_HDMI_FIFO_CTL_RECENTER_DONE BIT(14) |
---|
573 | 557 | # define VC4_HDMI_FIFO_CTL_USE_EMPTY BIT(13) |
---|
574 | 558 | # define VC4_HDMI_FIFO_CTL_ON_VB BIT(7) |
---|
.. | .. |
---|
581 | 565 | # define VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N BIT(0) |
---|
582 | 566 | # define VC4_HDMI_FIFO_VALID_WRITE_MASK 0xefff |
---|
583 | 567 | |
---|
584 | | -#define VC4_HDMI_SCHEDULER_CONTROL 0x0c0 |
---|
585 | 568 | # define VC4_HDMI_SCHEDULER_CONTROL_MANUAL_FORMAT BIT(15) |
---|
586 | 569 | # define VC4_HDMI_SCHEDULER_CONTROL_IGNORE_VSYNC_PREDICTS BIT(5) |
---|
587 | 570 | # define VC4_HDMI_SCHEDULER_CONTROL_VERT_ALWAYS_KEEPOUT BIT(3) |
---|
588 | 571 | # define VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE BIT(1) |
---|
589 | 572 | # define VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI BIT(0) |
---|
590 | 573 | |
---|
591 | | -#define VC4_HDMI_VERTA0 0x0cc |
---|
592 | | -#define VC4_HDMI_VERTA1 0x0d4 |
---|
593 | 574 | /* Vertical sync pulse (vsync_end - vsync_start). */ |
---|
594 | 575 | # define VC4_HDMI_VERTA_VSP_MASK VC4_MASK(24, 20) |
---|
595 | 576 | # define VC4_HDMI_VERTA_VSP_SHIFT 20 |
---|
.. | .. |
---|
600 | 581 | # define VC4_HDMI_VERTA_VAL_MASK VC4_MASK(12, 0) |
---|
601 | 582 | # define VC4_HDMI_VERTA_VAL_SHIFT 0 |
---|
602 | 583 | |
---|
603 | | -#define VC4_HDMI_VERTB0 0x0d0 |
---|
604 | | -#define VC4_HDMI_VERTB1 0x0d8 |
---|
605 | 584 | /* Vertical sync pulse offset (for interlaced) */ |
---|
606 | 585 | # define VC4_HDMI_VERTB_VSPO_MASK VC4_MASK(21, 9) |
---|
607 | 586 | # define VC4_HDMI_VERTB_VSPO_SHIFT 9 |
---|
.. | .. |
---|
609 | 588 | # define VC4_HDMI_VERTB_VBP_MASK VC4_MASK(8, 0) |
---|
610 | 589 | # define VC4_HDMI_VERTB_VBP_SHIFT 0 |
---|
611 | 590 | |
---|
612 | | -#define VC4_HDMI_CEC_CNTRL_1 0x0e8 |
---|
613 | 591 | /* Set when the transmission has ended. */ |
---|
614 | 592 | # define VC4_HDMI_CEC_TX_EOM BIT(31) |
---|
615 | 593 | /* If set, transmission was acked on the 1st or 2nd attempt (only one |
---|
.. | .. |
---|
650 | 628 | /* Set these fields to how many bit clock cycles get to that many |
---|
651 | 629 | * microseconds. |
---|
652 | 630 | */ |
---|
653 | | -#define VC4_HDMI_CEC_CNTRL_2 0x0ec |
---|
654 | 631 | # define VC4_HDMI_CEC_CNT_TO_1500_US_MASK VC4_MASK(30, 24) |
---|
655 | 632 | # define VC4_HDMI_CEC_CNT_TO_1500_US_SHIFT 24 |
---|
656 | 633 | # define VC4_HDMI_CEC_CNT_TO_1300_US_MASK VC4_MASK(23, 17) |
---|
.. | .. |
---|
662 | 639 | # define VC4_HDMI_CEC_CNT_TO_400_US_MASK VC4_MASK(4, 0) |
---|
663 | 640 | # define VC4_HDMI_CEC_CNT_TO_400_US_SHIFT 0 |
---|
664 | 641 | |
---|
665 | | -#define VC4_HDMI_CEC_CNTRL_3 0x0f0 |
---|
666 | 642 | # define VC4_HDMI_CEC_CNT_TO_2750_US_MASK VC4_MASK(31, 24) |
---|
667 | 643 | # define VC4_HDMI_CEC_CNT_TO_2750_US_SHIFT 24 |
---|
668 | 644 | # define VC4_HDMI_CEC_CNT_TO_2400_US_MASK VC4_MASK(23, 16) |
---|
.. | .. |
---|
672 | 648 | # define VC4_HDMI_CEC_CNT_TO_1700_US_MASK VC4_MASK(7, 0) |
---|
673 | 649 | # define VC4_HDMI_CEC_CNT_TO_1700_US_SHIFT 0 |
---|
674 | 650 | |
---|
675 | | -#define VC4_HDMI_CEC_CNTRL_4 0x0f4 |
---|
676 | 651 | # define VC4_HDMI_CEC_CNT_TO_4300_US_MASK VC4_MASK(31, 24) |
---|
677 | 652 | # define VC4_HDMI_CEC_CNT_TO_4300_US_SHIFT 24 |
---|
678 | 653 | # define VC4_HDMI_CEC_CNT_TO_3900_US_MASK VC4_MASK(23, 16) |
---|
.. | .. |
---|
682 | 657 | # define VC4_HDMI_CEC_CNT_TO_3500_US_MASK VC4_MASK(7, 0) |
---|
683 | 658 | # define VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT 0 |
---|
684 | 659 | |
---|
685 | | -#define VC4_HDMI_CEC_CNTRL_5 0x0f8 |
---|
686 | 660 | # define VC4_HDMI_CEC_TX_SW_RESET BIT(27) |
---|
687 | 661 | # define VC4_HDMI_CEC_RX_SW_RESET BIT(26) |
---|
688 | 662 | # define VC4_HDMI_CEC_PAD_SW_RESET BIT(25) |
---|
.. | .. |
---|
695 | 669 | # define VC4_HDMI_CEC_CNT_TO_4500_US_MASK VC4_MASK(7, 0) |
---|
696 | 670 | # define VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT 0 |
---|
697 | 671 | |
---|
698 | | -/* Transmit data, first byte is low byte of the 32-bit reg. MSB of |
---|
699 | | - * each byte transmitted first. |
---|
700 | | - */ |
---|
701 | | -#define VC4_HDMI_CEC_TX_DATA_1 0x0fc |
---|
702 | | -#define VC4_HDMI_CEC_TX_DATA_2 0x100 |
---|
703 | | -#define VC4_HDMI_CEC_TX_DATA_3 0x104 |
---|
704 | | -#define VC4_HDMI_CEC_TX_DATA_4 0x108 |
---|
705 | | -#define VC4_HDMI_CEC_RX_DATA_1 0x10c |
---|
706 | | -#define VC4_HDMI_CEC_RX_DATA_2 0x110 |
---|
707 | | -#define VC4_HDMI_CEC_RX_DATA_3 0x114 |
---|
708 | | -#define VC4_HDMI_CEC_RX_DATA_4 0x118 |
---|
709 | | - |
---|
710 | | -#define VC4_HDMI_TX_PHY_RESET_CTL 0x2c0 |
---|
711 | | - |
---|
712 | | -#define VC4_HDMI_TX_PHY_CTL0 0x2c4 |
---|
713 | 672 | # define VC4_HDMI_TX_PHY_RNG_PWRDN BIT(25) |
---|
714 | 673 | |
---|
715 | | -/* Interrupt status bits */ |
---|
716 | | -#define VC4_HDMI_CPU_STATUS 0x340 |
---|
717 | | -#define VC4_HDMI_CPU_SET 0x344 |
---|
718 | | -#define VC4_HDMI_CPU_CLEAR 0x348 |
---|
719 | 674 | # define VC4_HDMI_CPU_CEC BIT(6) |
---|
720 | 675 | # define VC4_HDMI_CPU_HOTPLUG BIT(0) |
---|
721 | 676 | |
---|
722 | | -#define VC4_HDMI_CPU_MASK_STATUS 0x34c |
---|
723 | | -#define VC4_HDMI_CPU_MASK_SET 0x350 |
---|
724 | | -#define VC4_HDMI_CPU_MASK_CLEAR 0x354 |
---|
725 | | - |
---|
726 | | -#define VC4_HDMI_GCP(x) (0x400 + ((x) * 0x4)) |
---|
727 | | -#define VC4_HDMI_RAM_PACKET(x) (0x400 + ((x) * 0x24)) |
---|
728 | | -#define VC4_HDMI_PACKET_STRIDE 0x24 |
---|
729 | | - |
---|
730 | | -#define VC4_HD_M_CTL 0x00c |
---|
731 | 677 | /* Debug: Current receive value on the CEC pad. */ |
---|
732 | 678 | # define VC4_HD_CECRXD BIT(9) |
---|
733 | 679 | /* Debug: Override CEC output to 0. */ |
---|
.. | .. |
---|
737 | 683 | # define VC4_HD_M_SW_RST BIT(2) |
---|
738 | 684 | # define VC4_HD_M_ENABLE BIT(0) |
---|
739 | 685 | |
---|
740 | | -#define VC4_HD_MAI_CTL 0x014 |
---|
741 | 686 | /* Set when audio stream is received at a slower rate than the |
---|
742 | 687 | * sampling period, so MAI fifo goes empty. Write 1 to clear. |
---|
743 | 688 | */ |
---|
.. | .. |
---|
762 | 707 | /* Single-shot reset bit. Read value is undefined. */ |
---|
763 | 708 | # define VC4_HD_MAI_CTL_RESET BIT(0) |
---|
764 | 709 | |
---|
765 | | -#define VC4_HD_MAI_THR 0x018 |
---|
766 | 710 | # define VC4_HD_MAI_THR_PANICHIGH_MASK VC4_MASK(29, 24) |
---|
767 | 711 | # define VC4_HD_MAI_THR_PANICHIGH_SHIFT 24 |
---|
768 | 712 | # define VC4_HD_MAI_THR_PANICLOW_MASK VC4_MASK(21, 16) |
---|
.. | .. |
---|
772 | 716 | # define VC4_HD_MAI_THR_DREQLOW_MASK VC4_MASK(5, 0) |
---|
773 | 717 | # define VC4_HD_MAI_THR_DREQLOW_SHIFT 0 |
---|
774 | 718 | |
---|
775 | | -/* Format header to be placed on the MAI data. Unused. */ |
---|
776 | | -#define VC4_HD_MAI_FMT 0x01c |
---|
777 | | - |
---|
778 | | -/* Register for DMAing in audio data to be transported over the MAI |
---|
779 | | - * bus to the Falcon core. |
---|
780 | | - */ |
---|
781 | | -#define VC4_HD_MAI_DATA 0x020 |
---|
782 | | - |
---|
783 | 719 | /* Divider from HDMI HSM clock to MAI serial clock. Sampling period |
---|
784 | 720 | * converges to N / (M + 1) cycles. |
---|
785 | 721 | */ |
---|
786 | | -#define VC4_HD_MAI_SMP 0x02c |
---|
787 | 722 | # define VC4_HD_MAI_SMP_N_MASK VC4_MASK(31, 8) |
---|
788 | 723 | # define VC4_HD_MAI_SMP_N_SHIFT 8 |
---|
789 | 724 | # define VC4_HD_MAI_SMP_M_MASK VC4_MASK(7, 0) |
---|
790 | 725 | # define VC4_HD_MAI_SMP_M_SHIFT 0 |
---|
791 | 726 | |
---|
792 | | -#define VC4_HD_VID_CTL 0x038 |
---|
793 | 727 | # define VC4_HD_VID_CTL_ENABLE BIT(31) |
---|
794 | 728 | # define VC4_HD_VID_CTL_UNDERFLOW_ENABLE BIT(30) |
---|
795 | 729 | # define VC4_HD_VID_CTL_FRAME_COUNTER_RESET BIT(29) |
---|
796 | 730 | # define VC4_HD_VID_CTL_VSYNC_LOW BIT(28) |
---|
797 | 731 | # define VC4_HD_VID_CTL_HSYNC_LOW BIT(27) |
---|
| 732 | +# define VC4_HD_VID_CTL_CLRSYNC BIT(24) |
---|
| 733 | +# define VC4_HD_VID_CTL_CLRRGB BIT(23) |
---|
| 734 | +# define VC4_HD_VID_CTL_BLANKPIX BIT(18) |
---|
798 | 735 | |
---|
799 | | -#define VC4_HD_CSC_CTL 0x040 |
---|
800 | 736 | # define VC4_HD_CSC_CTL_ORDER_MASK VC4_MASK(7, 5) |
---|
801 | 737 | # define VC4_HD_CSC_CTL_ORDER_SHIFT 5 |
---|
802 | 738 | # define VC4_HD_CSC_CTL_ORDER_RGB 0 |
---|
.. | .. |
---|
814 | 750 | # define VC4_HD_CSC_CTL_RGB2YCC BIT(1) |
---|
815 | 751 | # define VC4_HD_CSC_CTL_ENABLE BIT(0) |
---|
816 | 752 | |
---|
817 | | -#define VC4_HD_CSC_12_11 0x044 |
---|
818 | | -#define VC4_HD_CSC_14_13 0x048 |
---|
819 | | -#define VC4_HD_CSC_22_21 0x04c |
---|
820 | | -#define VC4_HD_CSC_24_23 0x050 |
---|
821 | | -#define VC4_HD_CSC_32_31 0x054 |
---|
822 | | -#define VC4_HD_CSC_34_33 0x058 |
---|
823 | | - |
---|
824 | | -#define VC4_HD_FRAME_COUNT 0x068 |
---|
| 753 | +# define VC4_DVP_HT_CLOCK_STOP_PIXEL BIT(1) |
---|
825 | 754 | |
---|
826 | 755 | /* HVS display list information. */ |
---|
827 | 756 | #define HVS_BOOTLOADER_DLIST_END 32 |
---|
.. | .. |
---|
848 | 777 | HVS_PIXEL_FORMAT_PALETTE = 13, |
---|
849 | 778 | HVS_PIXEL_FORMAT_YUV444_RGB = 14, |
---|
850 | 779 | HVS_PIXEL_FORMAT_AYUV444_RGB = 15, |
---|
| 780 | + HVS_PIXEL_FORMAT_RGBA1010102 = 16, |
---|
| 781 | + HVS_PIXEL_FORMAT_YCBCR_10BIT = 17, |
---|
851 | 782 | }; |
---|
852 | 783 | |
---|
853 | 784 | /* Note: the LSB is the rightmost character shown. Only valid for |
---|
.. | .. |
---|
902 | 833 | #define SCALER_CTL0_RGBA_EXPAND_MSB 2 |
---|
903 | 834 | #define SCALER_CTL0_RGBA_EXPAND_ROUND 3 |
---|
904 | 835 | |
---|
| 836 | +#define SCALER5_CTL0_ALPHA_EXPAND BIT(12) |
---|
| 837 | + |
---|
| 838 | +#define SCALER5_CTL0_RGB_EXPAND BIT(11) |
---|
| 839 | + |
---|
905 | 840 | #define SCALER_CTL0_SCL1_MASK VC4_MASK(10, 8) |
---|
906 | 841 | #define SCALER_CTL0_SCL1_SHIFT 8 |
---|
907 | 842 | |
---|
.. | .. |
---|
919 | 854 | |
---|
920 | 855 | /* Set to indicate no scaling. */ |
---|
921 | 856 | #define SCALER_CTL0_UNITY BIT(4) |
---|
| 857 | +#define SCALER5_CTL0_UNITY BIT(15) |
---|
922 | 858 | |
---|
923 | 859 | #define SCALER_CTL0_PIXEL_FORMAT_MASK VC4_MASK(3, 0) |
---|
924 | 860 | #define SCALER_CTL0_PIXEL_FORMAT_SHIFT 0 |
---|
| 861 | + |
---|
| 862 | +#define SCALER5_CTL0_PIXEL_FORMAT_MASK VC4_MASK(4, 0) |
---|
925 | 863 | |
---|
926 | 864 | #define SCALER_POS0_FIXED_ALPHA_MASK VC4_MASK(31, 24) |
---|
927 | 865 | #define SCALER_POS0_FIXED_ALPHA_SHIFT 24 |
---|
.. | .. |
---|
932 | 870 | #define SCALER_POS0_START_X_MASK VC4_MASK(11, 0) |
---|
933 | 871 | #define SCALER_POS0_START_X_SHIFT 0 |
---|
934 | 872 | |
---|
| 873 | +#define SCALER5_POS0_START_Y_MASK VC4_MASK(27, 16) |
---|
| 874 | +#define SCALER5_POS0_START_Y_SHIFT 16 |
---|
| 875 | + |
---|
| 876 | +#define SCALER5_POS0_START_X_MASK VC4_MASK(13, 0) |
---|
| 877 | +#define SCALER5_POS0_START_X_SHIFT 0 |
---|
| 878 | + |
---|
| 879 | +#define SCALER5_POS0_VFLIP BIT(31) |
---|
| 880 | +#define SCALER5_POS0_HFLIP BIT(15) |
---|
| 881 | + |
---|
| 882 | +#define SCALER5_CTL2_ALPHA_MODE_MASK VC4_MASK(31, 30) |
---|
| 883 | +#define SCALER5_CTL2_ALPHA_MODE_SHIFT 30 |
---|
| 884 | +#define SCALER5_CTL2_ALPHA_MODE_PIPELINE 0 |
---|
| 885 | +#define SCALER5_CTL2_ALPHA_MODE_FIXED 1 |
---|
| 886 | +#define SCALER5_CTL2_ALPHA_MODE_FIXED_NONZERO 2 |
---|
| 887 | +#define SCALER5_CTL2_ALPHA_MODE_FIXED_OVER_0x07 3 |
---|
| 888 | + |
---|
| 889 | +#define SCALER5_CTL2_ALPHA_PREMULT BIT(29) |
---|
| 890 | + |
---|
| 891 | +#define SCALER5_CTL2_ALPHA_MIX BIT(28) |
---|
| 892 | + |
---|
| 893 | +#define SCALER5_CTL2_ALPHA_LOC BIT(25) |
---|
| 894 | + |
---|
| 895 | +#define SCALER5_CTL2_MAP_SEL_MASK VC4_MASK(18, 17) |
---|
| 896 | +#define SCALER5_CTL2_MAP_SEL_SHIFT 17 |
---|
| 897 | + |
---|
| 898 | +#define SCALER5_CTL2_GAMMA BIT(16) |
---|
| 899 | + |
---|
| 900 | +#define SCALER5_CTL2_ALPHA_MASK VC4_MASK(15, 4) |
---|
| 901 | +#define SCALER5_CTL2_ALPHA_SHIFT 4 |
---|
| 902 | + |
---|
935 | 903 | #define SCALER_POS1_SCL_HEIGHT_MASK VC4_MASK(27, 16) |
---|
936 | 904 | #define SCALER_POS1_SCL_HEIGHT_SHIFT 16 |
---|
937 | 905 | |
---|
938 | 906 | #define SCALER_POS1_SCL_WIDTH_MASK VC4_MASK(11, 0) |
---|
939 | 907 | #define SCALER_POS1_SCL_WIDTH_SHIFT 0 |
---|
| 908 | + |
---|
| 909 | +#define SCALER5_POS1_SCL_HEIGHT_MASK VC4_MASK(28, 16) |
---|
| 910 | +#define SCALER5_POS1_SCL_HEIGHT_SHIFT 16 |
---|
| 911 | + |
---|
| 912 | +#define SCALER5_POS1_SCL_WIDTH_MASK VC4_MASK(12, 0) |
---|
| 913 | +#define SCALER5_POS1_SCL_WIDTH_SHIFT 0 |
---|
940 | 914 | |
---|
941 | 915 | #define SCALER_POS2_ALPHA_MODE_MASK VC4_MASK(31, 30) |
---|
942 | 916 | #define SCALER_POS2_ALPHA_MODE_SHIFT 30 |
---|
.. | .. |
---|
952 | 926 | |
---|
953 | 927 | #define SCALER_POS2_WIDTH_MASK VC4_MASK(11, 0) |
---|
954 | 928 | #define SCALER_POS2_WIDTH_SHIFT 0 |
---|
| 929 | + |
---|
| 930 | +#define SCALER5_POS2_HEIGHT_MASK VC4_MASK(28, 16) |
---|
| 931 | +#define SCALER5_POS2_HEIGHT_SHIFT 16 |
---|
| 932 | + |
---|
| 933 | +#define SCALER5_POS2_WIDTH_MASK VC4_MASK(12, 0) |
---|
| 934 | +#define SCALER5_POS2_WIDTH_SHIFT 0 |
---|
955 | 935 | |
---|
956 | 936 | /* Color Space Conversion words. Some values are S2.8 signed |
---|
957 | 937 | * integers, except that the 2 integer bits map as {0x0: 0, 0x1: 1, |
---|
.. | .. |
---|
1037 | 1017 | #define SCALER_TILE_HEIGHT_MASK VC4_MASK(15, 0) |
---|
1038 | 1018 | #define SCALER_TILE_HEIGHT_SHIFT 0 |
---|
1039 | 1019 | |
---|
| 1020 | +/* Common PITCH0 fields */ |
---|
| 1021 | +#define SCALER_PITCH0_SINK_PIX_MASK VC4_MASK(31, 26) |
---|
| 1022 | +#define SCALER_PITCH0_SINK_PIX_SHIFT 26 |
---|
| 1023 | + |
---|
1040 | 1024 | /* PITCH0 fields for T-tiled. */ |
---|
1041 | 1025 | #define SCALER_PITCH0_TILE_WIDTH_L_MASK VC4_MASK(22, 16) |
---|
1042 | 1026 | #define SCALER_PITCH0_TILE_WIDTH_L_SHIFT 16 |
---|
1043 | 1027 | #define SCALER_PITCH0_TILE_LINE_DIR BIT(15) |
---|
1044 | 1028 | #define SCALER_PITCH0_TILE_INITIAL_LINE_DIR BIT(14) |
---|
1045 | 1029 | /* Y offset within a tile. */ |
---|
1046 | | -#define SCALER_PITCH0_TILE_Y_OFFSET_MASK VC4_MASK(13, 7) |
---|
1047 | | -#define SCALER_PITCH0_TILE_Y_OFFSET_SHIFT 7 |
---|
| 1030 | +#define SCALER_PITCH0_TILE_Y_OFFSET_MASK VC4_MASK(13, 8) |
---|
| 1031 | +#define SCALER_PITCH0_TILE_Y_OFFSET_SHIFT 8 |
---|
1048 | 1032 | #define SCALER_PITCH0_TILE_WIDTH_R_MASK VC4_MASK(6, 0) |
---|
1049 | 1033 | #define SCALER_PITCH0_TILE_WIDTH_R_SHIFT 0 |
---|
1050 | 1034 | |
---|