xref: /openbmc/linux/sound/soc/codecs/wm8804.h (revision d2912cb1)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
233cf45c8SDimitris Papastamos /*
333cf45c8SDimitris Papastamos  * wm8804.h  --  WM8804 S/PDIF transceiver driver
433cf45c8SDimitris Papastamos  *
533cf45c8SDimitris Papastamos  * Copyright 2010 Wolfson Microelectronics plc
633cf45c8SDimitris Papastamos  *
733cf45c8SDimitris Papastamos  * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
833cf45c8SDimitris Papastamos  */
933cf45c8SDimitris Papastamos 
1033cf45c8SDimitris Papastamos #ifndef _WM8804_H
1133cf45c8SDimitris Papastamos #define _WM8804_H
1233cf45c8SDimitris Papastamos 
13bbed297dSCharles Keepax #include <linux/regmap.h>
14bbed297dSCharles Keepax 
1533cf45c8SDimitris Papastamos /*
1633cf45c8SDimitris Papastamos  * Register values.
1733cf45c8SDimitris Papastamos  */
1833cf45c8SDimitris Papastamos #define WM8804_RST_DEVID1			0x00
1933cf45c8SDimitris Papastamos #define WM8804_DEVID2				0x01
2033cf45c8SDimitris Papastamos #define WM8804_DEVREV				0x02
2133cf45c8SDimitris Papastamos #define WM8804_PLL1				0x03
2233cf45c8SDimitris Papastamos #define WM8804_PLL2				0x04
2333cf45c8SDimitris Papastamos #define WM8804_PLL3				0x05
2433cf45c8SDimitris Papastamos #define WM8804_PLL4				0x06
2533cf45c8SDimitris Papastamos #define WM8804_PLL5				0x07
2633cf45c8SDimitris Papastamos #define WM8804_PLL6				0x08
2733cf45c8SDimitris Papastamos #define WM8804_SPDMODE				0x09
2833cf45c8SDimitris Papastamos #define WM8804_INTMASK				0x0A
2933cf45c8SDimitris Papastamos #define WM8804_INTSTAT				0x0B
3033cf45c8SDimitris Papastamos #define WM8804_SPDSTAT				0x0C
3133cf45c8SDimitris Papastamos #define WM8804_RXCHAN1				0x0D
3233cf45c8SDimitris Papastamos #define WM8804_RXCHAN2				0x0E
3333cf45c8SDimitris Papastamos #define WM8804_RXCHAN3				0x0F
3433cf45c8SDimitris Papastamos #define WM8804_RXCHAN4				0x10
3533cf45c8SDimitris Papastamos #define WM8804_RXCHAN5				0x11
3633cf45c8SDimitris Papastamos #define WM8804_SPDTX1				0x12
3733cf45c8SDimitris Papastamos #define WM8804_SPDTX2				0x13
3833cf45c8SDimitris Papastamos #define WM8804_SPDTX3				0x14
3933cf45c8SDimitris Papastamos #define WM8804_SPDTX4				0x15
4033cf45c8SDimitris Papastamos #define WM8804_SPDTX5				0x16
4133cf45c8SDimitris Papastamos #define WM8804_GPO0				0x17
4233cf45c8SDimitris Papastamos #define WM8804_GPO1				0x18
4333cf45c8SDimitris Papastamos #define WM8804_GPO2				0x1A
4433cf45c8SDimitris Papastamos #define WM8804_AIFTX				0x1B
4533cf45c8SDimitris Papastamos #define WM8804_AIFRX				0x1C
4633cf45c8SDimitris Papastamos #define WM8804_SPDRX1				0x1D
4733cf45c8SDimitris Papastamos #define WM8804_PWRDN				0x1E
4833cf45c8SDimitris Papastamos 
4933cf45c8SDimitris Papastamos #define WM8804_REGISTER_COUNT			30
5033cf45c8SDimitris Papastamos #define WM8804_MAX_REGISTER			0x1E
5133cf45c8SDimitris Papastamos 
5233cf45c8SDimitris Papastamos #define WM8804_TX_CLKSRC_MCLK			1
5333cf45c8SDimitris Papastamos #define WM8804_TX_CLKSRC_PLL			2
5433cf45c8SDimitris Papastamos 
5533cf45c8SDimitris Papastamos #define WM8804_CLKOUT_SRC_CLK1			3
5633cf45c8SDimitris Papastamos #define WM8804_CLKOUT_SRC_OSCCLK		4
5733cf45c8SDimitris Papastamos 
5833cf45c8SDimitris Papastamos #define WM8804_CLKOUT_DIV			1
5906109f47SDaniel Matuschek #define WM8804_MCLK_DIV				2
6006109f47SDaniel Matuschek 
6106109f47SDaniel Matuschek #define WM8804_MCLKDIV_256FS			0
6206109f47SDaniel Matuschek #define WM8804_MCLKDIV_128FS			1
6333cf45c8SDimitris Papastamos 
64bbed297dSCharles Keepax extern const struct regmap_config wm8804_regmap_config;
651a60667fSCharles Keepax extern const struct dev_pm_ops wm8804_pm;
66bbed297dSCharles Keepax 
67bbed297dSCharles Keepax int wm8804_probe(struct device *dev, struct regmap *regmap);
68bbed297dSCharles Keepax void wm8804_remove(struct device *dev);
69bbed297dSCharles Keepax 
7033cf45c8SDimitris Papastamos #endif  /* _WM8804_H */
71