162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Rockchip PDM ALSA SoC Digital Audio Interface(DAI) driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2017 Fuzhou Rockchip Electronics Co., Ltd 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef _ROCKCHIP_PDM_H 962306a36Sopenharmony_ci#define _ROCKCHIP_PDM_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/* PDM REGS */ 1262306a36Sopenharmony_ci#define PDM_SYSCONFIG (0x0000) 1362306a36Sopenharmony_ci#define PDM_CTRL0 (0x0004) 1462306a36Sopenharmony_ci#define PDM_CTRL1 (0x0008) 1562306a36Sopenharmony_ci#define PDM_CLK_CTRL (0x000c) 1662306a36Sopenharmony_ci#define PDM_HPF_CTRL (0x0010) 1762306a36Sopenharmony_ci#define PDM_FIFO_CTRL (0x0014) 1862306a36Sopenharmony_ci#define PDM_DMA_CTRL (0x0018) 1962306a36Sopenharmony_ci#define PDM_INT_EN (0x001c) 2062306a36Sopenharmony_ci#define PDM_INT_CLR (0x0020) 2162306a36Sopenharmony_ci#define PDM_INT_ST (0x0024) 2262306a36Sopenharmony_ci#define PDM_RXFIFO_DATA (0x0030) 2362306a36Sopenharmony_ci#define PDM_DATA_VALID (0x0054) 2462306a36Sopenharmony_ci#define PDM_VERSION (0x0058) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci/* PDM_SYSCONFIG */ 2762306a36Sopenharmony_ci#define PDM_RX_MASK (0x1 << 2) 2862306a36Sopenharmony_ci#define PDM_RX_START (0x1 << 2) 2962306a36Sopenharmony_ci#define PDM_RX_STOP (0x0 << 2) 3062306a36Sopenharmony_ci#define PDM_RX_CLR_MASK (0x1 << 0) 3162306a36Sopenharmony_ci#define PDM_RX_CLR_WR (0x1 << 0) 3262306a36Sopenharmony_ci#define PDM_RX_CLR_DONE (0x0 << 0) 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* PDM CTRL0 */ 3562306a36Sopenharmony_ci#define PDM_PATH_MSK (0xf << 27) 3662306a36Sopenharmony_ci#define PDM_MODE_MSK BIT(31) 3762306a36Sopenharmony_ci#define PDM_MODE_RJ 0 3862306a36Sopenharmony_ci#define PDM_MODE_LJ BIT(31) 3962306a36Sopenharmony_ci#define PDM_PATH3_EN BIT(30) 4062306a36Sopenharmony_ci#define PDM_PATH2_EN BIT(29) 4162306a36Sopenharmony_ci#define PDM_PATH1_EN BIT(28) 4262306a36Sopenharmony_ci#define PDM_PATH0_EN BIT(27) 4362306a36Sopenharmony_ci#define PDM_HWT_EN BIT(26) 4462306a36Sopenharmony_ci#define PDM_SAMPLERATE_MSK GENMASK(7, 5) 4562306a36Sopenharmony_ci#define PDM_SAMPLERATE(x) ((x) << 5) 4662306a36Sopenharmony_ci#define PDM_VDW_MSK (0x1f << 0) 4762306a36Sopenharmony_ci#define PDM_VDW(X) ((X - 1) << 0) 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/* PDM CTRL1 */ 5062306a36Sopenharmony_ci#define PDM_FD_NUMERATOR_SFT 16 5162306a36Sopenharmony_ci#define PDM_FD_NUMERATOR_MSK GENMASK(31, 16) 5262306a36Sopenharmony_ci#define PDM_FD_DENOMINATOR_SFT 0 5362306a36Sopenharmony_ci#define PDM_FD_DENOMINATOR_MSK GENMASK(15, 0) 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci/* PDM CLK CTRL */ 5662306a36Sopenharmony_ci#define PDM_PATH_SHIFT(x) (8 + (x) * 2) 5762306a36Sopenharmony_ci#define PDM_PATH_MASK(x) (0x3 << PDM_PATH_SHIFT(x)) 5862306a36Sopenharmony_ci#define PDM_PATH(x, v) ((v) << PDM_PATH_SHIFT(x)) 5962306a36Sopenharmony_ci#define PDM_CLK_FD_RATIO_MSK BIT(6) 6062306a36Sopenharmony_ci#define PDM_CLK_FD_RATIO_40 (0X0 << 6) 6162306a36Sopenharmony_ci#define PDM_CLK_FD_RATIO_35 BIT(6) 6262306a36Sopenharmony_ci#define PDM_CLK_MSK BIT(5) 6362306a36Sopenharmony_ci#define PDM_CLK_EN BIT(5) 6462306a36Sopenharmony_ci#define PDM_CLK_DIS (0x0 << 5) 6562306a36Sopenharmony_ci#define PDM_CKP_MSK BIT(3) 6662306a36Sopenharmony_ci#define PDM_CKP_NORMAL (0x0 << 3) 6762306a36Sopenharmony_ci#define PDM_CKP_INVERTED BIT(3) 6862306a36Sopenharmony_ci#define PDM_DS_RATIO_MSK (0x7 << 0) 6962306a36Sopenharmony_ci#define PDM_CLK_320FS (0x0 << 0) 7062306a36Sopenharmony_ci#define PDM_CLK_640FS (0x1 << 0) 7162306a36Sopenharmony_ci#define PDM_CLK_1280FS (0x2 << 0) 7262306a36Sopenharmony_ci#define PDM_CLK_2560FS (0x3 << 0) 7362306a36Sopenharmony_ci#define PDM_CLK_5120FS (0x4 << 0) 7462306a36Sopenharmony_ci#define PDM_CIC_RATIO_MSK (0x3 << 0) 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci/* PDM HPF CTRL */ 7762306a36Sopenharmony_ci#define PDM_HPF_LE BIT(3) 7862306a36Sopenharmony_ci#define PDM_HPF_RE BIT(2) 7962306a36Sopenharmony_ci#define PDM_HPF_CF_MSK (0x3 << 0) 8062306a36Sopenharmony_ci#define PDM_HPF_3P79HZ (0x0 << 0) 8162306a36Sopenharmony_ci#define PDM_HPF_60HZ (0x1 << 0) 8262306a36Sopenharmony_ci#define PDM_HPF_243HZ (0x2 << 0) 8362306a36Sopenharmony_ci#define PDM_HPF_493HZ (0x3 << 0) 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci/* PDM DMA CTRL */ 8662306a36Sopenharmony_ci#define PDM_DMA_RD_MSK BIT(8) 8762306a36Sopenharmony_ci#define PDM_DMA_RD_EN BIT(8) 8862306a36Sopenharmony_ci#define PDM_DMA_RD_DIS (0x0 << 8) 8962306a36Sopenharmony_ci#define PDM_DMA_RDL_MSK (0x7f << 0) 9062306a36Sopenharmony_ci#define PDM_DMA_RDL(X) ((X - 1) << 0) 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci#endif /* _ROCKCHIP_PDM_H */ 93