xref: /freebsd/sys/dev/etherswitch/arswitch/arswitch_8327.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
17330dd0bSAdrian Chadd /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
47330dd0bSAdrian Chadd  * Copyright (c) 2014 Adrian Chadd <adrian@FreeBSD.org>
57330dd0bSAdrian Chadd  * All rights reserved.
67330dd0bSAdrian Chadd  *
77330dd0bSAdrian Chadd  * Redistribution and use in source and binary forms, with or without
87330dd0bSAdrian Chadd  * modification, are permitted provided that the following conditions
97330dd0bSAdrian Chadd  * are met:
107330dd0bSAdrian Chadd  * 1. Redistributions of source code must retain the above copyright
117330dd0bSAdrian Chadd  *    notice, this list of conditions and the following disclaimer.
127330dd0bSAdrian Chadd  * 2. Redistributions in binary form must reproduce the above copyright
137330dd0bSAdrian Chadd  *    notice, this list of conditions and the following disclaimer in the
147330dd0bSAdrian Chadd  *    documentation and/or other materials provided with the distribution.
157330dd0bSAdrian Chadd  *
167330dd0bSAdrian Chadd  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
177330dd0bSAdrian Chadd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
187330dd0bSAdrian Chadd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
197330dd0bSAdrian Chadd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
207330dd0bSAdrian Chadd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
217330dd0bSAdrian Chadd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
227330dd0bSAdrian Chadd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
237330dd0bSAdrian Chadd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
247330dd0bSAdrian Chadd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
257330dd0bSAdrian Chadd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
267330dd0bSAdrian Chadd  * SUCH DAMAGE.
277330dd0bSAdrian Chadd  */
287330dd0bSAdrian Chadd #ifndef	__ARSWITCH_8327_H__
297330dd0bSAdrian Chadd #define	__ARSWITCH_8327_H__
307330dd0bSAdrian Chadd 
317330dd0bSAdrian Chadd enum ar8327_pad_mode {
327330dd0bSAdrian Chadd 	AR8327_PAD_NC = 0,
337330dd0bSAdrian Chadd 	AR8327_PAD_MAC2MAC_MII,
347330dd0bSAdrian Chadd 	AR8327_PAD_MAC2MAC_GMII,
357330dd0bSAdrian Chadd 	AR8327_PAD_MAC_SGMII,
367330dd0bSAdrian Chadd 	AR8327_PAD_MAC2PHY_MII,
377330dd0bSAdrian Chadd 	AR8327_PAD_MAC2PHY_GMII,
387330dd0bSAdrian Chadd 	AR8327_PAD_MAC_RGMII,
397330dd0bSAdrian Chadd 	AR8327_PAD_PHY_GMII,
407330dd0bSAdrian Chadd 	AR8327_PAD_PHY_RGMII,
417330dd0bSAdrian Chadd 	AR8327_PAD_PHY_MII,
427330dd0bSAdrian Chadd };
437330dd0bSAdrian Chadd 
447330dd0bSAdrian Chadd enum ar8327_clk_delay_sel {
457330dd0bSAdrian Chadd 	AR8327_CLK_DELAY_SEL0 = 0,
467330dd0bSAdrian Chadd 	AR8327_CLK_DELAY_SEL1,
477330dd0bSAdrian Chadd 	AR8327_CLK_DELAY_SEL2,
487330dd0bSAdrian Chadd 	AR8327_CLK_DELAY_SEL3,
497330dd0bSAdrian Chadd };
507330dd0bSAdrian Chadd 
517330dd0bSAdrian Chadd /* XXX update the field types */
527330dd0bSAdrian Chadd struct ar8327_pad_cfg {
537330dd0bSAdrian Chadd 	uint32_t mode;
547330dd0bSAdrian Chadd 	uint32_t rxclk_sel;
557330dd0bSAdrian Chadd 	uint32_t txclk_sel;
567330dd0bSAdrian Chadd 	uint32_t txclk_delay_sel;
577330dd0bSAdrian Chadd 	uint32_t rxclk_delay_sel;
587330dd0bSAdrian Chadd 	uint32_t txclk_delay_en;
597330dd0bSAdrian Chadd 	uint32_t rxclk_delay_en;
607330dd0bSAdrian Chadd 	uint32_t sgmii_delay_en;
617330dd0bSAdrian Chadd 	uint32_t pipe_rxclk_sel;
627330dd0bSAdrian Chadd };
637330dd0bSAdrian Chadd 
647330dd0bSAdrian Chadd struct ar8327_sgmii_cfg {
657330dd0bSAdrian Chadd 	uint32_t sgmii_ctrl;
667330dd0bSAdrian Chadd 	uint32_t serdes_aen;
677330dd0bSAdrian Chadd };
687330dd0bSAdrian Chadd 
697330dd0bSAdrian Chadd struct ar8327_led_cfg {
707330dd0bSAdrian Chadd 	uint32_t led_ctrl0;
717330dd0bSAdrian Chadd 	uint32_t led_ctrl1;
727330dd0bSAdrian Chadd 	uint32_t led_ctrl2;
737330dd0bSAdrian Chadd 	uint32_t led_ctrl3;
747330dd0bSAdrian Chadd 	uint32_t open_drain;
757330dd0bSAdrian Chadd };
767330dd0bSAdrian Chadd 
777330dd0bSAdrian Chadd struct ar8327_port_cfg {
787330dd0bSAdrian Chadd #define	AR8327_PORT_SPEED_10		1
797330dd0bSAdrian Chadd #define	AR8327_PORT_SPEED_100		2
807330dd0bSAdrian Chadd #define	AR8327_PORT_SPEED_1000		3
817330dd0bSAdrian Chadd 	uint32_t speed;
827330dd0bSAdrian Chadd 	uint32_t force_link;
837330dd0bSAdrian Chadd 	uint32_t duplex;
847330dd0bSAdrian Chadd 	uint32_t txpause;
857330dd0bSAdrian Chadd 	uint32_t rxpause;
867330dd0bSAdrian Chadd };
877330dd0bSAdrian Chadd 
88c94dc808SAdrian Chadd extern struct ar8327_led_mapping {
89c94dc808SAdrian Chadd 	int reg;
90c94dc808SAdrian Chadd 	int shift;
91c94dc808SAdrian Chadd } ar8327_led_mapping[AR8327_NUM_PHYS][ETHERSWITCH_PORT_MAX_LEDS];
92c94dc808SAdrian Chadd 
937330dd0bSAdrian Chadd extern	void ar8327_attach(struct arswitch_softc *sc);
947330dd0bSAdrian Chadd 
957330dd0bSAdrian Chadd #endif	/* __ARSWITCH_8327_H__ */
967330dd0bSAdrian Chadd 
97