/*
 *  Atheros AR71xx SoC specific platform data definitions
 *
 *  Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License version 2 as published
 *  by the Free Software Foundation.
 */

#ifndef __ASM_MACH_ATH79_PLATFORM_H
#define __ASM_MACH_ATH79_PLATFORM_H

#include <linux/if_ether.h>
#include <linux/skbuff.h>
#include <linux/phy.h>
#include <linux/spi/spi.h>

struct ag71xx_switch_platform_data {
	u8		phy4_mii_en:1;
	u8		phy_poll_mask;
};

struct ag71xx_platform_data {
	phy_interface_t	phy_if_mode;
	u32		phy_mask;
	int		speed;
	int		duplex;
	u32		reset_bit;
	u8		mac_addr[ETH_ALEN];
	struct device	*mii_bus_dev;

	u8		has_gbit:1;
	u8		is_ar91xx:1;
	u8		is_ar7240:1;
	u8		is_ar724x:1;
	u8		has_ar8216:1;
	u8		force_link:1;
	u8		is_qca956x:1;

	struct ag71xx_switch_platform_data *switch_data;

	void		(*ddr_flush)(void);
	void		(*set_speed)(int speed);
	void		(*update_pll)(u32 pll_10, u32 pll_100, u32 pll_1000);

	u32		fifo_cfg1;
	u32		fifo_cfg2;
	u32		fifo_cfg3;
};

struct ag71xx_mdio_platform_data {
	u32		phy_mask;
	u8		builtin_switch:1;
	u8		is_ar7240:1;
	u8		is_ar9330:1;
	u8		is_ar934x:1;
	unsigned long	mdio_clock;
	unsigned long	ref_clock;
};

#endif /* __ASM_MACH_ATH79_PLATFORM_H */
