Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/soc/codecs/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 10 kB image not shown  

Quelle  rt1318.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * rt1318.h -- Platform data for RT1318
 *
 * Copyright 2024 Realtek Semiconductor Corp.
 */

#include <sound/rt1318.h>

#ifndef __RT1318_H__
#define __RT1318_H__

struct rt1318_priv {
 struct snd_soc_component *component;
 struct rt1318_platform_data pdata;
 struct work_struct cali_work;
 struct regmap *regmap;

 unsigned int r0_l_integer;
 unsigned int r0_l_factor;
 unsigned int r0_r_integer;
 unsigned int r0_r_factor;
 int rt1318_init;
 int rt1318_dvol;
 int sysclk_src;
 int sysclk;
 int lrck;
 int bclk;
 int master;
 int pll_src;
 int pll_in;
 int pll_out;
};

#define RT1318_PLL_INP_MAX 40000000
#define RT1318_PLL_INP_MIN 256000
#define RT1318_PLL_N_MAX 0x1ff
#define RT1318_PLL_K_MAX 0x1f
#define RT1318_PLL_M_MAX 0x1f

#define RT1318_LRCLK_192000 192000
#define RT1318_LRCLK_96000 96000
#define RT1318_LRCLK_48000 48000
#define RT1318_LRCLK_44100 44100
#define RT1318_LRCLK_16000 16000
#define RT1318_DVOL_STEP 383

#define RT1318_CLK1    0xc001
#define RT1318_CLK2    0xc003
#define RT1318_CLK3    0xc004
#define RT1318_CLK4    0xc005
#define RT1318_CLK5    0xc006
#define RT1318_CLK6    0xc007
#define RT1318_CLK7    0xc008
#define RT1318_PWR_STA1    0xc121
#define RT1318_SPK_VOL_TH   0xc130
#define RT1318_TCON    0xc203
#define RT1318_SRC_TCON    0xc204
#define RT1318_TCON_RELATE   0xc206
#define RT1318_DA_VOL_L_8   0xc20b
#define RT1318_DA_VOL_L_1_7   0xc20c
#define RT1318_DA_VOL_R_8   0xc20d
#define RT1318_DA_VOL_R_1_7   0xc20e
#define RT1318_FEEDBACK_PATH   0xc321
#define RT1318_STP_TEMP_L   0xdb00
#define RT1318_STP_SEL_L   0xdb08
#define RT1318_STP_R0_EN_L   0xdb12
#define RT1318_R0_CMP_L_FLAG   0xdb35
#define RT1318_PRE_R0_L_24   0xdbb5
#define RT1318_PRE_R0_L_23_16   0xdbb6
#define RT1318_PRE_R0_L_15_8   0xdbb7
#define RT1318_PRE_R0_L_7_0   0xdbb8
#define RT1318_R0_L_24    0xdbc5
#define RT1318_R0_L_23_16   0xdbc6
#define RT1318_R0_L_15_8   0xdbc7
#define RT1318_R0_L_7_0    0xdbc8
#define RT1318_STP_SEL_R   0xdd08
#define RT1318_STP_R0_EN_R   0xdd12
#define RT1318_R0_CMP_R_FLAG   0xdd35
#define RT1318_PRE_R0_R_24   0xddb5
#define RT1318_PRE_R0_R_23_16   0xddb6
#define RT1318_PRE_R0_R_15_8   0xddb7
#define RT1318_PRE_R0_R_7_0   0xddb8
#define RT1318_R0_R_24    0xddc5
#define RT1318_R0_R_23_16   0xddc6
#define RT1318_R0_R_15_8   0xddc7
#define RT1318_R0_R_7_0    0xddc8
#define RT1318_DEV_ID1    0xf012
#define RT1318_DEV_ID2    0xf013
#define RT1318_PLL1_K    0xf20d
#define RT1318_PLL1_M    0xf20f
#define RT1318_PLL1_N_8    0xf211
#define RT1318_PLL1_N_7_0   0xf212
#define RT1318_SINE_GEN0   0xf800
#define RT1318_TDM_CTRL1   0xf900
#define RT1318_TDM_CTRL2   0xf901
#define RT1318_TDM_CTRL3   0xf902
#define RT1318_TDM_CTRL9   0xf908


