Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.8.
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * include/asm-mips/vr41xx/vr41xx.h
  4 *
  5 * Include file for NEC VR4100 series.
  6 *
  7 * Copyright (C) 1999 Michael Klar
  8 * Copyright (C) 2001, 2002 Paul Mundt
  9 * Copyright (C) 2002 MontaVista Software, Inc.
 10 * Copyright (C) 2002 TimeSys Corp.
 11 * Copyright (C) 2003-2008 Yoichi Yuasa <yuasa@linux-mips.org>
 12 */
 13#ifndef __NEC_VR41XX_H
 14#define __NEC_VR41XX_H
 15
 16#include <linux/interrupt.h>
 17
 18/*
 19 * CPU Revision
 20 */
 21/* VR4122 0x00000c70-0x00000c72 */
 22#define PRID_VR4122_REV1_0	0x00000c70
 23#define PRID_VR4122_REV2_0	0x00000c70
 24#define PRID_VR4122_REV2_1	0x00000c70
 25#define PRID_VR4122_REV3_0	0x00000c71
 26#define PRID_VR4122_REV3_1	0x00000c72
 27
 28/* VR4181A 0x00000c73-0x00000c7f */
 29#define PRID_VR4181A_REV1_0	0x00000c73
 30#define PRID_VR4181A_REV1_1	0x00000c74
 31
 32/* VR4131 0x00000c80-0x00000c83 */
 33#define PRID_VR4131_REV1_2	0x00000c80
 34#define PRID_VR4131_REV2_0	0x00000c81
 35#define PRID_VR4131_REV2_1	0x00000c82
 36#define PRID_VR4131_REV2_2	0x00000c83
 37
 38/* VR4133 0x00000c84- */
 39#define PRID_VR4133		0x00000c84
 40
 41/*
 42 * Bus Control Uint
 43 */
 44extern unsigned long vr41xx_calculate_clock_frequency(void);
 45extern unsigned long vr41xx_get_vtclock_frequency(void);
 46extern unsigned long vr41xx_get_tclock_frequency(void);
 47
 48/*
 49 * Clock Mask Unit
 50 */
 51typedef enum {
 52	PIU_CLOCK,
 53	SIU_CLOCK,
 54	AIU_CLOCK,
 55	KIU_CLOCK,
 56	FIR_CLOCK,
 57	DSIU_CLOCK,
 58	CSI_CLOCK,
 59	PCIU_CLOCK,
 60	HSP_CLOCK,
 61	PCI_CLOCK,
 62	CEU_CLOCK,
 63	ETHER0_CLOCK,
 64	ETHER1_CLOCK
 65} vr41xx_clock_t;
 66
 67extern void vr41xx_supply_clock(vr41xx_clock_t clock);
 68extern void vr41xx_mask_clock(vr41xx_clock_t clock);
 69
 70/*
 71 * Interrupt Control Unit
 72 */
 73extern int vr41xx_set_intassign(unsigned int irq, unsigned char intassign);
 74extern int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int));
 75
 76#define PIUINT_COMMAND		0x0040
 77#define PIUINT_DATA		0x0020
 78#define PIUINT_PAGE1		0x0010
 79#define PIUINT_PAGE0		0x0008
 80#define PIUINT_DATALOST		0x0004
 81#define PIUINT_STATUSCHANGE	0x0001
 82
 83extern void vr41xx_enable_piuint(uint16_t mask);
 84extern void vr41xx_disable_piuint(uint16_t mask);
 85
 86#define AIUINT_INPUT_DMAEND	0x0800
 87#define AIUINT_INPUT_DMAHALT	0x0400
 88#define AIUINT_INPUT_DATALOST	0x0200
 89#define AIUINT_INPUT_DATA	0x0100
 90#define AIUINT_OUTPUT_DMAEND	0x0008
 91#define AIUINT_OUTPUT_DMAHALT	0x0004
 92#define AIUINT_OUTPUT_NODATA	0x0002
 93
 94extern void vr41xx_enable_aiuint(uint16_t mask);
 95extern void vr41xx_disable_aiuint(uint16_t mask);
 96
 97#define KIUINT_DATALOST		0x0004
 98#define KIUINT_DATAREADY	0x0002
 99#define KIUINT_SCAN		0x0001
100
101extern void vr41xx_enable_kiuint(uint16_t mask);
102extern void vr41xx_disable_kiuint(uint16_t mask);
103
104#define DSIUINT_CTS		0x0800
105#define DSIUINT_RXERR		0x0400
106#define DSIUINT_RX		0x0200
107#define DSIUINT_TX		0x0100
108#define DSIUINT_ALL		0x0f00
109
110extern void vr41xx_enable_dsiuint(uint16_t mask);
111extern void vr41xx_disable_dsiuint(uint16_t mask);
112
113#define FIRINT_UNIT		0x0010
114#define FIRINT_RX_DMAEND	0x0008
115#define FIRINT_RX_DMAHALT	0x0004
116#define FIRINT_TX_DMAEND	0x0002
117#define FIRINT_TX_DMAHALT	0x0001
118
119extern void vr41xx_enable_firint(uint16_t mask);
120extern void vr41xx_disable_firint(uint16_t mask);
121
122extern void vr41xx_enable_pciint(void);
123extern void vr41xx_disable_pciint(void);
124
125extern void vr41xx_enable_scuint(void);
126extern void vr41xx_disable_scuint(void);
127
128#define CSIINT_TX_DMAEND	0x0040
129#define CSIINT_TX_DMAHALT	0x0020
130#define CSIINT_TX_DATA		0x0010
131#define CSIINT_TX_FIFOEMPTY	0x0008
132#define CSIINT_RX_DMAEND	0x0004
133#define CSIINT_RX_DMAHALT	0x0002
134#define CSIINT_RX_FIFOEMPTY	0x0001
135
136extern void vr41xx_enable_csiint(uint16_t mask);
137extern void vr41xx_disable_csiint(uint16_t mask);
138
139extern void vr41xx_enable_bcuint(void);
140extern void vr41xx_disable_bcuint(void);
141
142#ifdef CONFIG_SERIAL_VR41XX_CONSOLE
143extern void vr41xx_siu_setup(void);
144#else
145static inline void vr41xx_siu_setup(void) {}
146#endif
147
148#endif /* __NEC_VR41XX_H */