brintos

brintos / linux-shallow public Read only

0
0
Text · 1.9 KiB · 7cca806 Raw
66 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * tegra_cif.h - TEGRA Audio CIF Programming4 *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		2415#define TEGRA_ACIF_CTRL_AUDIO_CH_SHIFT		2016#define TEGRA_ACIF_CTRL_CLIENT_CH_SHIFT		1617#define TEGRA_ACIF_CTRL_AUDIO_BITS_SHIFT	1218#define TEGRA_ACIF_CTRL_CLIENT_BITS_SHIFT	819#define TEGRA_ACIF_CTRL_EXPAND_SHIFT		620#define TEGRA_ACIF_CTRL_STEREO_CONV_SHIFT	421#define TEGRA_ACIF_CTRL_REPLICATE_SHIFT		322#define TEGRA_ACIF_CTRL_TRUNCATE_SHIFT		123#define TEGRA_ACIF_CTRL_MONO_CONV_SHIFT		024 25/* AUDIO/CLIENT_BITS values */26#define TEGRA_ACIF_BITS_8			127#define TEGRA_ACIF_BITS_16			328#define TEGRA_ACIF_BITS_24			529#define TEGRA_ACIF_BITS_32			730 31#define TEGRA_ACIF_UPDATE_MASK			0x3ffffffb32 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#endif66