/* Clock-1  (0xC001) */
#define RT1318_PLLIN_MASK   (0x7 << 4)
#define RT1318_PLLIN_BCLK0   (0x0 << 4)
#define RT1318_PLLIN_BCLK1   (0x1 << 4)
#define RT1318_PLLIN_RC    (0x2 << 4)
#define RT1318_PLLIN_MCLK   (0x3 << 4)
#define RT1318_PLLIN_SDW1   (0x4 << 4)
#define RT1318_PLLIN_SDW2   (0x5 << 4)
#define RT1318_PLLIN_SDW3   (0x6 << 4)
#define RT1318_PLLIN_SDW4   (0x7 << 4)
#define RT1318_SYSCLK_SEL_MASK   (0x7 << 0)
#define RT1318_SYSCLK_BCLK   (0x0 << 0)
#define RT1318_SYSCLK_SDW   (0x1 << 0)
#define RT1318_SYSCLK_PLL2F   (0x2 << 0)
#define RT1318_SYSCLK_PLL2B   (0x3 << 0)
#define RT1318_SYSCLK_MCLK   (0x4 << 0)
#define RT1318_SYSCLK_RC1   (0x5 << 0)
#define RT1318_SYSCLK_RC2   (0x6 << 0)
#define RT1318_SYSCLK_RC3   (0x7 << 0)
/* Clock-2  (0xC003) */
#define RT1318_DIV_AP_MASK   (0x3 << 4)
#define RT1318_DIV_AP_SFT   4
#define RT1318_DIV_AP_DIV1   (0x0 << 4)
#define RT1318_DIV_AP_DIV2   (0x1 << 4)
#define RT1318_DIV_AP_DIV4   (0x2 << 4)
#define RT1318_DIV_AP_DIV8   (0x3 << 4)
#define RT1318_DIV_DAMOD_MASK   (0x3 << 0)
#define RT1318_DIV_DAMOD_SFT   0
#define RT1318_DIV_DAMOD_DIV1   (0x0 << 0)
#define RT1318_DIV_DAMOD_DIV2   (0x1 << 0)
#define RT1318_DIV_DAMOD_DIV4   (0x2 << 0)
#define RT1318_DIV_DAMOD_DIV8   (0x3 << 0)
/* Clock-3  (0xC004) */
#define RT1318_AD_STO1_MASK   (0x7 << 4)
#define RT1318_AD_STO1_SFT   4
#define RT1318_AD_STO1_DIV1   (0x0 << 4)
#define RT1318_AD_STO1_DIV2   (0x1 << 4)
#define RT1318_AD_STO1_DIV4   (0x2 << 4)
#define RT1318_AD_STO1_DIV8   (0x3 << 4)
#define RT1318_AD_STO1_DIV16   (0x4 << 4)
#define RT1318_AD_STO2_MASK   (0x7 << 0)
#define RT1318_AD_STO2_SFT   0
#define RT1318_AD_STO2_DIV1   (0x0 << 0)
#define RT1318_AD_STO2_DIV2   (0x1 << 0)
#define RT1318_AD_STO2_DIV4   (0x2 << 0)
#define RT1318_AD_STO2_DIV8   (0x3 << 0)
#define RT1318_AD_STO2_DIV16   (0x4 << 0)
#define RT1318_AD_STO2_SFT   0
/* Clock-4  (0xC005) */
#define RT1318_AD_ANA_STO1_MASK   (0x7 << 4)
#define RT1318_AD_ANA_STO1_SFT   4
#define RT1318_AD_ANA_STO1_DIV1   (0x0 << 4)
#define RT1318_AD_ANA_STO1_DIV2   (0x1 << 4)
#define RT1318_AD_ANA_STO1_DIV4   (0x2 << 4)
#define RT1318_AD_ANA_STO1_DIV8   (0x3 << 4)
#define RT1318_AD_ANA_STO1_DIV16  (0x4 << 4)
#define RT1318_AD_ANA_STO2_MASK   (0x7 << 0)
#define RT1318_AD_ANA_STO2_DIV1   (0x0 << 0)
#define RT1318_AD_ANA_STO2_DIV2   (0x1 << 0)
#define RT1318_AD_ANA_STO2_DIV4   (0x2 << 0)
#define RT1318_AD_ANA_STO2_DIV8   (0x3 << 0)
#define RT1318_AD_ANA_STO2_DIV16  (0x4 << 0)
#define RT1318_AD_ANA_STO2_SFT   0
/* Clock-5  (0xC006) */
#define RT1318_DIV_FIFO_IN_MASK   (0x3 << 4)
#define RT1318_DIV_FIFO_IN_SFT   4
#define RT1318_DIV_FIFO_IN_DIV1   (0x0 << 4)
#define RT1318_DIV_FIFO_IN_DIV2   (0x1 << 4)
#define RT1318_DIV_FIFO_IN_DIV4   (0x2 << 4)
#define RT1318_DIV_FIFO_IN_DIV8   (0x3 << 4)
#define RT1318_DIV_FIFO_OUT_MASK  (0x3 << 0)
#define RT1318_DIV_FIFO_OUT_DIV1  (0x0 << 0)
#define RT1318_DIV_FIFO_OUT_DIV2  (0x1 << 0)
#define RT1318_DIV_FIFO_OUT_DIV4  (0x2 << 0)
#define RT1318_DIV_FIFO_OUT_DIV8  (0x3 << 0)
#define RT1318_DIV_FIFO_OUT_SFT   0
/* Clock-6  (0xC007) */
#define RT1318_DIV_NLMS_MASK   (0x3 << 6)
#define RT1318_DIV_NLMS_SFT    6
#define RT1318_DIV_NLMS_DIV1   (0x0 << 6)
#define RT1318_DIV_NLMS_DIV2   (0x1 << 6)
#define RT1318_DIV_NLMS_DIV4   (0x2 << 6)
#define RT1318_DIV_NLMS_DIV8   (0x3 << 6)
#define RT1318_DIV_AD_MONO_MASK   (0x7 << 3)
#define RT1318_DIV_AD_MONO_SFT   3
#define RT1318_DIV_AD_MONO_DIV1   (0x0 << 3)
#define RT1318_DIV_AD_MONO_DIV2   (0x1 << 3)
#define RT1318_DIV_AD_MONO_DIV4   (0x2 << 3)
#define RT1318_DIV_AD_MONO_DIV8   (0x3 << 3)
#define RT1318_DIV_AD_MONO_DIV16  (0x4 << 3)
#define RT1318_DIV_POST_G_MASK   (0x7 << 0)
#define RT1318_DIV_POST_G_SFT   0
#define RT1318_DIV_POST_G_DIV1   (0x0 << 0)
#define RT1318_DIV_POST_G_DIV2   (0x1 << 0)
#define RT1318_DIV_POST_G_DIV4   (0x2 << 0)
#define RT1318_DIV_POST_G_DIV8   (0x3 << 0)
#define RT1318_DIV_POST_G_DIV16   (0x4 << 0)
/* Power Status 1  (0xC121) */
#define RT1318_PDB_CTRL_MASK   (0x1)
#define RT1318_PDB_CTRL_LOW   (0x0)
#define RT1318_PDB_CTRL_HIGH   (0x1)
#define RT1318_PDB_CTRL_SFT   0
/* SRC Tcon(0xc204) */
#define RT1318_SRCIN_IN_SEL_MASK  (0x3 << 6)
#define RT1318_SRCIN_IN_48K   (0x0 << 6)
#define RT1318_SRCIN_IN_44P1   (0x1 << 6)
#define RT1318_SRCIN_IN_32K   (0x2 << 6)
#define RT1318_SRCIN_IN_16K   (0x3 << 6)
#define RT1318_SRCIN_F12288_MASK  (0x3 << 4)
#define RT1318_SRCIN_TCON1   (0x0 << 4)
#define RT1318_SRCIN_TCON2   (0x1 << 4)
#define RT1318_SRCIN_TCON4   (0x2 << 4)
#define RT1318_SRCIN_TCON8   (0x3 << 4)
#define RT1318_SRCIN_DACLK_MASK   (0x3 << 2)
#define RT1318_DACLK_TCON1   (0x0 << 2)
#define RT1318_DACLK_TCON2   (0x1 << 2)
#define RT1318_DACLK_TCON4   (0x2 << 2)
#define RT1318_DACLK_TCON8   (0x3 << 2)
/* R0 Compare Flag  (0xDB35) */
#define RT1318_R0_RANGE_MASK   (0x1)
#define RT1318_R0_OUTOFRANGE   (0x0)
#define RT1318_R0_INRANGE   (0x1)
/* PLL internal setting (0xF20D), K value */
#define RT1318_K_PLL1_MASK   (0x1f << 0)
/* PLL internal setting (0xF20F), M value */
#define RT1318_M_PLL1_MASK   (0x1f << 0)
/* PLL internal setting (0xF211), N_8 value */
#define RT1318_N_8_PLL1_MASK   (0x1 << 0)
/* PLL internal setting (0xF212), N_7_0 value */
#define RT1318_N_7_0_PLL1_MASK   (0xff << 0)
/* TDM CTRL 1  (0xf900) */
#define RT1318_TDM_BCLK_MASK   (0x1 << 7)
#define RT1318_TDM_BCLK_NORM   (0x0 << 7)
#define RT1318_TDM_BCLK_INV   (0x1 << 7)
#define RT1318_I2S_FMT_MASK   (0x7 << 0)
#define RT1318_FMT_I2S    (0x0 << 0)
#define RT1318_FMT_LEFT_J   (0x1 << 0)
#define RT1318_FMT_PCM_A_R   (0x2 << 0)
#define RT1318_FMT_PCM_B_R   (0x3 << 0)
#define RT1318_FMT_PCM_A_F   (0x6 << 0)
#define RT1318_FMT_PCM_B_F   (0x7 << 0)
#define RT1318_I2S_FMT_SFT   0
/* TDM CTRL 2  (0xf901) */
#define RT1318_I2S_CH_TX_MASK   (0x3 << 6)
#define RT1318_I2S_CH_TX_2CH   (0x0 << 6)
#define RT1318_I2S_CH_TX_4CH   (0x1 << 6)
#define RT1318_I2S_CH_TX_6CH   (0x2 << 6)
#define RT1318_I2S_CH_TX_8CH   (0x3 << 6)
#define RT1318_I2S_CH_RX_MASK   (0x3 << 4)
#define RT1318_I2S_CH_RX_2CH   (0x0 << 4)
#define RT1318_I2S_CH_RX_4CH   (0x1 << 4)
#define RT1318_I2S_CH_RX_6CH   (0x2 << 4)
#define RT1318_I2S_CH_RX_8CH   (0x3 << 4)
#define RT1318_I2S_DL_MASK   0x7
#define RT1318_I2S_DL_SFT   0
#define RT1318_I2S_DL_16   0x0
#define RT1318_I2S_DL_20   0x1
#define RT1318_I2S_DL_24   0x2
#define RT1318_I2S_DL_32   0x3
#define RT1318_I2S_DL_8    0x4
/* TDM CTRL 3  (0xf902) */
#define RT1318_I2S_TX_CHL_MASK   (0x7 << 4)
#define RT1318_I2S_TX_CHL_SFT   4
#define RT1318_I2S_TX_CHL_16   (0x0 << 4)
#define RT1318_I2S_TX_CHL_20   (0x1 << 4)
#define RT1318_I2S_TX_CHL_24   (0x2 << 4)
#define RT1318_I2S_TX_CHL_32   (0x3 << 4)
#define RT1318_I2S_TX_CHL_8   (0x4 << 4)
#define RT1318_I2S_RX_CHL_MASK   (0x7 << 0)
#define RT1318_I2S_RX_CHL_SFT   0
#define RT1318_I2S_RX_CHL_16   (0x0 << 0)
#define RT1318_I2S_RX_CHL_20   (0x1 << 0)
#define RT1318_I2S_RX_CHL_24   (0x2 << 0)
#define RT1318_I2S_RX_CHL_32   (0x3 << 0)
#define RT1318_I2S_RX_CHL_8   (0x4 << 0)
/* TDM CTRL 9  (0xf908) */
#define RT1318_TDM_I2S_TX_L_DAC1_1_MASK  (0x7 << 4)
#define RT1318_TDM_I2S_TX_R_DAC1_1_MASK  0x7
#define RT1318_TDM_I2S_TX_L_DAC1_1_SFT  4
#define RT1318_TDM_I2S_TX_R_DAC1_1_SFT  0

