cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

aio-reg.h (25289B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Socionext UniPhier AIO ALSA driver.
      4 *
      5 * Copyright (c) 2016-2018 Socionext Inc.
      6 */
      7
      8#ifndef SND_UNIPHIER_AIO_REG_H__
      9#define SND_UNIPHIER_AIO_REG_H__
     10
     11#include <linux/bitops.h>
     12
     13/* soc-glue */
     14#define SG_AOUTEN                       0x1c04
     15
     16/* SW view */
     17#define A2CHNMAPCTR0(n)                 (0x00000 + 0x40 * (n))
     18#define A2RBNMAPCTR0(n)                 (0x01000 + 0x40 * (n))
     19#define A2IPORTNMAPCTR0(n)              (0x02000 + 0x40 * (n))
     20#define A2IPORTNMAPCTR1(n)              (0x02004 + 0x40 * (n))
     21#define A2IIFNMAPCTR0(n)                (0x03000 + 0x40 * (n))
     22#define A2OPORTNMAPCTR0(n)              (0x04000 + 0x40 * (n))
     23#define A2OPORTNMAPCTR1(n)              (0x04004 + 0x40 * (n))
     24#define A2OPORTNMAPCTR2(n)              (0x04008 + 0x40 * (n))
     25#define A2OIFNMAPCTR0(n)                (0x05000 + 0x40 * (n))
     26#define A2ATNMAPCTR0(n)                 (0x06000 + 0x40 * (n))
     27
     28#define MAPCTR0_EN                      0x80000000
     29
     30/* CTL */
     31#define A2APLLCTR0                      0x07000
     32#define   A2APLLCTR0_APLLXPOW_MASK        GENMASK(3, 0)
     33#define   A2APLLCTR0_APLLXPOW_PWOFF       (0x0 << 0)
     34#define   A2APLLCTR0_APLLXPOW_PWON        (0xf << 0)
     35#define A2APLLCTR1                      0x07004
     36#define   A2APLLCTR1_APLLX_MASK           0x00010101
     37#define   A2APLLCTR1_APLLX_36MHZ          0x00000000
     38#define   A2APLLCTR1_APLLX_33MHZ          0x00000001
     39#define A2EXMCLKSEL0                    0x07030
     40#define   A2EXMCLKSEL0_EXMCLK_MASK        GENMASK(2, 0)
     41#define   A2EXMCLKSEL0_EXMCLK_OUTPUT      (0x0 << 0)
     42#define   A2EXMCLKSEL0_EXMCLK_INPUT       (0x7 << 0)
     43#define A2SSIFSW                        0x07050
     44#define A2CH22_2CTR                     0x07054
     45#define A2AIOINPUTSEL                   0x070e0
     46#define   A2AIOINPUTSEL_RXSEL_PCMI1_MASK      GENMASK(2, 0)
     47#define   A2AIOINPUTSEL_RXSEL_PCMI1_HDMIRX1   (0x2 << 0)
     48#define   A2AIOINPUTSEL_RXSEL_PCMI2_MASK      GENMASK(6, 4)
     49#define   A2AIOINPUTSEL_RXSEL_PCMI2_SIF       (0x7 << 4)
     50#define   A2AIOINPUTSEL_RXSEL_PCMI3_MASK      GENMASK(10, 8)
     51#define   A2AIOINPUTSEL_RXSEL_PCMI3_EVEA      (0x1 << 8)
     52#define   A2AIOINPUTSEL_RXSEL_IECI1_MASK      GENMASK(14, 12)
     53#define   A2AIOINPUTSEL_RXSEL_IECI1_HDMIRX1   (0x2 << 12)
     54#define   A2AIOINPUTSEL_RXSEL_MASK        (A2AIOINPUTSEL_RXSEL_PCMI1_MASK | \
     55					   A2AIOINPUTSEL_RXSEL_PCMI2_MASK | \
     56					   A2AIOINPUTSEL_RXSEL_PCMI3_MASK | \
     57					   A2AIOINPUTSEL_RXSEL_IECI1_HDMIRX1)
     58
     59/* INTC */
     60#define INTCHIM(m)                       (0x9028 + 0x80 * (m))
     61#define INTRBIM(m)                       (0x9030 + 0x80 * (m))
     62#define INTCHID(m)                       (0xa028 + 0x80 * (m))
     63#define INTRBID(m)                       (0xa030 + 0x80 * (m))
     64
     65/* AIN(PCMINN) */
     66#define IPORTMXCTR1(n)                   (0x22000 + 0x400 * (n))
     67#define   IPORTMXCTR1_LRSEL_MASK           GENMASK(11, 10)
     68#define   IPORTMXCTR1_LRSEL_RIGHT          (0x0 << 10)
     69#define   IPORTMXCTR1_LRSEL_LEFT           (0x1 << 10)
     70#define   IPORTMXCTR1_LRSEL_I2S            (0x2 << 10)
     71#define   IPORTMXCTR1_OUTBITSEL_MASK       (0x800003U << 8)
     72#define   IPORTMXCTR1_OUTBITSEL_32         (0x800000U << 8)
     73#define   IPORTMXCTR1_OUTBITSEL_24         (0x000000U << 8)
     74#define   IPORTMXCTR1_OUTBITSEL_20         (0x000001U << 8)
     75#define   IPORTMXCTR1_OUTBITSEL_16         (0x000002U << 8)
     76#define   IPORTMXCTR1_CHSEL_MASK           GENMASK(6, 4)
     77#define   IPORTMXCTR1_CHSEL_ALL            (0x0 << 4)
     78#define   IPORTMXCTR1_CHSEL_D0_D2          (0x1 << 4)
     79#define   IPORTMXCTR1_CHSEL_D0             (0x2 << 4)
     80#define   IPORTMXCTR1_CHSEL_D1             (0x3 << 4)
     81#define   IPORTMXCTR1_CHSEL_D2             (0x4 << 4)
     82#define   IPORTMXCTR1_CHSEL_DMIX           (0x5 << 4)
     83#define   IPORTMXCTR1_FSSEL_MASK           GENMASK(3, 0)
     84#define   IPORTMXCTR1_FSSEL_48             (0x0 << 0)
     85#define   IPORTMXCTR1_FSSEL_96             (0x1 << 0)
     86#define   IPORTMXCTR1_FSSEL_192            (0x2 << 0)
     87#define   IPORTMXCTR1_FSSEL_32             (0x3 << 0)
     88#define   IPORTMXCTR1_FSSEL_44_1           (0x4 << 0)
     89#define   IPORTMXCTR1_FSSEL_88_2           (0x5 << 0)
     90#define   IPORTMXCTR1_FSSEL_176_4          (0x6 << 0)
     91#define   IPORTMXCTR1_FSSEL_16             (0x8 << 0)
     92#define   IPORTMXCTR1_FSSEL_22_05          (0x9 << 0)
     93#define   IPORTMXCTR1_FSSEL_24             (0xa << 0)
     94#define   IPORTMXCTR1_FSSEL_8              (0xb << 0)
     95#define   IPORTMXCTR1_FSSEL_11_025         (0xc << 0)
     96#define   IPORTMXCTR1_FSSEL_12             (0xd << 0)
     97#define IPORTMXCTR2(n)                   (0x22004 + 0x400 * (n))
     98#define   IPORTMXCTR2_ACLKSEL_MASK         GENMASK(19, 16)
     99#define   IPORTMXCTR2_ACLKSEL_A1           (0x0 << 16)
    100#define   IPORTMXCTR2_ACLKSEL_F1           (0x1 << 16)
    101#define   IPORTMXCTR2_ACLKSEL_A2           (0x2 << 16)
    102#define   IPORTMXCTR2_ACLKSEL_F2           (0x3 << 16)
    103#define   IPORTMXCTR2_ACLKSEL_A2PLL        (0x4 << 16)
    104#define   IPORTMXCTR2_ACLKSEL_RX1          (0x5 << 16)
    105#define   IPORTMXCTR2_ACLKSEL_RX2          (0x6 << 16)
    106#define   IPORTMXCTR2_MSSEL_MASK           BIT(15)
    107#define   IPORTMXCTR2_MSSEL_SLAVE          (0x0 << 15)
    108#define   IPORTMXCTR2_MSSEL_MASTER         (0x1 << 15)
    109#define   IPORTMXCTR2_EXTLSIFSSEL_MASK     BIT(14)
    110#define   IPORTMXCTR2_EXTLSIFSSEL_36       (0x0 << 14)
    111#define   IPORTMXCTR2_EXTLSIFSSEL_24       (0x1 << 14)
    112#define   IPORTMXCTR2_DACCKSEL_MASK        GENMASK(9, 8)
    113#define   IPORTMXCTR2_DACCKSEL_1_2         (0x0 << 8)
    114#define   IPORTMXCTR2_DACCKSEL_1_3         (0x1 << 8)
    115#define   IPORTMXCTR2_DACCKSEL_1_1         (0x2 << 8)
    116#define   IPORTMXCTR2_DACCKSEL_2_3         (0x3 << 8)
    117#define   IPORTMXCTR2_REQEN_MASK           BIT(0)
    118#define   IPORTMXCTR2_REQEN_DISABLE        (0x0 << 0)
    119#define   IPORTMXCTR2_REQEN_ENABLE         (0x1 << 0)
    120#define IPORTMXCNTCTR(n)                 (0x22010 + 0x400 * (n))
    121#define IPORTMXCOUNTER(n)                (0x22014 + 0x400 * (n))
    122#define IPORTMXCNTMONI(n)                (0x22018 + 0x400 * (n))
    123#define IPORTMXACLKSEL0EX(n)             (0x22020 + 0x400 * (n))
    124#define   IPORTMXACLKSEL0EX_ACLKSEL0EX_MASK        GENMASK(3, 0)
    125#define   IPORTMXACLKSEL0EX_ACLKSEL0EX_INTERNAL    (0x0 << 0)
    126#define   IPORTMXACLKSEL0EX_ACLKSEL0EX_EXTERNAL    (0xf << 0)
    127#define IPORTMXEXNOE(n)                  (0x22070 + 0x400 * (n))
    128#define   IPORTMXEXNOE_PCMINOE_MASK        BIT(0)
    129#define   IPORTMXEXNOE_PCMINOE_OUTPUT      (0x0 << 0)
    130#define   IPORTMXEXNOE_PCMINOE_INPUT       (0x1 << 0)
    131#define IPORTMXMASK(n)                   (0x22078 + 0x400 * (n))
    132#define   IPORTMXMASK_IUXCKMSK_MASK        GENMASK(18, 16)
    133#define   IPORTMXMASK_IUXCKMSK_ON          (0x0 << 16)
    134#define   IPORTMXMASK_IUXCKMSK_OFF         (0x7 << 16)
    135#define   IPORTMXMASK_XCKMSK_MASK          GENMASK(2, 0)
    136#define   IPORTMXMASK_XCKMSK_ON            (0x0 << 0)
    137#define   IPORTMXMASK_XCKMSK_OFF           (0x7 << 0)
    138#define IPORTMXRSTCTR(n)                 (0x2207c + 0x400 * (n))
    139#define   IPORTMXRSTCTR_RSTPI_MASK         BIT(7)
    140#define   IPORTMXRSTCTR_RSTPI_RELEASE      (0x0 << 7)
    141#define   IPORTMXRSTCTR_RSTPI_RESET        (0x1 << 7)
    142
    143/* AIN(PBinMX) */
    144#define PBINMXCTR(n)                     (0x20200 + 0x40 * (n))
    145#define   PBINMXCTR_NCONNECT_MASK          BIT(15)
    146#define   PBINMXCTR_NCONNECT_CONNECT       (0x0 << 15)
    147#define   PBINMXCTR_NCONNECT_DISCONNECT    (0x1 << 15)
    148#define   PBINMXCTR_INOUTSEL_MASK          BIT(14)
    149#define   PBINMXCTR_INOUTSEL_IN            (0x0 << 14)
    150#define   PBINMXCTR_INOUTSEL_OUT           (0x1 << 14)
    151#define   PBINMXCTR_PBINSEL_SHIFT          (8)
    152#define   PBINMXCTR_ENDIAN_MASK            GENMASK(5, 4)
    153#define   PBINMXCTR_ENDIAN_3210            (0x0 << 4)
    154#define   PBINMXCTR_ENDIAN_0123            (0x1 << 4)
    155#define   PBINMXCTR_ENDIAN_1032            (0x2 << 4)
    156#define   PBINMXCTR_ENDIAN_2301            (0x3 << 4)
    157#define   PBINMXCTR_MEMFMT_MASK            GENMASK(3, 0)
    158#define   PBINMXCTR_MEMFMT_D0              (0x0 << 0)
    159#define   PBINMXCTR_MEMFMT_5_1CH_DMIX      (0x1 << 0)
    160#define   PBINMXCTR_MEMFMT_6CH             (0x2 << 0)
    161#define   PBINMXCTR_MEMFMT_4CH             (0x3 << 0)
    162#define   PBINMXCTR_MEMFMT_DMIX            (0x4 << 0)
    163#define   PBINMXCTR_MEMFMT_1CH             (0x5 << 0)
    164#define   PBINMXCTR_MEMFMT_16LR            (0x6 << 0)
    165#define   PBINMXCTR_MEMFMT_7_1CH           (0x7 << 0)
    166#define   PBINMXCTR_MEMFMT_7_1CH_DMIX      (0x8 << 0)
    167#define   PBINMXCTR_MEMFMT_STREAM          (0xf << 0)
    168#define PBINMXPAUSECTR0(n)               (0x20204 + 0x40 * (n))
    169#define PBINMXPAUSECTR1(n)               (0x20208 + 0x40 * (n))
    170
    171/* AOUT */
    172#define AOUTFADECTR0                     0x40020
    173#define AOUTENCTR0                       0x40040
    174#define AOUTENCTR1                       0x40044
    175#define AOUTENCTR2                       0x40048
    176#define AOUTRSTCTR0                      0x40060
    177#define AOUTRSTCTR1                      0x40064
    178#define AOUTRSTCTR2                      0x40068
    179#define AOUTSRCRSTCTR0                   0x400c0
    180#define AOUTSRCRSTCTR1                   0x400c4
    181#define AOUTSRCRSTCTR2                   0x400c8
    182
    183/* AOUT PCMOUT has 5 slots, slot0-3: D0-3, slot4: DMIX */
    184#define OPORT_SLOT_MAX                     5
    185
    186/* AOUT(PCMOUTN) */
    187#define OPORTMXCTR1(n)                   (0x42000 + 0x400 * (n))
    188#define   OPORTMXCTR1_I2SLRSEL_MASK        (0x11 << 10)
    189#define   OPORTMXCTR1_I2SLRSEL_RIGHT       (0x00 << 10)
    190#define   OPORTMXCTR1_I2SLRSEL_LEFT        (0x01 << 10)
    191#define   OPORTMXCTR1_I2SLRSEL_I2S         (0x11 << 10)
    192#define   OPORTMXCTR1_OUTBITSEL_MASK       (0x800003U << 8)
    193#define   OPORTMXCTR1_OUTBITSEL_32         (0x800000U << 8)
    194#define   OPORTMXCTR1_OUTBITSEL_24         (0x000000U << 8)
    195#define   OPORTMXCTR1_OUTBITSEL_20         (0x000001U << 8)
    196#define   OPORTMXCTR1_OUTBITSEL_16         (0x000002U << 8)
    197#define   OPORTMXCTR1_FSSEL_MASK           GENMASK(3, 0)
    198#define   OPORTMXCTR1_FSSEL_48             (0x0 << 0)
    199#define   OPORTMXCTR1_FSSEL_96             (0x1 << 0)
    200#define   OPORTMXCTR1_FSSEL_192            (0x2 << 0)
    201#define   OPORTMXCTR1_FSSEL_32             (0x3 << 0)
    202#define   OPORTMXCTR1_FSSEL_44_1           (0x4 << 0)
    203#define   OPORTMXCTR1_FSSEL_88_2           (0x5 << 0)
    204#define   OPORTMXCTR1_FSSEL_176_4          (0x6 << 0)
    205#define   OPORTMXCTR1_FSSEL_16             (0x8 << 0)
    206#define   OPORTMXCTR1_FSSEL_22_05          (0x9 << 0)
    207#define   OPORTMXCTR1_FSSEL_24             (0xa << 0)
    208#define   OPORTMXCTR1_FSSEL_8              (0xb << 0)
    209#define   OPORTMXCTR1_FSSEL_11_025         (0xc << 0)
    210#define   OPORTMXCTR1_FSSEL_12             (0xd << 0)
    211#define OPORTMXCTR2(n)                   (0x42004 + 0x400 * (n))
    212#define   OPORTMXCTR2_ACLKSEL_MASK         GENMASK(19, 16)
    213#define   OPORTMXCTR2_ACLKSEL_A1           (0x0 << 16)
    214#define   OPORTMXCTR2_ACLKSEL_F1           (0x1 << 16)
    215#define   OPORTMXCTR2_ACLKSEL_A2           (0x2 << 16)
    216#define   OPORTMXCTR2_ACLKSEL_F2           (0x3 << 16)
    217#define   OPORTMXCTR2_ACLKSEL_A2PLL        (0x4 << 16)
    218#define   OPORTMXCTR2_ACLKSEL_RX1          (0x5 << 16)
    219#define   OPORTMXCTR2_ACLKSEL_RX2          (0x6 << 16)
    220#define   OPORTMXCTR2_MSSEL_MASK           BIT(15)
    221#define   OPORTMXCTR2_MSSEL_SLAVE          (0x0 << 15)
    222#define   OPORTMXCTR2_MSSEL_MASTER         (0x1 << 15)
    223#define   OPORTMXCTR2_EXTLSIFSSEL_MASK     BIT(14)
    224#define   OPORTMXCTR2_EXTLSIFSSEL_36       (0x0 << 14)
    225#define   OPORTMXCTR2_EXTLSIFSSEL_24       (0x1 << 14)
    226#define   OPORTMXCTR2_DACCKSEL_MASK        GENMASK(9, 8)
    227#define   OPORTMXCTR2_DACCKSEL_1_2         (0x0 << 8)
    228#define   OPORTMXCTR2_DACCKSEL_1_3         (0x1 << 8)
    229#define   OPORTMXCTR2_DACCKSEL_1_1         (0x2 << 8)
    230#define   OPORTMXCTR2_DACCKSEL_2_3         (0x3 << 8)
    231#define OPORTMXCTR3(n)                   (0x42008 + 0x400 * (n))
    232#define   OPORTMXCTR3_IECTHUR_MASK         BIT(19)
    233#define   OPORTMXCTR3_IECTHUR_IECOUT       (0x0 << 19)
    234#define   OPORTMXCTR3_IECTHUR_IECIN        (0x1 << 19)
    235#define   OPORTMXCTR3_SRCSEL_MASK          GENMASK(18, 16)
    236#define   OPORTMXCTR3_SRCSEL_PCM           (0x0 << 16)
    237#define   OPORTMXCTR3_SRCSEL_STREAM        (0x1 << 16)
    238#define   OPORTMXCTR3_SRCSEL_CDDTS         (0x2 << 16)
    239#define   OPORTMXCTR3_VALID_MASK           BIT(12)
    240#define   OPORTMXCTR3_VALID_PCM            (0x0 << 12)
    241#define   OPORTMXCTR3_VALID_STREAM         (0x1 << 12)
    242#define   OPORTMXCTR3_PMSEL_MASK           BIT(3)
    243#define   OPORTMXCTR3_PMSEL_MUTE           (0x0 << 3)
    244#define   OPORTMXCTR3_PMSEL_PAUSE          (0x1 << 3)
    245#define   OPORTMXCTR3_PMSW_MASK            BIT(2)
    246#define   OPORTMXCTR3_PMSW_MUTE_OFF        (0x0 << 2)
    247#define   OPORTMXCTR3_PMSW_MUTE_ON         (0x1 << 2)
    248#define OPORTMXSRC1CTR(n)                (0x4200c + 0x400 * (n))
    249#define   OPORTMXSRC1CTR_FSIIPNUM_SHIFT    (24)
    250#define   OPORTMXSRC1CTR_THMODE_MASK       BIT(23)
    251#define   OPORTMXSRC1CTR_THMODE_SRC        (0x0 << 23)
    252#define   OPORTMXSRC1CTR_THMODE_BYPASS     (0x1 << 23)
    253#define   OPORTMXSRC1CTR_LOCK_MASK         BIT(16)
    254#define   OPORTMXSRC1CTR_LOCK_UNLOCK       (0x0 << 16)
    255#define   OPORTMXSRC1CTR_LOCK_LOCK         (0x1 << 16)
    256#define   OPORTMXSRC1CTR_SRCPATH_MASK      BIT(15)
    257#define   OPORTMXSRC1CTR_SRCPATH_BYPASS    (0x0 << 15)
    258#define   OPORTMXSRC1CTR_SRCPATH_CALC      (0x1 << 15)
    259#define   OPORTMXSRC1CTR_SYNC_MASK         BIT(14)
    260#define   OPORTMXSRC1CTR_SYNC_ASYNC        (0x0 << 14)
    261#define   OPORTMXSRC1CTR_SYNC_SYNC         (0x1 << 14)
    262#define   OPORTMXSRC1CTR_FSOCK_MASK        GENMASK(11, 10)
    263#define   OPORTMXSRC1CTR_FSOCK_44_1        (0x0 << 10)
    264#define   OPORTMXSRC1CTR_FSOCK_48          (0x1 << 10)
    265#define   OPORTMXSRC1CTR_FSOCK_32          (0x2 << 10)
    266#define   OPORTMXSRC1CTR_FSICK_MASK        GENMASK(9, 8)
    267#define   OPORTMXSRC1CTR_FSICK_44_1        (0x0 << 8)
    268#define   OPORTMXSRC1CTR_FSICK_48          (0x1 << 8)
    269#define   OPORTMXSRC1CTR_FSICK_32          (0x2 << 8)
    270#define   OPORTMXSRC1CTR_FSIIPSEL_MASK     GENMASK(5, 4)
    271#define   OPORTMXSRC1CTR_FSIIPSEL_INNER    (0x0 << 4)
    272#define   OPORTMXSRC1CTR_FSIIPSEL_OUTER    (0x1 << 4)
    273#define   OPORTMXSRC1CTR_FSISEL_MASK       GENMASK(3, 0)
    274#define   OPORTMXSRC1CTR_FSISEL_ACLK       (0x0 << 0)
    275#define   OPORTMXSRC1CTR_FSISEL_DD         (0x1 << 0)
    276#define OPORTMXDSDMUTEDAT(n)             (0x42020 + 0x400 * (n))
    277#define OPORTMXDXDFREQMODE(n)            (0x42024 + 0x400 * (n))
    278#define OPORTMXDSDSEL(n)                 (0x42028 + 0x400 * (n))
    279#define OPORTMXDSDPORT(n)                (0x4202c + 0x400 * (n))
    280#define OPORTMXACLKSEL0EX(n)             (0x42030 + 0x400 * (n))
    281#define OPORTMXPATH(n)                   (0x42040 + 0x400 * (n))
    282#define OPORTMXSYNC(n)                   (0x42044 + 0x400 * (n))
    283#define OPORTMXREPET(n)                  (0x42050 + 0x400 * (n))
    284#define   OPORTMXREPET_STRLENGTH_AC3       SBF_(IEC61937_FRM_STR_AC3, 16)
    285#define   OPORTMXREPET_STRLENGTH_MPA       SBF_(IEC61937_FRM_STR_MPA, 16)
    286#define   OPORTMXREPET_STRLENGTH_MP3       SBF_(IEC61937_FRM_STR_MP3, 16)
    287#define   OPORTMXREPET_STRLENGTH_DTS1      SBF_(IEC61937_FRM_STR_DTS1, 16)
    288#define   OPORTMXREPET_STRLENGTH_DTS2      SBF_(IEC61937_FRM_STR_DTS2, 16)
    289#define   OPORTMXREPET_STRLENGTH_DTS3      SBF_(IEC61937_FRM_STR_DTS3, 16)
    290#define   OPORTMXREPET_STRLENGTH_AAC       SBF_(IEC61937_FRM_STR_AAC, 16)
    291#define   OPORTMXREPET_PMLENGTH_AC3        SBF_(IEC61937_FRM_PAU_AC3, 0)
    292#define   OPORTMXREPET_PMLENGTH_MPA        SBF_(IEC61937_FRM_PAU_MPA, 0)
    293#define   OPORTMXREPET_PMLENGTH_MP3        SBF_(IEC61937_FRM_PAU_MP3, 0)
    294#define   OPORTMXREPET_PMLENGTH_DTS1       SBF_(IEC61937_FRM_PAU_DTS1, 0)
    295#define   OPORTMXREPET_PMLENGTH_DTS2       SBF_(IEC61937_FRM_PAU_DTS2, 0)
    296#define   OPORTMXREPET_PMLENGTH_DTS3       SBF_(IEC61937_FRM_PAU_DTS3, 0)
    297#define   OPORTMXREPET_PMLENGTH_AAC        SBF_(IEC61937_FRM_PAU_AAC, 0)
    298#define OPORTMXPAUDAT(n)                 (0x42054 + 0x400 * (n))
    299#define   OPORTMXPAUDAT_PAUSEPC_CMN        (IEC61937_PC_PAUSE << 16)
    300#define   OPORTMXPAUDAT_PAUSEPD_AC3        (IEC61937_FRM_PAU_AC3 * 4)
    301#define   OPORTMXPAUDAT_PAUSEPD_MPA        (IEC61937_FRM_PAU_MPA * 4)
    302#define   OPORTMXPAUDAT_PAUSEPD_MP3        (IEC61937_FRM_PAU_MP3 * 4)
    303#define   OPORTMXPAUDAT_PAUSEPD_DTS1       (IEC61937_FRM_PAU_DTS1 * 4)
    304#define   OPORTMXPAUDAT_PAUSEPD_DTS2       (IEC61937_FRM_PAU_DTS2 * 4)
    305#define   OPORTMXPAUDAT_PAUSEPD_DTS3       (IEC61937_FRM_PAU_DTS3 * 4)
    306#define   OPORTMXPAUDAT_PAUSEPD_AAC        (IEC61937_FRM_PAU_AAC * 4)
    307#define OPORTMXRATE_I(n)                 (0x420e4 + 0x400 * (n))
    308#define   OPORTMXRATE_I_EQU_MASK           BIT(31)
    309#define   OPORTMXRATE_I_EQU_NOTEQUAL       (0x0 << 31)
    310#define   OPORTMXRATE_I_EQU_EQUAL          (0x1 << 31)
    311#define   OPORTMXRATE_I_SRCBPMD_MASK       BIT(29)
    312#define   OPORTMXRATE_I_SRCBPMD_BYPASS     (0x0 << 29)
    313#define   OPORTMXRATE_I_SRCBPMD_SRC        (0x1 << 29)
    314#define   OPORTMXRATE_I_LRCKSTP_MASK       BIT(24)
    315#define   OPORTMXRATE_I_LRCKSTP_START      (0x0 << 24)
    316#define   OPORTMXRATE_I_LRCKSTP_STOP       (0x1 << 24)
    317#define   OPORTMXRATE_I_ACLKSRC_MASK       GENMASK(15, 12)
    318#define   OPORTMXRATE_I_ACLKSRC_APLL       (0x0 << 12)
    319#define   OPORTMXRATE_I_ACLKSRC_USB        (0x1 << 12)
    320#define   OPORTMXRATE_I_ACLKSRC_HSC        (0x3 << 12)
    321/* if OPORTMXRATE_I_ACLKSRC_APLL */
    322#define   OPORTMXRATE_I_ACLKSEL_MASK       GENMASK(11, 8)
    323#define   OPORTMXRATE_I_ACLKSEL_APLLA1     (0x0 << 8)
    324#define   OPORTMXRATE_I_ACLKSEL_APLLF1     (0x1 << 8)
    325#define   OPORTMXRATE_I_ACLKSEL_APLLA2     (0x2 << 8)
    326#define   OPORTMXRATE_I_ACLKSEL_APLLF2     (0x3 << 8)
    327#define   OPORTMXRATE_I_ACLKSEL_APLL       (0x4 << 8)
    328#define   OPORTMXRATE_I_ACLKSEL_HDMI1      (0x5 << 8)
    329#define   OPORTMXRATE_I_ACLKSEL_HDMI2      (0x6 << 8)
    330#define   OPORTMXRATE_I_ACLKSEL_AI1ADCCK   (0xc << 8)
    331#define   OPORTMXRATE_I_ACLKSEL_AI2ADCCK   (0xd << 8)
    332#define   OPORTMXRATE_I_ACLKSEL_AI3ADCCK   (0xe << 8)
    333#define   OPORTMXRATE_I_MCKSEL_MASK        GENMASK(7, 4)
    334#define   OPORTMXRATE_I_MCKSEL_36          (0x0 << 4)
    335#define   OPORTMXRATE_I_MCKSEL_33          (0x1 << 4)
    336#define   OPORTMXRATE_I_MCKSEL_HSC27       (0xb << 4)
    337#define   OPORTMXRATE_I_FSSEL_MASK         GENMASK(3, 0)
    338#define   OPORTMXRATE_I_FSSEL_48           (0x0 << 0)
    339#define   OPORTMXRATE_I_FSSEL_96           (0x1 << 0)
    340#define   OPORTMXRATE_I_FSSEL_192          (0x2 << 0)
    341#define   OPORTMXRATE_I_FSSEL_32           (0x3 << 0)
    342#define   OPORTMXRATE_I_FSSEL_44_1         (0x4 << 0)
    343#define   OPORTMXRATE_I_FSSEL_88_2         (0x5 << 0)
    344#define   OPORTMXRATE_I_FSSEL_176_4        (0x6 << 0)
    345#define   OPORTMXRATE_I_FSSEL_16           (0x8 << 0)
    346#define   OPORTMXRATE_I_FSSEL_22_05        (0x9 << 0)
    347#define   OPORTMXRATE_I_FSSEL_24           (0xa << 0)
    348#define   OPORTMXRATE_I_FSSEL_8            (0xb << 0)
    349#define   OPORTMXRATE_I_FSSEL_11_025       (0xc << 0)
    350#define   OPORTMXRATE_I_FSSEL_12           (0xd << 0)
    351#define OPORTMXEXNOE(n)                  (0x420f0 + 0x400 * (n))
    352#define OPORTMXMASK(n)                   (0x420f8 + 0x400 * (n))
    353#define   OPORTMXMASK_IUDXMSK_MASK         GENMASK(28, 24)
    354#define   OPORTMXMASK_IUDXMSK_ON           (0x00 << 24)
    355#define   OPORTMXMASK_IUDXMSK_OFF          (0x1f << 24)
    356#define   OPORTMXMASK_IUXCKMSK_MASK        GENMASK(18, 16)
    357#define   OPORTMXMASK_IUXCKMSK_ON          (0x0 << 16)
    358#define   OPORTMXMASK_IUXCKMSK_OFF         (0x7 << 16)
    359#define   OPORTMXMASK_DXMSK_MASK           GENMASK(12, 8)
    360#define   OPORTMXMASK_DXMSK_ON             (0x00 << 8)
    361#define   OPORTMXMASK_DXMSK_OFF            (0x1f << 8)
    362#define   OPORTMXMASK_XCKMSK_MASK          GENMASK(2, 0)
    363#define   OPORTMXMASK_XCKMSK_ON            (0x0 << 0)
    364#define   OPORTMXMASK_XCKMSK_OFF           (0x7 << 0)
    365#define OPORTMXDEBUG(n)                  (0x420fc + 0x400 * (n))
    366#define OPORTMXTYVOLPARA1(n, m)          (0x42100 + 0x400 * (n) + 0x20 * (m))
    367#define   OPORTMXTYVOLPARA1_SLOPEU_MASK    GENMASK(31, 16)
    368#define OPORTMXTYVOLPARA2(n, m)          (0x42104 + 0x400 * (n) + 0x20 * (m))
    369#define   OPORTMXTYVOLPARA2_FADE_MASK      GENMASK(17, 16)
    370#define   OPORTMXTYVOLPARA2_FADE_NOOP      (0x0 << 16)
    371#define   OPORTMXTYVOLPARA2_FADE_FADEOUT   (0x1 << 16)
    372#define   OPORTMXTYVOLPARA2_FADE_FADEIN    (0x2 << 16)
    373#define   OPORTMXTYVOLPARA2_TARGET_MASK    GENMASK(15, 0)
    374#define OPORTMXTYVOLGAINSTATUS(n, m)     (0x42108 + 0x400 * (n) + 0x20 * (m))
    375#define   OPORTMXTYVOLGAINSTATUS_CUR_MASK  GENMASK(15, 0)
    376#define OPORTMXTYSLOTCTR(n, m)           (0x42114 + 0x400 * (n) + 0x20 * (m))
    377#define   OPORTMXTYSLOTCTR_MODE            BIT(15)
    378#define   OPORTMXTYSLOTCTR_SLOTSEL_MASK    GENMASK(11, 8)
    379#define   OPORTMXTYSLOTCTR_SLOTSEL_SLOT0   (0x8 << 8)
    380#define   OPORTMXTYSLOTCTR_SLOTSEL_SLOT1   (0x9 << 8)
    381#define   OPORTMXTYSLOTCTR_SLOTSEL_SLOT2   (0xa << 8)
    382#define   OPORTMXTYSLOTCTR_SLOTSEL_SLOT3   (0xb << 8)
    383#define   OPORTMXTYSLOTCTR_SLOTSEL_SLOT4   (0xc << 8)
    384#define   OPORTMXT0SLOTCTR_MUTEOFF_MASK    BIT(1)
    385#define   OPORTMXT0SLOTCTR_MUTEOFF_MUTE    (0x0 << 1)
    386#define   OPORTMXT0SLOTCTR_MUTEOFF_UNMUTE  (0x1 << 1)
    387#define OPORTMXTYRSTCTR(n, m)            (0x4211c + 0x400 * (n) + 0x20 * (m))
    388#define   OPORTMXT0RSTCTR_RST_MASK         BIT(1)
    389#define   OPORTMXT0RSTCTR_RST_OFF          (0x0 << 1)
    390#define   OPORTMXT0RSTCTR_RST_ON           (0x1 << 1)
    391
    392#define SBF_(frame, shift)    (((frame) * 2 - 1) << shift)
    393
    394/* AOUT(PBoutMX) */
    395#define PBOUTMXCTR0(n)                   (0x40200 + 0x40 * (n))
    396#define   PBOUTMXCTR0_ENDIAN_MASK         GENMASK(5, 4)
    397#define   PBOUTMXCTR0_ENDIAN_3210         (0x0 << 4)
    398#define   PBOUTMXCTR0_ENDIAN_0123         (0x1 << 4)
    399#define   PBOUTMXCTR0_ENDIAN_1032         (0x2 << 4)
    400#define   PBOUTMXCTR0_ENDIAN_2301         (0x3 << 4)
    401#define   PBOUTMXCTR0_MEMFMT_MASK         GENMASK(3, 0)
    402#define   PBOUTMXCTR0_MEMFMT_10CH         (0x0 << 0)
    403#define   PBOUTMXCTR0_MEMFMT_8CH          (0x1 << 0)
    404#define   PBOUTMXCTR0_MEMFMT_6CH          (0x2 << 0)
    405#define   PBOUTMXCTR0_MEMFMT_4CH          (0x3 << 0)
    406#define   PBOUTMXCTR0_MEMFMT_2CH          (0x4 << 0)
    407#define   PBOUTMXCTR0_MEMFMT_STREAM       (0x5 << 0)
    408#define   PBOUTMXCTR0_MEMFMT_1CH          (0x6 << 0)
    409#define PBOUTMXCTR1(n)                   (0x40204 + 0x40 * (n))
    410#define PBOUTMXINTCTR(n)                 (0x40208 + 0x40 * (n))
    411
    412/* A2D(subsystem) */
    413#define CDA2D_STRT0                      0x10000
    414#define   CDA2D_STRT0_STOP_MASK            BIT(31)
    415#define   CDA2D_STRT0_STOP_START           (0x0 << 31)
    416#define   CDA2D_STRT0_STOP_STOP            (0x1 << 31)
    417#define CDA2D_STAT0                      0x10020
    418#define CDA2D_TEST                       0x100a0
    419#define   CDA2D_TEST_DDR_MODE_MASK         GENMASK(3, 2)
    420#define   CDA2D_TEST_DDR_MODE_EXTON0       (0x0 << 2)
    421#define   CDA2D_TEST_DDR_MODE_EXTOFF1      (0x3 << 2)
    422#define CDA2D_STRTADRSLOAD               0x100b0
    423
    424#define CDA2D_CHMXCTRL1(n)               (0x12000 + 0x80 * (n))
    425#define   CDA2D_CHMXCTRL1_INDSIZE_MASK     BIT(0)
    426#define   CDA2D_CHMXCTRL1_INDSIZE_FINITE   (0x0 << 0)
    427#define   CDA2D_CHMXCTRL1_INDSIZE_INFINITE (0x1 << 0)
    428#define CDA2D_CHMXCTRL2(n)               (0x12004 + 0x80 * (n))
    429#define CDA2D_CHMXSRCAMODE(n)            (0x12020 + 0x80 * (n))
    430#define CDA2D_CHMXDSTAMODE(n)            (0x12024 + 0x80 * (n))
    431#define   CDA2D_CHMXAMODE_ENDIAN_MASK      GENMASK(17, 16)
    432#define   CDA2D_CHMXAMODE_ENDIAN_3210      (0x0 << 16)
    433#define   CDA2D_CHMXAMODE_ENDIAN_0123      (0x1 << 16)
    434#define   CDA2D_CHMXAMODE_ENDIAN_1032      (0x2 << 16)
    435#define   CDA2D_CHMXAMODE_ENDIAN_2301      (0x3 << 16)
    436#define   CDA2D_CHMXAMODE_RSSEL_SHIFT      (8)
    437#define   CDA2D_CHMXAMODE_AUPDT_MASK       GENMASK(5, 4)
    438#define   CDA2D_CHMXAMODE_AUPDT_INC        (0x0 << 4)
    439#define   CDA2D_CHMXAMODE_AUPDT_FIX        (0x2 << 4)
    440#define   CDA2D_CHMXAMODE_TYPE_MASK        GENMASK(3, 2)
    441#define   CDA2D_CHMXAMODE_TYPE_NORMAL      (0x0 << 2)
    442#define   CDA2D_CHMXAMODE_TYPE_RING        (0x1 << 2)
    443#define CDA2D_CHMXSRCSTRTADRS(n)         (0x12030 + 0x80 * (n))
    444#define CDA2D_CHMXSRCSTRTADRSU(n)        (0x12034 + 0x80 * (n))
    445#define CDA2D_CHMXDSTSTRTADRS(n)         (0x12038 + 0x80 * (n))
    446#define CDA2D_CHMXDSTSTRTADRSU(n)        (0x1203c + 0x80 * (n))
    447
    448/* A2D(ring buffer) */
    449#define CDA2D_RBFLUSH0                   0x10040
    450#define CDA2D_RBADRSLOAD                 0x100b4
    451#define CDA2D_RDPTRLOAD                  0x100b8
    452#define   CDA2D_RDPTRLOAD_LSFLAG_LOAD      (0x0 << 31)
    453#define   CDA2D_RDPTRLOAD_LSFLAG_STORE     (0x1 << 31)
    454#define CDA2D_WRPTRLOAD                  0x100bc
    455#define   CDA2D_WRPTRLOAD_LSFLAG_LOAD      (0x0 << 31)
    456#define   CDA2D_WRPTRLOAD_LSFLAG_STORE     (0x1 << 31)
    457
    458#define CDA2D_RBMXBGNADRS(n)             (0x14000 + 0x80 * (n))
    459#define CDA2D_RBMXBGNADRSU(n)            (0x14004 + 0x80 * (n))
    460#define CDA2D_RBMXENDADRS(n)             (0x14008 + 0x80 * (n))
    461#define CDA2D_RBMXENDADRSU(n)            (0x1400c + 0x80 * (n))
    462#define CDA2D_RBMXBTH(n)                 (0x14038 + 0x80 * (n))
    463#define CDA2D_RBMXRTH(n)                 (0x1403c + 0x80 * (n))
    464#define CDA2D_RBMXRDPTR(n)               (0x14020 + 0x80 * (n))
    465#define CDA2D_RBMXRDPTRU(n)              (0x14024 + 0x80 * (n))
    466#define CDA2D_RBMXWRPTR(n)               (0x14028 + 0x80 * (n))
    467#define CDA2D_RBMXWRPTRU(n)              (0x1402c + 0x80 * (n))
    468#define   CDA2D_RBMXPTRU_PTRU_MASK         GENMASK(1, 0)
    469#define CDA2D_RBMXCNFG(n)                (0x14030 + 0x80 * (n))
    470#define CDA2D_RBMXIR(n)                  (0x14014 + 0x80 * (n))
    471#define CDA2D_RBMXIE(n)                  (0x14018 + 0x80 * (n))
    472#define CDA2D_RBMXID(n)                  (0x1401c + 0x80 * (n))
    473#define   CDA2D_RBMXIX_SPACE               BIT(3)
    474#define   CDA2D_RBMXIX_REMAIN              BIT(4)
    475
    476#endif /* SND_UNIPHIER_AIO_REG_H__ */