xref: /openbmc/linux/sound/pcmcia/vx/vxpocket.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  * Driver for Digigram VXpocket soundcards
41da177e4SLinus Torvalds  *
51da177e4SLinus Torvalds  * Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>
61da177e4SLinus Torvalds  */
71da177e4SLinus Torvalds 
81da177e4SLinus Torvalds #ifndef __VXPOCKET_H
91da177e4SLinus Torvalds #define __VXPOCKET_H
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #include <sound/vx_core.h>
121da177e4SLinus Torvalds 
131da177e4SLinus Torvalds #include <pcmcia/cistpl.h>
141da177e4SLinus Torvalds #include <pcmcia/ds.h>
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds struct snd_vxpocket {
171da177e4SLinus Torvalds 
18af26367fSTakashi Iwai 	struct vx_core core;
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds 	unsigned long port;
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds 	int mic_level;	/* analog mic level (or boost) */
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds 	unsigned int regCDSP;	/* current CDSP register */
251da177e4SLinus Torvalds 	unsigned int regDIALOG;	/* current DIALOG register */
261da177e4SLinus Torvalds 
276d00a312STakashi Iwai 	int index;	/* card index */
281da177e4SLinus Torvalds 
291da177e4SLinus Torvalds 	/* pcmcia stuff */
30fd238232SDominik Brodowski 	struct pcmcia_device	*p_dev;
311da177e4SLinus Torvalds };
321da177e4SLinus Torvalds 
332e0de6eaSTakashi Iwai #define to_vxpocket(x)	container_of(x, struct snd_vxpocket, core)
342e0de6eaSTakashi Iwai 
35*f8ae2d29STakashi Iwai extern const struct snd_vx_ops snd_vxpocket_ops;
361da177e4SLinus Torvalds 
37af26367fSTakashi Iwai void vx_set_mic_boost(struct vx_core *chip, int boost);
38af26367fSTakashi Iwai void vx_set_mic_level(struct vx_core *chip, int level);
391da177e4SLinus Torvalds 
40af26367fSTakashi Iwai int vxp_add_mic_controls(struct vx_core *chip);
411da177e4SLinus Torvalds 
421da177e4SLinus Torvalds /* Constants used to access the CDSP register (0x08). */
431da177e4SLinus Torvalds #define CDSP_MAGIC	0xA7	/* magic value (for read) */
441da177e4SLinus Torvalds /* for write */
451da177e4SLinus Torvalds #define VXP_CDSP_CLOCKIN_SEL_MASK	0x80	/* 0 (internal), 1 (AES/EBU) */
461da177e4SLinus Torvalds #define VXP_CDSP_DATAIN_SEL_MASK	0x40	/* 0 (analog), 1 (UER) */
471da177e4SLinus Torvalds #define VXP_CDSP_SMPTE_SEL_MASK		0x20
481da177e4SLinus Torvalds #define VXP_CDSP_RESERVED_MASK		0x10
491da177e4SLinus Torvalds #define VXP_CDSP_MIC_SEL_MASK		0x08
501da177e4SLinus Torvalds #define VXP_CDSP_VALID_IRQ_MASK		0x04
511da177e4SLinus Torvalds #define VXP_CDSP_CODEC_RESET_MASK	0x02
521da177e4SLinus Torvalds #define VXP_CDSP_DSP_RESET_MASK		0x01
531da177e4SLinus Torvalds /* VXPOCKET 240/440 */
541da177e4SLinus Torvalds #define P24_CDSP_MICS_SEL_MASK		0x18
551da177e4SLinus Torvalds #define P24_CDSP_MIC20_SEL_MASK		0x10
561da177e4SLinus Torvalds #define P24_CDSP_MIC38_SEL_MASK		0x08
571da177e4SLinus Torvalds 
581da177e4SLinus Torvalds /* Constants used to access the MEMIRQ register (0x0C). */
591da177e4SLinus Torvalds #define P44_MEMIRQ_MASTER_SLAVE_SEL_MASK 0x08
601da177e4SLinus Torvalds #define P44_MEMIRQ_SYNCED_ALONE_SEL_MASK 0x04
611da177e4SLinus Torvalds #define P44_MEMIRQ_WCLK_OUT_IN_SEL_MASK  0x02 /* Not used */
621da177e4SLinus Torvalds #define P44_MEMIRQ_WCLK_UER_SEL_MASK     0x01 /* Not used */
631da177e4SLinus Torvalds 
641da177e4SLinus Torvalds /* Micro levels (0x0C) */
651da177e4SLinus Torvalds 
661da177e4SLinus Torvalds /* Constants used to access the DIALOG register (0x0D). */
671da177e4SLinus Torvalds #define VXP_DLG_XILINX_REPROG_MASK	0x80	/* W */
681da177e4SLinus Torvalds #define VXP_DLG_DATA_XICOR_MASK		0x80	/* R */
691da177e4SLinus Torvalds #define VXP_DLG_RESERVED4_0_MASK	0x40
701da177e4SLinus Torvalds #define VXP_DLG_RESERVED2_0_MASK	0x20
711da177e4SLinus Torvalds #define VXP_DLG_RESERVED1_0_MASK	0x10
721da177e4SLinus Torvalds #define VXP_DLG_DMAWRITE_SEL_MASK	0x08	/* W */
731da177e4SLinus Torvalds #define VXP_DLG_DMAREAD_SEL_MASK	0x04	/* W */
741da177e4SLinus Torvalds #define VXP_DLG_MEMIRQ_MASK		0x02	/* R */
751da177e4SLinus Torvalds #define VXP_DLG_DMA16_SEL_MASK		0x02	/* W */
761da177e4SLinus Torvalds #define VXP_DLG_ACK_MEMIRQ_MASK		0x01	/* R/W */
771da177e4SLinus Torvalds 
781da177e4SLinus Torvalds 
791da177e4SLinus Torvalds #endif /* __VXPOCKET_H */
80