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

mxs-saif.h (3754B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
      4 */
      5
      6
      7#ifndef _MXS_SAIF_H
      8#define _MXS_SAIF_H
      9
     10#define SAIF_CTRL	0x0
     11#define SAIF_STAT	0x10
     12#define SAIF_DATA	0x20
     13#define SAIF_VERSION	0X30
     14
     15/* SAIF_CTRL */
     16#define BM_SAIF_CTRL_SFTRST		0x80000000
     17#define BM_SAIF_CTRL_CLKGATE		0x40000000
     18#define BP_SAIF_CTRL_BITCLK_MULT_RATE	27
     19#define BM_SAIF_CTRL_BITCLK_MULT_RATE	0x38000000
     20#define BF_SAIF_CTRL_BITCLK_MULT_RATE(v) \
     21		(((v) << 27) & BM_SAIF_CTRL_BITCLK_MULT_RATE)
     22#define BM_SAIF_CTRL_BITCLK_BASE_RATE	0x04000000
     23#define BM_SAIF_CTRL_FIFO_ERROR_IRQ_EN	0x02000000
     24#define BM_SAIF_CTRL_FIFO_SERVICE_IRQ_EN	0x01000000
     25#define BP_SAIF_CTRL_RSRVD2		21
     26#define BM_SAIF_CTRL_RSRVD2		0x00E00000
     27
     28#define BP_SAIF_CTRL_DMAWAIT_COUNT	16
     29#define BM_SAIF_CTRL_DMAWAIT_COUNT	0x001F0000
     30#define BF_SAIF_CTRL_DMAWAIT_COUNT(v) \
     31		(((v) << 16) & BM_SAIF_CTRL_DMAWAIT_COUNT)
     32#define BP_SAIF_CTRL_CHANNEL_NUM_SELECT 14
     33#define BM_SAIF_CTRL_CHANNEL_NUM_SELECT 0x0000C000
     34#define BF_SAIF_CTRL_CHANNEL_NUM_SELECT(v) \
     35		(((v) << 14) & BM_SAIF_CTRL_CHANNEL_NUM_SELECT)
     36#define BM_SAIF_CTRL_LRCLK_PULSE	0x00002000
     37#define BM_SAIF_CTRL_BIT_ORDER		0x00001000
     38#define BM_SAIF_CTRL_DELAY		0x00000800
     39#define BM_SAIF_CTRL_JUSTIFY		0x00000400
     40#define BM_SAIF_CTRL_LRCLK_POLARITY	0x00000200
     41#define BM_SAIF_CTRL_BITCLK_EDGE	0x00000100
     42#define BP_SAIF_CTRL_WORD_LENGTH	4
     43#define BM_SAIF_CTRL_WORD_LENGTH	0x000000F0
     44#define BF_SAIF_CTRL_WORD_LENGTH(v) \
     45		(((v) << 4) & BM_SAIF_CTRL_WORD_LENGTH)
     46#define BM_SAIF_CTRL_BITCLK_48XFS_ENABLE	0x00000008
     47#define BM_SAIF_CTRL_SLAVE_MODE		0x00000004
     48#define BM_SAIF_CTRL_READ_MODE		0x00000002
     49#define BM_SAIF_CTRL_RUN		0x00000001
     50
     51/* SAIF_STAT */
     52#define BM_SAIF_STAT_PRESENT		0x80000000
     53#define BP_SAIF_STAT_RSRVD2		17
     54#define BM_SAIF_STAT_RSRVD2		0x7FFE0000
     55#define BF_SAIF_STAT_RSRVD2(v) \
     56		(((v) << 17) & BM_SAIF_STAT_RSRVD2)
     57#define BM_SAIF_STAT_DMA_PREQ		0x00010000
     58#define BP_SAIF_STAT_RSRVD1		7
     59#define BM_SAIF_STAT_RSRVD1		0x0000FF80
     60#define BF_SAIF_STAT_RSRVD1(v) \
     61		(((v) << 7) & BM_SAIF_STAT_RSRVD1)
     62
     63#define BM_SAIF_STAT_FIFO_UNDERFLOW_IRQ 0x00000040
     64#define BM_SAIF_STAT_FIFO_OVERFLOW_IRQ	0x00000020
     65#define BM_SAIF_STAT_FIFO_SERVICE_IRQ	0x00000010
     66#define BP_SAIF_STAT_RSRVD0		1
     67#define BM_SAIF_STAT_RSRVD0		0x0000000E
     68#define BF_SAIF_STAT_RSRVD0(v) \
     69		(((v) << 1) & BM_SAIF_STAT_RSRVD0)
     70#define BM_SAIF_STAT_BUSY		0x00000001
     71
     72/* SAFI_DATA */
     73#define BP_SAIF_DATA_PCM_RIGHT		16
     74#define BM_SAIF_DATA_PCM_RIGHT		0xFFFF0000
     75#define BF_SAIF_DATA_PCM_RIGHT(v) \
     76		(((v) << 16) & BM_SAIF_DATA_PCM_RIGHT)
     77#define BP_SAIF_DATA_PCM_LEFT		0
     78#define BM_SAIF_DATA_PCM_LEFT		0x0000FFFF
     79#define BF_SAIF_DATA_PCM_LEFT(v)	\
     80		(((v) << 0) & BM_SAIF_DATA_PCM_LEFT)
     81
     82/* SAIF_VERSION */
     83#define BP_SAIF_VERSION_MAJOR		24
     84#define BM_SAIF_VERSION_MAJOR		0xFF000000
     85#define BF_SAIF_VERSION_MAJOR(v) \
     86		(((v) << 24) & BM_SAIF_VERSION_MAJOR)
     87#define BP_SAIF_VERSION_MINOR		16
     88#define BM_SAIF_VERSION_MINOR		0x00FF0000
     89#define BF_SAIF_VERSION_MINOR(v) \
     90		(((v) << 16) & BM_SAIF_VERSION_MINOR)
     91#define BP_SAIF_VERSION_STEP		0
     92#define BM_SAIF_VERSION_STEP		0x0000FFFF
     93#define BF_SAIF_VERSION_STEP(v) \
     94		(((v) << 0) & BM_SAIF_VERSION_STEP)
     95
     96#define MXS_SAIF_MCLK		0
     97
     98#include "mxs-pcm.h"
     99
    100struct mxs_saif {
    101	struct device *dev;
    102	struct clk *clk;
    103	unsigned int mclk;
    104	unsigned int mclk_in_use;
    105	void __iomem *base;
    106	unsigned int id;
    107	unsigned int master_id;
    108	unsigned int cur_rate;
    109	unsigned int ongoing;
    110
    111	u32 fifo_underrun;
    112	u32 fifo_overrun;
    113
    114	enum {
    115		MXS_SAIF_STATE_STOPPED,
    116		MXS_SAIF_STATE_RUNNING,
    117	} state;
    118};
    119
    120extern int mxs_saif_put_mclk(unsigned int saif_id);
    121extern int mxs_saif_get_mclk(unsigned int saif_id, unsigned int mclk,
    122					unsigned int rate);
    123#endif