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

tegra_cif.h (1945B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * tegra_cif.h - TEGRA Audio CIF Programming
      4 *
      5 * Copyright (c) 2020 NVIDIA CORPORATION.  All rights reserved.
      6 *
      7 */
      8
      9#ifndef __TEGRA_CIF_H__
     10#define __TEGRA_CIF_H__
     11
     12#include <linux/regmap.h>
     13
     14#define TEGRA_ACIF_CTRL_FIFO_TH_SHIFT		24
     15#define TEGRA_ACIF_CTRL_AUDIO_CH_SHIFT		20
     16#define TEGRA_ACIF_CTRL_CLIENT_CH_SHIFT		16
     17#define TEGRA_ACIF_CTRL_AUDIO_BITS_SHIFT	12
     18#define TEGRA_ACIF_CTRL_CLIENT_BITS_SHIFT	8
     19#define TEGRA_ACIF_CTRL_EXPAND_SHIFT		6
     20#define TEGRA_ACIF_CTRL_STEREO_CONV_SHIFT	4
     21#define TEGRA_ACIF_CTRL_REPLICATE_SHIFT		3
     22#define TEGRA_ACIF_CTRL_TRUNCATE_SHIFT		1
     23#define TEGRA_ACIF_CTRL_MONO_CONV_SHIFT		0
     24
     25/* AUDIO/CLIENT_BITS values */
     26#define TEGRA_ACIF_BITS_8			1
     27#define TEGRA_ACIF_BITS_16			3
     28#define TEGRA_ACIF_BITS_24			5
     29#define TEGRA_ACIF_BITS_32			7
     30
     31#define TEGRA_ACIF_UPDATE_MASK			0x3ffffffb
     32
     33struct tegra_cif_conf {
     34	unsigned int threshold;
     35	unsigned int audio_ch;
     36	unsigned int client_ch;
     37	unsigned int audio_bits;
     38	unsigned int client_bits;
     39	unsigned int expand;
     40	unsigned int stereo_conv;
     41	unsigned int replicate;
     42	unsigned int truncate;
     43	unsigned int mono_conv;
     44};
     45
     46static inline void tegra_set_cif(struct regmap *regmap, unsigned int reg,
     47				 struct tegra_cif_conf *conf)
     48{
     49	unsigned int value;
     50
     51	value = (conf->threshold << TEGRA_ACIF_CTRL_FIFO_TH_SHIFT) |
     52		((conf->audio_ch - 1) << TEGRA_ACIF_CTRL_AUDIO_CH_SHIFT) |
     53		((conf->client_ch - 1) << TEGRA_ACIF_CTRL_CLIENT_CH_SHIFT) |
     54		(conf->audio_bits << TEGRA_ACIF_CTRL_AUDIO_BITS_SHIFT) |
     55		(conf->client_bits << TEGRA_ACIF_CTRL_CLIENT_BITS_SHIFT) |
     56		(conf->expand << TEGRA_ACIF_CTRL_EXPAND_SHIFT) |
     57		(conf->stereo_conv << TEGRA_ACIF_CTRL_STEREO_CONV_SHIFT) |
     58		(conf->replicate << TEGRA_ACIF_CTRL_REPLICATE_SHIFT) |
     59		(conf->truncate << TEGRA_ACIF_CTRL_TRUNCATE_SHIFT) |
     60		(conf->mono_conv << TEGRA_ACIF_CTRL_MONO_CONV_SHIFT);
     61
     62	regmap_update_bits(regmap, reg, TEGRA_ACIF_UPDATE_MASK, value);
     63}
     64
     65#endif