xref: /openbmc/linux/sound/soc/codecs/wm8804.h (revision 1a60667f)
133cf45c8SDimitris Papastamos /*
233cf45c8SDimitris Papastamos  * wm8804.h  --  WM8804 S/PDIF transceiver driver
333cf45c8SDimitris Papastamos  *
433cf45c8SDimitris Papastamos  * Copyright 2010 Wolfson Microelectronics plc
533cf45c8SDimitris Papastamos  *
633cf45c8SDimitris Papastamos  * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
733cf45c8SDimitris Papastamos  *
833cf45c8SDimitris Papastamos  * This program is free software; you can redistribute it and/or modify
933cf45c8SDimitris Papastamos  * it under the terms of the GNU General Public License version 2 as
1033cf45c8SDimitris Papastamos  * published by the Free Software Foundation.
1133cf45c8SDimitris Papastamos  */
1233cf45c8SDimitris Papastamos 
1333cf45c8SDimitris Papastamos #ifndef _WM8804_H
1433cf45c8SDimitris Papastamos #define _WM8804_H
1533cf45c8SDimitris Papastamos 
16bbed297dSCharles Keepax #include <linux/regmap.h>
17bbed297dSCharles Keepax 
1833cf45c8SDimitris Papastamos /*
1933cf45c8SDimitris Papastamos  * Register values.
2033cf45c8SDimitris Papastamos  */
2133cf45c8SDimitris Papastamos #define WM8804_RST_DEVID1			0x00
2233cf45c8SDimitris Papastamos #define WM8804_DEVID2				0x01
2333cf45c8SDimitris Papastamos #define WM8804_DEVREV				0x02
2433cf45c8SDimitris Papastamos #define WM8804_PLL1				0x03
2533cf45c8SDimitris Papastamos #define WM8804_PLL2				0x04
2633cf45c8SDimitris Papastamos #define WM8804_PLL3				0x05
2733cf45c8SDimitris Papastamos #define WM8804_PLL4				0x06
2833cf45c8SDimitris Papastamos #define WM8804_PLL5				0x07
2933cf45c8SDimitris Papastamos #define WM8804_PLL6				0x08
3033cf45c8SDimitris Papastamos #define WM8804_SPDMODE				0x09
3133cf45c8SDimitris Papastamos #define WM8804_INTMASK				0x0A
3233cf45c8SDimitris Papastamos #define WM8804_INTSTAT				0x0B
3333cf45c8SDimitris Papastamos #define WM8804_SPDSTAT				0x0C
3433cf45c8SDimitris Papastamos #define WM8804_RXCHAN1				0x0D
3533cf45c8SDimitris Papastamos #define WM8804_RXCHAN2				0x0E
3633cf45c8SDimitris Papastamos #define WM8804_RXCHAN3				0x0F
3733cf45c8SDimitris Papastamos #define WM8804_RXCHAN4				0x10
3833cf45c8SDimitris Papastamos #define WM8804_RXCHAN5				0x11
3933cf45c8SDimitris Papastamos #define WM8804_SPDTX1				0x12
4033cf45c8SDimitris Papastamos #define WM8804_SPDTX2				0x13
4133cf45c8SDimitris Papastamos #define WM8804_SPDTX3				0x14
4233cf45c8SDimitris Papastamos #define WM8804_SPDTX4				0x15
4333cf45c8SDimitris Papastamos #define WM8804_SPDTX5				0x16
4433cf45c8SDimitris Papastamos #define WM8804_GPO0				0x17
4533cf45c8SDimitris Papastamos #define WM8804_GPO1				0x18
4633cf45c8SDimitris Papastamos #define WM8804_GPO2				0x1A
4733cf45c8SDimitris Papastamos #define WM8804_AIFTX				0x1B
4833cf45c8SDimitris Papastamos #define WM8804_AIFRX				0x1C
4933cf45c8SDimitris Papastamos #define WM8804_SPDRX1				0x1D
5033cf45c8SDimitris Papastamos #define WM8804_PWRDN				0x1E
5133cf45c8SDimitris Papastamos 
5233cf45c8SDimitris Papastamos #define WM8804_REGISTER_COUNT			30
5333cf45c8SDimitris Papastamos #define WM8804_MAX_REGISTER			0x1E
5433cf45c8SDimitris Papastamos 
5533cf45c8SDimitris Papastamos #define WM8804_TX_CLKSRC_MCLK			1
5633cf45c8SDimitris Papastamos #define WM8804_TX_CLKSRC_PLL			2
5733cf45c8SDimitris Papastamos 
5833cf45c8SDimitris Papastamos #define WM8804_CLKOUT_SRC_CLK1			3
5933cf45c8SDimitris Papastamos #define WM8804_CLKOUT_SRC_OSCCLK		4
6033cf45c8SDimitris Papastamos 
6133cf45c8SDimitris Papastamos #define WM8804_CLKOUT_DIV			1
6206109f47SDaniel Matuschek #define WM8804_MCLK_DIV				2
6306109f47SDaniel Matuschek 
6406109f47SDaniel Matuschek #define WM8804_MCLKDIV_256FS			0
6506109f47SDaniel Matuschek #define WM8804_MCLKDIV_128FS			1
6633cf45c8SDimitris Papastamos 
67bbed297dSCharles Keepax extern const struct regmap_config wm8804_regmap_config;
681a60667fSCharles Keepax extern const struct dev_pm_ops wm8804_pm;
69bbed297dSCharles Keepax 
70bbed297dSCharles Keepax int wm8804_probe(struct device *dev, struct regmap *regmap);
71bbed297dSCharles Keepax void wm8804_remove(struct device *dev);
72bbed297dSCharles Keepax 
7333cf45c8SDimitris Papastamos #endif  /* _WM8804_H */
74