xref: /freebsd/sys/contrib/alpine-hal/al_serdes.h (revision d002f039aeb370370cd2cba63ad55cc4cf16c932)
1*3fc36ee0SWojciech Macek /*******************************************************************************
2*3fc36ee0SWojciech Macek Copyright (C) 2013 Annapurna Labs Ltd.
3*3fc36ee0SWojciech Macek 
4*3fc36ee0SWojciech Macek This file is licensed under the terms of the Annapurna Labs' Commercial License
5*3fc36ee0SWojciech Macek Agreement distributed with the file or available on the software download site.
6*3fc36ee0SWojciech Macek Recipient shall use the content of this file only on semiconductor devices or
7*3fc36ee0SWojciech Macek systems developed by or for Annapurna Labs.
8*3fc36ee0SWojciech Macek 
9*3fc36ee0SWojciech Macek  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
10*3fc36ee0SWojciech Macek  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
11*3fc36ee0SWojciech Macek  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
12*3fc36ee0SWojciech Macek  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
13*3fc36ee0SWojciech Macek  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
14*3fc36ee0SWojciech Macek  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
15*3fc36ee0SWojciech Macek  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
16*3fc36ee0SWojciech Macek  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17*3fc36ee0SWojciech Macek  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
18*3fc36ee0SWojciech Macek  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19*3fc36ee0SWojciech Macek 
20*3fc36ee0SWojciech Macek *******************************************************************************/
21*3fc36ee0SWojciech Macek 
22*3fc36ee0SWojciech Macek /**
23*3fc36ee0SWojciech Macek  * @defgroup group_serdes_init SerDes Initialization
24*3fc36ee0SWojciech Macek  * @ingroup group_serdes SerDes
25*3fc36ee0SWojciech Macek  * @{
26*3fc36ee0SWojciech Macek  *
27*3fc36ee0SWojciech Macek  * @file   al_serdes.h
28*3fc36ee0SWojciech Macek  *
29*3fc36ee0SWojciech Macek  */
30*3fc36ee0SWojciech Macek 
31*3fc36ee0SWojciech Macek #ifndef __AL_SERDES_H__
32*3fc36ee0SWojciech Macek #define __AL_SERDES_H__
33*3fc36ee0SWojciech Macek 
34*3fc36ee0SWojciech Macek #include "al_hal_serdes_interface.h"
35*3fc36ee0SWojciech Macek 
36*3fc36ee0SWojciech Macek /* *INDENT-OFF* */
37*3fc36ee0SWojciech Macek #ifdef __cplusplus
38*3fc36ee0SWojciech Macek extern "C" {
39*3fc36ee0SWojciech Macek #endif
40*3fc36ee0SWojciech Macek /* *INDENT-ON* */
41*3fc36ee0SWojciech Macek 
42*3fc36ee0SWojciech Macek #ifdef AL_DEV_ID
43*3fc36ee0SWojciech Macek #define CHECK_ALPINE_V1	(AL_DEV_ID == AL_DEV_ID_ALPINE_V1)
44*3fc36ee0SWojciech Macek #define CHECK_ALPINE_V2	(AL_DEV_ID == AL_DEV_ID_ALPINE_V2)
45*3fc36ee0SWojciech Macek #else
46*3fc36ee0SWojciech Macek #define CHECK_ALPINE_V1	1
47*3fc36ee0SWojciech Macek #define CHECK_ALPINE_V2	1
48*3fc36ee0SWojciech Macek #endif
49*3fc36ee0SWojciech Macek 
50*3fc36ee0SWojciech Macek enum al_serdes_group {
51*3fc36ee0SWojciech Macek 	AL_SRDS_GRP_A = 0,
52*3fc36ee0SWojciech Macek 	AL_SRDS_GRP_B,
53*3fc36ee0SWojciech Macek 	AL_SRDS_GRP_C,
54*3fc36ee0SWojciech Macek 	AL_SRDS_GRP_D,
55*3fc36ee0SWojciech Macek 	AL_SRDS_NUM_HSSP_GROUPS,
56*3fc36ee0SWojciech Macek #if CHECK_ALPINE_V2
57*3fc36ee0SWojciech Macek 	AL_SRDS_GRP_E = AL_SRDS_NUM_HSSP_GROUPS,
58*3fc36ee0SWojciech Macek 	AL_SRDS_NUM_GROUPS,
59*3fc36ee0SWojciech Macek #else
60*3fc36ee0SWojciech Macek 	AL_SRDS_NUM_GROUPS = AL_SRDS_NUM_HSSP_GROUPS,
61*3fc36ee0SWojciech Macek #endif
62*3fc36ee0SWojciech Macek };
63*3fc36ee0SWojciech Macek 
64*3fc36ee0SWojciech Macek int al_serdes_handle_grp_init(
65*3fc36ee0SWojciech Macek 	void __iomem			*serdes_regs_base,
66*3fc36ee0SWojciech Macek 	enum al_serdes_group		grp,
67*3fc36ee0SWojciech Macek 	struct al_serdes_grp_obj	*obj);
68*3fc36ee0SWojciech Macek 
69*3fc36ee0SWojciech Macek /* *INDENT-OFF* */
70*3fc36ee0SWojciech Macek #ifdef __cplusplus
71*3fc36ee0SWojciech Macek }
72*3fc36ee0SWojciech Macek #endif
73*3fc36ee0SWojciech Macek 
74*3fc36ee0SWojciech Macek /* *INDENT-ON* */
75*3fc36ee0SWojciech Macek #endif
76*3fc36ee0SWojciech Macek 
77*3fc36ee0SWojciech Macek /** @} end of SERDES group */
78*3fc36ee0SWojciech Macek 
79