#define RT1318_REG_DISP_LEN 23

/* System Clock Source */
enum {
 RT1318_SCLK_S_BCLK,
 RT1318_SCLK_S_SDW,
 RT1318_SCLK_S_PLL2F,
 RT1318_SCLK_S_PLL2B,
 RT1318_SCLK_S_MCLK,
 RT1318_SCLK_S_RC0,
 RT1318_SCLK_S_RC1,
 RT1318_SCLK_S_RC2,
};

/* PLL Source */
enum {
 RT1318_PLL_S_BCLK0,
 RT1318_PLL_S_BCLK1,
 RT1318_PLL_S_RC,
 RT1318_PLL_S_MCLK,
 RT1318_PLL_S_SDW_IN_PLL,
 RT1318_PLL_S_SDW_0,
 RT1318_PLL_S_SDW_1,
 RT1318_PLL_S_SDW_2,
};

/* TDM channel */
enum {
 RT1318_2CH,
 RT1318_4CH,
 RT1318_6CH,
 RT1318_8CH,
};

/* R0 calibration result */
enum {
 RT1318_R0_OUT_OF_RANGE,
 RT1318_R0_IN_RANGE,
 RT1318_R0_CALIB_NOT_DONE,
};

/* PLL pre-defined M/N/K */

struct pll_calc_map {
 unsigned int pll_in;
 unsigned int pll_out;
 int k;
 int n;
 int m;
 bool m_bp;
 bool k_bp;
};

struct rt1318_pll_code {
 bool m_bp; /* Indicates bypass m code or not. */
 bool k_bp; /* Indicates bypass k code or not. */
 int m_code;
 int n_code;
 int k_code;
};

#endif /* __RT1318_H__ */

Messung V0.5
C=91 H=98 G=94

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.