/* * Pack data mode: * 0 = Single data (16 bit needs to be padded to match the * interface data bit size). * 1 = Packeted left/right channel data into a single word.
*/ #define TEGRA20_SPDIF_CTRL_PACK (1 << 14)
/* * 00 = 16bit data * 01 = 20bit data * 10 = 24bit data * 11 = raw data
*/ #define TEGRA20_SPDIF_BIT_MODE_16BIT 0 #define TEGRA20_SPDIF_BIT_MODE_20BIT 1 #define TEGRA20_SPDIF_BIT_MODE_24BIT 2 #define TEGRA20_SPDIF_BIT_MODE_RAW 3
/* * Note: IS_P, IS_B, IS_C, and IS_U are sticky bits. Software must * write a 1 to the corresponding bit location to clear the status.
*/
/* * Receiver(RX) shifter is busy receiving data. * This bit is asserted when the receiver first locked onto the * preamble of the data stream after RX_EN is asserted. This bit is * deasserted when either, * (a) the end of a frame is reached after RX_EN is deeasserted, or * (b) the SPDIF data stream becomes inactive.
*/ #define TEGRA20_SPDIF_STATUS_RX_BSY (1 << 29)
/* * Transmitter(TX) shifter is busy transmitting data. * This bit is asserted when TX_EN is asserted. * This bit is deasserted when the end of a frame is reached after * TX_EN is deasserted.
*/ #define TEGRA20_SPDIF_STATUS_TX_BSY (1 << 28)
/* * TX is busy shifting out channel status. * This bit is asserted when both TX_EN and TC_EN are asserted and * data from CH_STA_TX_A register is loaded into the internal shifter. * This bit is deasserted when either, * (a) the end of a frame is reached after TX_EN is deasserted, or * (b) CH_STA_TX_F register is loaded into the internal shifter.
*/ #define TEGRA20_SPDIF_STATUS_TC_BSY (1 << 27)
/* * TX User data FIFO busy. * This bit is asserted when TX_EN and TXU_EN are asserted and * there's data in the TX user FIFO. This bit is deassert when either, * (a) the end of a frame is reached after TX_EN is deasserted, or * (b) there's no data left in the TX user FIFO.
*/ #define TEGRA20_SPDIF_STATUS_TU_BSY (1 << 26)
/* * RX channel block data receive status: * 0=entire block not recieved yet. * 1=received entire block of channel status,
*/ #define TEGRA20_SPDIF_STATUS_IS_C (1 << 21)
/* RX User Data Valid flag: 1=valid IU detected, 0 = no IU detected. */ #define TEGRA20_SPDIF_STATUS_IS_U (1 << 20)
/* * RX User FIFO Status: * 1=attention level reached, 0=attention level not reached.
*/ #define TEGRA20_SPDIF_STATUS_QS_RU (1 << 19)
/* * TX User FIFO Status: * 1=attention level reached, 0=attention level not reached.
*/ #define TEGRA20_SPDIF_STATUS_QS_TU (1 << 18)
/* * RX Data FIFO Status: * 1=attention level reached, 0=attention level not reached.
*/ #define TEGRA20_SPDIF_STATUS_QS_RX (1 << 17)
/* * TX Data FIFO Status: * 1=attention level reached, 0=attention level not reached.
*/ #define TEGRA20_SPDIF_STATUS_QS_TX (1 << 16)
/* Fields in TEGRA20_SPDIF_STROBE_CTRL */
/* * Indicates the approximate number of detected SPDIFIN clocks within a * bi-phase period.
*/ #define TEGRA20_SPDIF_STROBE_CTRL_PERIOD_SHIFT 16 #define TEGRA20_SPDIF_STROBE_CTRL_PERIOD_MASK (0xff << TEGRA20_SPDIF_STROBE_CTRL_PERIOD_SHIFT)
/* * Manual data strobe time within the bi-phase clock period (in terms of * the number of over-sampling clocks).
*/ #define TEGRA20_SPDIF_STROBE_CTRL_DATA_STROBES_SHIFT 8 #define TEGRA20_SPDIF_STROBE_CTRL_DATA_STROBES_MASK (0x1f << TEGRA20_SPDIF_STROBE_CTRL_DATA_STROBES_SHIFT)
/* * Manual SPDIFIN bi-phase clock period (in terms of the number of * over-sampling clocks).
*/ #define TEGRA20_SPDIF_STROBE_CTRL_CLOCK_PERIOD_SHIFT 0 #define TEGRA20_SPDIF_STROBE_CTRL_CLOCK_PERIOD_MASK (0x3f << TEGRA20_SPDIF_STROBE_CTRL_CLOCK_PERIOD_SHIFT)
/* Number of TX USR.FIFO levels that could be filled. */ #define TEGRA20_SPDIF_DATA_FIFO_CSR_TU_EMPTY_COUNT_SHIFT 16 #define TEGRA20_SPDIF_DATA_FIFO_CSR_TU_EMPTY_COUNT_MASK (0x1f << SPDIF_DATA_FIFO_CSR_TU_EMPTY_COUNT_SHIFT)
/* Number of TX DATA.FIFO levels that could be filled. */ #define TEGRA20_SPDIF_DATA_FIFO_CSR_TX_EMPTY_COUNT_SHIFT 0 #define TEGRA20_SPDIF_DATA_FIFO_CSR_TX_EMPTY_COUNT_MASK (0x1f << SPDIF_DATA_FIFO_CSR_TX_EMPTY_COUNT_SHIFT)
/* Fields in TEGRA20_SPDIF_DATA_OUT */
/* * This register has 5 different formats: * 16-bit (BIT_MODE=00, PACK=0) * 20-bit (BIT_MODE=01, PACK=0) * 24-bit (BIT_MODE=10, PACK=0) * raw (BIT_MODE=11, PACK=0) * 16-bit packed (BIT_MODE=00, PACK=1)
*/
/* Fields in TEGRA20_SPDIF_CH_STA_RX_A */ /* Fields in TEGRA20_SPDIF_CH_STA_RX_B */ /* Fields in TEGRA20_SPDIF_CH_STA_RX_C */ /* Fields in TEGRA20_SPDIF_CH_STA_RX_D */ /* Fields in TEGRA20_SPDIF_CH_STA_RX_E */ /* Fields in TEGRA20_SPDIF_CH_STA_RX_F */
/* * The 6-word receive channel data page buffer holds a block (192 frames) of * channel status information. The order of receive is from LSB to MSB * bit, and from CH_STA_RX_A to CH_STA_RX_F then back to CH_STA_RX_A.
*/
/* Fields in TEGRA20_SPDIF_CH_STA_TX_A */ /* Fields in TEGRA20_SPDIF_CH_STA_TX_B */ /* Fields in TEGRA20_SPDIF_CH_STA_TX_C */ /* Fields in TEGRA20_SPDIF_CH_STA_TX_D */ /* Fields in TEGRA20_SPDIF_CH_STA_TX_E */ /* Fields in TEGRA20_SPDIF_CH_STA_TX_F */
/* * The 6-word transmit channel data page buffer holds a block (192 frames) of * channel status information. The order of transmission is from LSB to MSB * bit, and from CH_STA_TX_A to CH_STA_TX_F then back to CH_STA_TX_A.
*/
/* Fields in TEGRA20_SPDIF_USR_STA_RX_A */
/* * This 4-word deep FIFO receives user FIFO field information. The order of * receive is from LSB to MSB bit.
*/
/* Fields in TEGRA20_SPDIF_USR_DAT_TX_A */
/* * This 4-word deep FIFO transmits user FIFO field information. The order of * transmission is from LSB to MSB bit.
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.