| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright (C) 2014 Freescale Semiconductor, Inc. |
| * |
| */ |
| |
| #ifndef MXC_VADC_H |
| #define MXC_VADC_H |
| |
| /*** define base address ***/ |
| #define VDEC_BASE vdec_regbase |
| #define AFE_BASE vafe_regbase |
| |
| /* AFE - Register offsets */ |
| #define AFE_BLOCK_ID_OFFSET 0x00000000 |
| #define AFE_PDBUF_OFFSET 0x00000004 |
| #define AFE_SWRST_OFFSET 0x00000008 |
| #define AFE_TSTSEL_OFFSET 0x0000000c |
| #define AFE_TSTMSC_OFFSET 0x00000010 |
| #define AFE_ENPADIO_OFFSET 0x00000014 |
| #define AFE_BGREG_OFFSET 0x00000018 |
| #define AFE_ACCESSAR_ID_OFFSET 0x00000400 |
| #define AFE_PDADC_OFFSET 0x00000404 |
| #define AFE_PDSARH_OFFSET 0x00000408 |
| #define AFE_PDSARL_OFFSET 0x0000040C |
| #define AFE_PDADCRFH_OFFSET 0x00000410 |
| #define AFE_PDADCRFL_OFFSET 0x00000414 |
| #define AFE_ACCTST_OFFSET 0x00000418 |
| #define AFE_ADCGN_OFFSET 0x0000041C |
| #define AFE_ICTRL_OFFSET 0x00000420 |
| #define AFE_ICTLSTG_OFFSET 0x00000424 |
| #define AFE_RCTRLSTG_OFFSET 0x00000428 |
| #define AFE_TCTRLSTG_OFFSET 0x0000042c |
| #define AFE_REFMOD_OFFSET 0x00000430 |
| #define AFE_REFTRIML_OFFSET 0x00000434 |
| #define AFE_REFTRIMH_OFFSET 0x00000438 |
| #define AFE_ADCR_OFFSET 0x0000043c |
| #define AFE_DUMMY0_OFFSET 0x00000440 |
| #define AFE_DUMMY1_OFFSET 0x00000444 |
| #define AFE_DUMMY2_OFFSET 0x00000448 |
| #define AFE_DACAMP_OFFSET 0x0000044c |
| #define AFE_CLMPTST_OFFSET 0x00000450 |
| #define AFE_CLMPDAT_OFFSET 0x00000454 |
| #define AFE_CLMPAMP_OFFSET 0x00000458 |
| #define AFE_CLAMP_OFFSET 0x0000045c |
| #define AFE_INPBUF_OFFSET 0x00000460 |
| #define AFE_INPFLT_OFFSET 0x00000464 |
| #define AFE_ADCDGN_OFFSET 0x00000468 |
| #define AFE_OFFDRV_OFFSET 0x0000046c |
| #define AFE_INPCONFIG_OFFSET 0x00000470 |
| #define AFE_PROGDELAY_OFFSET 0x00000474 |
| #define AFE_ADCOMT_OFFSET 0x00000478 |
| #define AFE_ALGDELAY_OFFSET 0x0000047c |
| #define AFE_ACC_ID_OFFSET 0x00000800 |
| #define AFE_ACCSTA_OFFSET 0x00000804 |
| #define AFE_ACCNOSLI_OFFSET 0x00000808 |
| #define AFE_ACCCALCON_OFFSET 0x0000080c |
| #define AFE_BWEWRICTRL_OFFSET 0x00000810 |
| #define AFE_SELSLI_OFFSET 0x00000814 |
| #define AFE_SELBYT_OFFSET 0x00000818 |
| #define AFE_REDVAL_OFFSET 0x00000820 |
| #define AFE_WRIBYT_OFFSET 0x00000824 |
| |
| /* AFE Register per module */ |
| #define AFE_BLOCK_ID (AFE_BASE + AFE_BLOCK_ID_OFFSET) |
| #define AFE_PDBUF (AFE_BASE + AFE_PDBUF_OFFSET) |
| #define AFE_SWRST (AFE_BASE + AFE_SWRST_OFFSET) |
| #define AFE_TSTSEL (AFE_BASE + AFE_TSTSEL_OFFSET) |
| #define AFE_TSTMSC (AFE_BASE + AFE_TSTMSC_OFFSET) |
| #define AFE_ENPADIO (AFE_BASE + AFE_ENPADIO_OFFSET) |
| #define AFE_BGREG (AFE_BASE + AFE_BGREG_OFFSET) |
| #define AFE_ACCESSAR_ID (AFE_BASE + AFE_ACCESSAR_ID_OFFSET) |
| #define AFE_PDADC (AFE_BASE + AFE_PDADC_OFFSET) |
| #define AFE_PDSARH (AFE_BASE + AFE_PDSARH_OFFSET) |
| #define AFE_PDSARL (AFE_BASE + AFE_PDSARL_OFFSET) |
| #define AFE_PDADCRFH (AFE_BASE + AFE_PDADCRFH_OFFSET) |
| #define AFE_PDADCRFL (AFE_BASE + AFE_PDADCRFL_OFFSET) |
| #define AFE_ACCTST (AFE_BASE + AFE_ACCTST_OFFSET) |
| #define AFE_ADCGN (AFE_BASE + AFE_ADCGN_OFFSET) |
| #define AFE_ICTRL (AFE_BASE + AFE_ICTRL_OFFSET) |
| #define AFE_ICTLSTG (AFE_BASE + AFE_ICTLSTG_OFFSET) |
| #define AFE_RCTRLSTG (AFE_BASE + AFE_RCTRLSTG_OFFSET) |
| #define AFE_TCTRLSTG (AFE_BASE + AFE_TCTRLSTG_OFFSET) |
| #define AFE_REFMOD (AFE_BASE + AFE_REFMOD_OFFSET) |
| #define AFE_REFTRIML (AFE_BASE + AFE_REFTRIML_OFFSET) |
| #define AFE_REFTRIMH (AFE_BASE + AFE_REFTRIMH_OFFSET) |
| #define AFE_ADCR (AFE_BASE + AFE_ADCR_OFFSET) |
| #define AFE_DUMMY0 (AFE_BASE + AFE_DUMMY0_OFFSET) |
| #define AFE_DUMMY1 (AFE_BASE + AFE_DUMMY1_OFFSET) |
| #define AFE_DUMMY2 (AFE_BASE + AFE_DUMMY2_OFFSET) |
| #define AFE_DACAMP (AFE_BASE + AFE_DACAMP_OFFSET) |
| #define AFE_CLMPTST (AFE_BASE + AFE_CLMPTST_OFFSET) |
| #define AFE_CLMPDAT (AFE_BASE + AFE_CLMPDAT_OFFSET) |
| #define AFE_CLMPAMP (AFE_BASE + AFE_CLMPAMP_OFFSET) |
| #define AFE_CLAMP (AFE_BASE + AFE_CLAMP_OFFSET) |
| #define AFE_INPBUF (AFE_BASE + AFE_INPBUF_OFFSET) |
| #define AFE_INPFLT (AFE_BASE + AFE_INPFLT_OFFSET) |
| #define AFE_ADCDGN (AFE_BASE + AFE_ADCDGN_OFFSET) |
| #define AFE_OFFDRV (AFE_BASE + AFE_OFFDRV_OFFSET) |
| #define AFE_INPCONFIG (AFE_BASE + AFE_INPCONFIG_OFFSET) |
| #define AFE_PROGDELAY (AFE_BASE + AFE_PROGDELAY_OFFSET) |
| #define AFE_ADCOMT (AFE_BASE + AFE_ADCOMT_OFFSET) |
| #define AFE_ALGDELAY (AFE_BASE + AFE_ALGDELAY_OFFSET) |
| #define AFE_ACC_ID (AFE_BASE + AFE_ACC_ID_OFFSET) |
| #define AFE_ACCSTA (AFE_BASE + AFE_ACCSTA_OFFSET) |
| #define AFE_ACCNOSLI (AFE_BASE + AFE_ACCNOSLI_OFFSET) |
| #define AFE_ACCCALCON (AFE_BASE + AFE_ACCCALCON_OFFSET) |
| #define AFE_BWEWRICTRL (AFE_BASE + AFE_BWEWRICTRL_OFFSET) |
| #define AFE_SELSLI (AFE_BASE + AFE_SELSLI_OFFSET) |
| #define AFE_SELBYT (AFE_BASE + AFE_SELBYT_OFFSET) |
| #define AFE_REDVAL (AFE_BASE + AFE_REDVAL_OFFSET) |
| #define AFE_WRIBYT (AFE_BASE + AFE_WRIBYT_OFFSET) |
| |
| /* VDEC - Register offsets */ |
| #define VDEC_CFC1_OFFSET 0x00000000 |
| #define VDEC_CFC2_OFFSET 0x00000004 |
| #define VDEC_BRSTGT_OFFSET 0x00000024 |
| #define VDEC_HZPOS_OFFSET 0x00000040 |
| #define VDEC_VRTPOS_OFFSET 0x00000044 |
| #define VDEC_HVSHIFT_OFFSET 0x00000054 |
| #define VDEC_HSIGS_OFFSET 0x00000058 |
| #define VDEC_HSIGE_OFFSET 0x0000005C |
| #define VDEC_VSCON1_OFFSET 0x00000060 |
| #define VDEC_VSCON2_OFFSET 0x00000064 |
| #define VDEC_YCDEL_OFFSET 0x0000006C |
| #define VDEC_AFTCLP_OFFSET 0x00000070 |
| #define VDEC_DCOFF_OFFSET 0x00000078 |
| #define VDEC_CSID_OFFSET 0x00000084 |
| #define VDEC_CBGN_OFFSET 0x00000088 |
| #define VDEC_CRGN_OFFSET 0x0000008C |
| #define VDEC_CNTR_OFFSET 0x00000090 |
| #define VDEC_BRT_OFFSET 0x00000094 |
| #define VDEC_HUE_OFFSET 0x00000098 |
| #define VDEC_CHBTH_OFFSET 0x0000009C |
| #define VDEC_SHPIMP_OFFSET 0x000000A4 |
| #define VDEC_CHPLLIM_OFFSET 0x000000A8 |
| #define VDEC_VIDMOD_OFFSET 0x000000AC |
| #define VDEC_VIDSTS_OFFSET 0x000000B0 |
| #define VDEC_NOISE_OFFSET 0x000000B4 |
| #define VDEC_STDDBG_OFFSET 0x000000B8 |
| #define VDEC_MANOVR_OFFSET 0x000000BC |
| #define VDEC_VSSGTH_OFFSET 0x000000C8 |
| #define VDEC_DBGFBH_OFFSET 0x000000D0 |
| #define VDEC_DBGFBL_OFFSET 0x000000D4 |
| #define VDEC_HACTS_OFFSET 0x000000D8 |
| #define VDEC_HACTE_OFFSET 0x000000DC |
| #define VDEC_VACTS_OFFSET 0x000000E0 |
| #define VDEC_VACTE_OFFSET 0x000000E4 |
| #define VDEC_HSTIP_OFFSET 0x000000EC |
| #define VDEC_BLSCRY_OFFSET 0x000000F4 |
| #define VDEC_BLSCRCR_OFFSET 0x000000F8 |
| #define VDEC_BLSCRCB_OFFSET 0x000000FC |
| #define VDEC_LMAGC2_OFFSET 0x00000104 |
| #define VDEC_CHAGC1_OFFSET 0x00000108 |
| #define VDEC_CHAGC2_OFFSET 0x0000010C |
| #define VDEC_MINTH_OFFSET 0x00000114 |
| #define VDEC_VFRQOH_OFFSET 0x0000011C |
| #define VDEC_VFRQOL_OFFSET 0x00000120 |
| #define VDEC_THSH1_OFFSET 0x00000124 |
| #define VDEC_THSH2_OFFSET 0x00000128 |
| #define VDEC_NCHTH_OFFSET 0x0000012C |
| #define VDEC_TH1F_OFFSET 0x00000130 |
| |
| /* VDEC Register per module */ |
| #define VDEC_CFC1 (VDEC_BASE + VDEC_CFC1_OFFSET) |
| #define VDEC_CFC2 (VDEC_BASE + VDEC_CFC2_OFFSET) |
| #define VDEC_BRSTGT (VDEC_BASE + VDEC_BRSTGT_OFFSET) |
| #define VDEC_HZPOS (VDEC_BASE + VDEC_HZPOS_OFFSET) |
| #define VDEC_VRTPOS (VDEC_BASE + VDEC_VRTPOS_OFFSET) |
| #define VDEC_HVSHIFT (VDEC_BASE + VDEC_HVSHIFT_OFFSET) |
| #define VDEC_HSIGS (VDEC_BASE + VDEC_HSIGS_OFFSET) |
| #define VDEC_HSIGE (VDEC_BASE + VDEC_HSIGE_OFFSET) |
| #define VDEC_VSCON1 (VDEC_BASE + VDEC_VSCON1_OFFSET) |
| #define VDEC_VSCON2 (VDEC_BASE + VDEC_VSCON2_OFFSET) |
| #define VDEC_YCDEL (VDEC_BASE + VDEC_YCDEL_OFFSET) |
| #define VDEC_AFTCLP (VDEC_BASE + VDEC_AFTCLP_OFFSET) |
| #define VDEC_DCOFF (VDEC_BASE + VDEC_DCOFF_OFFSET) |
| #define VDEC_CSID (VDEC_BASE + VDEC_CSID_OFFSET) |
| #define VDEC_CBGN (VDEC_BASE + VDEC_CBGN_OFFSET) |
| #define VDEC_CRGN (VDEC_BASE + VDEC_CRGN_OFFSET) |
| #define VDEC_CNTR (VDEC_BASE + VDEC_CNTR_OFFSET) |
| #define VDEC_BRT (VDEC_BASE + VDEC_BRT_OFFSET) |
| #define VDEC_HUE (VDEC_BASE + VDEC_HUE_OFFSET) |
| #define VDEC_CHBTH (VDEC_BASE + VDEC_CHBTH_OFFSET) |
| #define VDEC_SHPIMP (VDEC_BASE + VDEC_SHPIMP_OFFSET) |
| #define VDEC_CHPLLIM (VDEC_BASE + VDEC_CHPLLIM_OFFSET) |
| #define VDEC_VIDMOD (VDEC_BASE + VDEC_VIDMOD_OFFSET) |
| #define VDEC_VIDSTS (VDEC_BASE + VDEC_VIDSTS_OFFSET) |
| #define VDEC_NOISE (VDEC_BASE + VDEC_NOISE_OFFSET) |
| #define VDEC_STDDBG (VDEC_BASE + VDEC_STDDBG_OFFSET) |
| #define VDEC_MANOVR (VDEC_BASE + VDEC_MANOVR_OFFSET) |
| #define VDEC_VSSGTH (VDEC_BASE + VDEC_VSSGTH_OFFSET) |
| #define VDEC_DBGFBH (VDEC_BASE + VDEC_DBGFBH_OFFSET) |
| #define VDEC_DBGFBL (VDEC_BASE + VDEC_DBGFBL_OFFSET) |
| #define VDEC_HACTS (VDEC_BASE + VDEC_HACTS_OFFSET) |
| #define VDEC_HACTE (VDEC_BASE + VDEC_HACTE_OFFSET) |
| #define VDEC_VACTS (VDEC_BASE + VDEC_VACTS_OFFSET) |
| #define VDEC_VACTE (VDEC_BASE + VDEC_VACTE_OFFSET) |
| #define VDEC_HSTIP (VDEC_BASE + VDEC_HSTIP_OFFSET) |
| #define VDEC_BLSCRY (VDEC_BASE + VDEC_BLSCRY_OFFSET) |
| #define VDEC_BLSCRCR (VDEC_BASE + VDEC_BLSCRCR_OFFSET) |
| #define VDEC_BLSCRCB (VDEC_BASE + VDEC_BLSCRCB_OFFSET) |
| #define VDEC_LMAGC2 (VDEC_BASE + VDEC_LMAGC2_OFFSET) |
| #define VDEC_CHAGC1 (VDEC_BASE + VDEC_CHAGC1_OFFSET) |
| #define VDEC_CHAGC2 (VDEC_BASE + VDEC_CHAGC2_OFFSET) |
| #define VDEC_MINTH (VDEC_BASE + VDEC_MINTH_OFFSET) |
| #define VDEC_VFRQOH (VDEC_BASE + VDEC_VFRQOH_OFFSET) |
| #define VDEC_VFRQOL (VDEC_BASE + VDEC_VFRQOL_OFFSET) |
| #define VDEC_THSH1 (VDEC_BASE + VDEC_THSH1_OFFSET) |
| #define VDEC_THSH2 (VDEC_BASE + VDEC_THSH2_OFFSET) |
| #define VDEC_NCHTH (VDEC_BASE + VDEC_NCHTH_OFFSET) |
| #define VDEC_TH1F (VDEC_BASE + VDEC_TH1F_OFFSET) |
| |
| #define VDEC_VIDMOD_M625_SHIFT 4 |
| #define VDEC_VIDMOD_M625_MASK (1 << VDEC_VIDMOD_M625_SHIFT) |
| |
| #define VDEC_VIDMOD_PAL_SHIFT 7 |
| #define VDEC_VIDMOD_PAL_MASK (1 << VDEC_VIDMOD_PAL_SHIFT) |
| |
| struct sensor_data { |
| u32 width; |
| u32 height; |
| u32 pixel_fmt; |
| u32 std_id; |
| }; |
| |
| void vadc_config(u32 vadc_in); |
| void vadc_get_std(struct sensor_data *vadc); |
| |
| #endif |