brintos

brintos / linux-shallow public Read only

0
0
Text · 2.6 KiB · 3470b96 Raw
112 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * atmel_ssc_dai.h - ALSA SSC interface for the Atmel  SoC4 *5 * Copyright (C) 2005 SAN People6 * Copyright (C) 2008 Atmel7 *8 * Author: Sedji Gaouaou <sedji.gaouaou@atmel.com>9 *         ATMEL CORP.10 *11 * Based on at91-ssc.c by12 * Frank Mandarino <fmandarino@endrelia.com>13 * Based on pxa2xx Platform drivers by14 * Liam Girdwood <lrg@slimlogic.co.uk>15 */16 17#ifndef _ATMEL_SSC_DAI_H18#define _ATMEL_SSC_DAI_H19 20#include <linux/types.h>21#include <linux/atmel-ssc.h>22 23#include "atmel-pcm.h"24 25/* SSC system clock ids */26#define ATMEL_SYSCLK_MCK	0 /* SSC uses AT91 MCK as system clock */27 28/* SSC divider ids */29#define ATMEL_SSC_CMR_DIV	0 /* MCK divider for BCLK */30#define ATMEL_SSC_TCMR_PERIOD	1 /* BCLK divider for transmit FS */31#define ATMEL_SSC_RCMR_PERIOD	2 /* BCLK divider for receive FS */32/*33 * SSC direction masks34 */35#define SSC_DIR_MASK_UNUSED	036#define SSC_DIR_MASK_PLAYBACK	137#define SSC_DIR_MASK_CAPTURE	238 39/*40 * SSC register values that Atmel left out of <linux/atmel-ssc.h>.  These41 * are expected to be used with SSC_BF42 */43/* START bit field values */44#define SSC_START_CONTINUOUS	045#define SSC_START_TX_RX		146#define SSC_START_LOW_RF	247#define SSC_START_HIGH_RF	348#define SSC_START_FALLING_RF	449#define SSC_START_RISING_RF	550#define SSC_START_LEVEL_RF	651#define SSC_START_EDGE_RF	752#define SSS_START_COMPARE_0	853 54/* CKI bit field values */55#define SSC_CKI_FALLING		056#define SSC_CKI_RISING		157 58/* CKO bit field values */59#define SSC_CKO_NONE		060#define SSC_CKO_CONTINUOUS	161#define SSC_CKO_TRANSFER	262 63/* CKS bit field values */64#define SSC_CKS_DIV		065#define SSC_CKS_CLOCK		166#define SSC_CKS_PIN		267 68/* FSEDGE bit field values */69#define SSC_FSEDGE_POSITIVE	070#define SSC_FSEDGE_NEGATIVE	171 72/* FSOS bit field values */73#define SSC_FSOS_NONE		074#define SSC_FSOS_NEGATIVE	175#define SSC_FSOS_POSITIVE	276#define SSC_FSOS_LOW		377#define SSC_FSOS_HIGH		478#define SSC_FSOS_TOGGLE		579 80#define START_DELAY		181 82struct atmel_ssc_state {83	u32 ssc_cmr;84	u32 ssc_rcmr;85	u32 ssc_rfmr;86	u32 ssc_tcmr;87	u32 ssc_tfmr;88	u32 ssc_sr;89	u32 ssc_imr;90};91 92 93struct atmel_ssc_info {94	char *name;95	struct ssc_device *ssc;96	unsigned short dir_mask;	/* 0=unused, 1=playback, 2=capture */97	unsigned short initialized;	/* true if SSC has been initialized */98	unsigned short daifmt;99	unsigned short cmr_div;100	unsigned short tcmr_period;101	unsigned short rcmr_period;102	unsigned int forced_divider;103	struct atmel_pcm_dma_params *dma_params[2];104	struct atmel_ssc_state ssc_state;105	unsigned long mck_rate;106};107 108int atmel_ssc_set_audio(int ssc_id);109void atmel_ssc_put_audio(int ssc_id);110 111#endif /* _AT91_SSC_DAI_H */112