mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-05-05 18:06:12 +02:00
ar8327: remove platform data support
All targets using ar8327 use OF. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://github.com/openwrt/openwrt/pull/22069 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
5ee6ddb461
commit
fcd06f5915
@ -14,7 +14,7 @@ with interrupts used.
|
||||
---
|
||||
--- a/drivers/net/phy/ar8216.c
|
||||
+++ b/drivers/net/phy/ar8216.c
|
||||
@@ -251,6 +251,7 @@ ar8xxx_mii_write32(struct ar8xxx_priv *p
|
||||
@@ -250,6 +250,7 @@ ar8xxx_mii_write32(struct ar8xxx_priv *p
|
||||
u32
|
||||
ar8xxx_read(struct ar8xxx_priv *priv, int reg)
|
||||
{
|
||||
@ -22,7 +22,7 @@ with interrupts used.
|
||||
struct mii_bus *bus = priv->mii_bus;
|
||||
u16 r1, r2, page;
|
||||
u32 val;
|
||||
@@ -258,11 +259,13 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
|
||||
@@ -257,11 +258,13 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
|
||||
split_addr((u32) reg, &r1, &r2, &page);
|
||||
|
||||
mutex_lock(&bus->mdio_lock);
|
||||
@ -36,7 +36,7 @@ with interrupts used.
|
||||
mutex_unlock(&bus->mdio_lock);
|
||||
|
||||
return val;
|
||||
@@ -271,17 +274,20 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
|
||||
@@ -270,17 +273,20 @@ ar8xxx_read(struct ar8xxx_priv *priv, in
|
||||
void
|
||||
ar8xxx_write(struct ar8xxx_priv *priv, int reg, u32 val)
|
||||
{
|
||||
|
||||
@ -33,7 +33,6 @@
|
||||
#include <linux/phy.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/lockdep.h>
|
||||
#include <linux/ar8216_platform.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include "ar8216.h"
|
||||
|
||||
@ -21,7 +21,6 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/lockdep.h>
|
||||
#include <linux/ar8216_platform.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
@ -531,89 +530,6 @@ ar8327_leds_cleanup(struct ar8xxx_priv *priv)
|
||||
kfree(data->leds);
|
||||
}
|
||||
|
||||
static int
|
||||
ar8327_hw_config_pdata(struct ar8xxx_priv *priv,
|
||||
struct ar8327_platform_data *pdata)
|
||||
{
|
||||
struct ar8327_led_cfg *led_cfg;
|
||||
struct ar8327_data *data = priv->chip_data;
|
||||
u32 pos, new_pos;
|
||||
u32 t;
|
||||
|
||||
if (!pdata)
|
||||
return -EINVAL;
|
||||
|
||||
priv->get_port_link = pdata->get_port_link;
|
||||
|
||||
data->port0_status = ar8327_get_port_init_status(&pdata->port0_cfg);
|
||||
data->port6_status = ar8327_get_port_init_status(&pdata->port6_cfg);
|
||||
|
||||
t = ar8327_get_pad_cfg(pdata->pad0_cfg);
|
||||
if (chip_is_ar8337(priv) && !pdata->pad0_cfg->mac06_exchange_dis)
|
||||
t |= AR8337_PAD_MAC06_EXCHANGE_EN;
|
||||
ar8xxx_write(priv, AR8327_REG_PAD0_MODE, t);
|
||||
|
||||
t = ar8327_get_pad_cfg(pdata->pad5_cfg);
|
||||
ar8xxx_write(priv, AR8327_REG_PAD5_MODE, t);
|
||||
t = ar8327_get_pad_cfg(pdata->pad6_cfg);
|
||||
ar8xxx_write(priv, AR8327_REG_PAD6_MODE, t);
|
||||
|
||||
pos = ar8xxx_read(priv, AR8327_REG_POWER_ON_STRAP);
|
||||
new_pos = pos;
|
||||
|
||||
led_cfg = pdata->led_cfg;
|
||||
if (led_cfg) {
|
||||
if (led_cfg->open_drain)
|
||||
new_pos |= AR8327_POWER_ON_STRAP_LED_OPEN_EN;
|
||||
else
|
||||
new_pos &= ~AR8327_POWER_ON_STRAP_LED_OPEN_EN;
|
||||
|
||||
ar8xxx_write(priv, AR8327_REG_LED_CTRL0, led_cfg->led_ctrl0);
|
||||
ar8xxx_write(priv, AR8327_REG_LED_CTRL1, led_cfg->led_ctrl1);
|
||||
ar8xxx_write(priv, AR8327_REG_LED_CTRL2, led_cfg->led_ctrl2);
|
||||
ar8xxx_write(priv, AR8327_REG_LED_CTRL3, led_cfg->led_ctrl3);
|
||||
|
||||
if (new_pos != pos)
|
||||
new_pos |= AR8327_POWER_ON_STRAP_POWER_ON_SEL;
|
||||
}
|
||||
|
||||
if (pdata->sgmii_cfg) {
|
||||
t = pdata->sgmii_cfg->sgmii_ctrl;
|
||||
if (priv->chip_rev == 1)
|
||||
t |= AR8327_SGMII_CTRL_EN_PLL |
|
||||
AR8327_SGMII_CTRL_EN_RX |
|
||||
AR8327_SGMII_CTRL_EN_TX;
|
||||
else
|
||||
t &= ~(AR8327_SGMII_CTRL_EN_PLL |
|
||||
AR8327_SGMII_CTRL_EN_RX |
|
||||
AR8327_SGMII_CTRL_EN_TX);
|
||||
|
||||
ar8xxx_write(priv, AR8327_REG_SGMII_CTRL, t);
|
||||
|
||||
if (pdata->sgmii_cfg->serdes_aen)
|
||||
new_pos &= ~AR8327_POWER_ON_STRAP_SERDES_AEN;
|
||||
else
|
||||
new_pos |= AR8327_POWER_ON_STRAP_SERDES_AEN;
|
||||
}
|
||||
|
||||
ar8xxx_write(priv, AR8327_REG_POWER_ON_STRAP, new_pos);
|
||||
|
||||
if (pdata->leds && pdata->num_leds) {
|
||||
int i;
|
||||
|
||||
data->leds = kzalloc(pdata->num_leds * sizeof(void *),
|
||||
GFP_KERNEL);
|
||||
if (!data->leds)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < pdata->num_leds; i++)
|
||||
ar8327_led_create(priv, &pdata->leds[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static int
|
||||
ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np)
|
||||
{
|
||||
@ -684,13 +600,6 @@ ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np)
|
||||
of_node_put(leds);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline int
|
||||
ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int
|
||||
ar8327_hw_init(struct ar8xxx_priv *priv)
|
||||
@ -701,12 +610,7 @@ ar8327_hw_init(struct ar8xxx_priv *priv)
|
||||
if (!priv->chip_data)
|
||||
return -ENOMEM;
|
||||
|
||||
if (priv->pdev->of_node)
|
||||
ret = ar8327_hw_config_of(priv, priv->pdev->of_node);
|
||||
else
|
||||
ret = ar8327_hw_config_pdata(priv,
|
||||
priv->phy->mdio.dev.platform_data);
|
||||
|
||||
ret = ar8327_hw_config_of(priv, priv->pdev->of_node);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@ -303,6 +303,90 @@ struct ar8327_led_entry {
|
||||
unsigned shift;
|
||||
};
|
||||
|
||||
enum ar8327_pad_mode {
|
||||
AR8327_PAD_NC = 0,
|
||||
AR8327_PAD_MAC2MAC_MII,
|
||||
AR8327_PAD_MAC2MAC_GMII,
|
||||
AR8327_PAD_MAC_SGMII,
|
||||
AR8327_PAD_MAC2PHY_MII,
|
||||
AR8327_PAD_MAC2PHY_GMII,
|
||||
AR8327_PAD_MAC_RGMII,
|
||||
AR8327_PAD_PHY_GMII,
|
||||
AR8327_PAD_PHY_RGMII,
|
||||
AR8327_PAD_PHY_MII,
|
||||
};
|
||||
|
||||
enum ar8327_clk_delay_sel {
|
||||
AR8327_CLK_DELAY_SEL0 = 0,
|
||||
AR8327_CLK_DELAY_SEL1,
|
||||
AR8327_CLK_DELAY_SEL2,
|
||||
AR8327_CLK_DELAY_SEL3,
|
||||
};
|
||||
|
||||
struct ar8327_pad_cfg {
|
||||
enum ar8327_pad_mode mode;
|
||||
bool rxclk_sel;
|
||||
bool txclk_sel;
|
||||
bool pipe_rxclk_sel;
|
||||
bool txclk_delay_en;
|
||||
bool rxclk_delay_en;
|
||||
bool sgmii_delay_en;
|
||||
enum ar8327_clk_delay_sel txclk_delay_sel;
|
||||
enum ar8327_clk_delay_sel rxclk_delay_sel;
|
||||
bool mac06_exchange_dis;
|
||||
};
|
||||
|
||||
enum ar8327_port_speed {
|
||||
AR8327_PORT_SPEED_10 = 0,
|
||||
AR8327_PORT_SPEED_100,
|
||||
AR8327_PORT_SPEED_1000,
|
||||
};
|
||||
|
||||
struct ar8327_port_cfg {
|
||||
int force_link:1;
|
||||
enum ar8327_port_speed speed;
|
||||
int txpause:1;
|
||||
int rxpause:1;
|
||||
int duplex:1;
|
||||
};
|
||||
|
||||
struct ar8327_sgmii_cfg {
|
||||
u32 sgmii_ctrl;
|
||||
bool serdes_aen;
|
||||
};
|
||||
|
||||
enum ar8327_led_num {
|
||||
AR8327_LED_PHY0_0 = 0,
|
||||
AR8327_LED_PHY0_1,
|
||||
AR8327_LED_PHY0_2,
|
||||
AR8327_LED_PHY1_0,
|
||||
AR8327_LED_PHY1_1,
|
||||
AR8327_LED_PHY1_2,
|
||||
AR8327_LED_PHY2_0,
|
||||
AR8327_LED_PHY2_1,
|
||||
AR8327_LED_PHY2_2,
|
||||
AR8327_LED_PHY3_0,
|
||||
AR8327_LED_PHY3_1,
|
||||
AR8327_LED_PHY3_2,
|
||||
AR8327_LED_PHY4_0,
|
||||
AR8327_LED_PHY4_1,
|
||||
AR8327_LED_PHY4_2,
|
||||
};
|
||||
|
||||
enum ar8327_led_mode {
|
||||
AR8327_LED_MODE_HW = 0,
|
||||
AR8327_LED_MODE_SW,
|
||||
};
|
||||
|
||||
struct ar8327_led_info {
|
||||
const char *name;
|
||||
const char *default_trigger;
|
||||
bool active_low;
|
||||
enum ar8327_led_num led_num;
|
||||
enum ar8327_led_mode mode;
|
||||
struct fwnode_handle *fwnode;
|
||||
};
|
||||
|
||||
struct ar8327_led {
|
||||
struct led_classdev cdev;
|
||||
struct ar8xxx_priv *sw_priv;
|
||||
|
||||
@ -1,134 +0,0 @@
|
||||
/*
|
||||
* AR8216 switch driver platform data
|
||||
*
|
||||
* Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef AR8216_PLATFORM_H
|
||||
#define AR8216_PLATFORM_H
|
||||
|
||||
enum ar8327_pad_mode {
|
||||
AR8327_PAD_NC = 0,
|
||||
AR8327_PAD_MAC2MAC_MII,
|
||||
AR8327_PAD_MAC2MAC_GMII,
|
||||
AR8327_PAD_MAC_SGMII,
|
||||
AR8327_PAD_MAC2PHY_MII,
|
||||
AR8327_PAD_MAC2PHY_GMII,
|
||||
AR8327_PAD_MAC_RGMII,
|
||||
AR8327_PAD_PHY_GMII,
|
||||
AR8327_PAD_PHY_RGMII,
|
||||
AR8327_PAD_PHY_MII,
|
||||
};
|
||||
|
||||
enum ar8327_clk_delay_sel {
|
||||
AR8327_CLK_DELAY_SEL0 = 0,
|
||||
AR8327_CLK_DELAY_SEL1,
|
||||
AR8327_CLK_DELAY_SEL2,
|
||||
AR8327_CLK_DELAY_SEL3,
|
||||
};
|
||||
|
||||
struct ar8327_pad_cfg {
|
||||
enum ar8327_pad_mode mode;
|
||||
bool rxclk_sel;
|
||||
bool txclk_sel;
|
||||
bool pipe_rxclk_sel;
|
||||
bool txclk_delay_en;
|
||||
bool rxclk_delay_en;
|
||||
bool sgmii_delay_en;
|
||||
enum ar8327_clk_delay_sel txclk_delay_sel;
|
||||
enum ar8327_clk_delay_sel rxclk_delay_sel;
|
||||
bool mac06_exchange_dis;
|
||||
};
|
||||
|
||||
enum ar8327_port_speed {
|
||||
AR8327_PORT_SPEED_10 = 0,
|
||||
AR8327_PORT_SPEED_100,
|
||||
AR8327_PORT_SPEED_1000,
|
||||
};
|
||||
|
||||
struct ar8327_port_cfg {
|
||||
int force_link:1;
|
||||
enum ar8327_port_speed speed;
|
||||
int txpause:1;
|
||||
int rxpause:1;
|
||||
int duplex:1;
|
||||
};
|
||||
|
||||
struct ar8327_sgmii_cfg {
|
||||
u32 sgmii_ctrl;
|
||||
bool serdes_aen;
|
||||
};
|
||||
|
||||
struct ar8327_led_cfg {
|
||||
u32 led_ctrl0;
|
||||
u32 led_ctrl1;
|
||||
u32 led_ctrl2;
|
||||
u32 led_ctrl3;
|
||||
bool open_drain;
|
||||
};
|
||||
|
||||
enum ar8327_led_num {
|
||||
AR8327_LED_PHY0_0 = 0,
|
||||
AR8327_LED_PHY0_1,
|
||||
AR8327_LED_PHY0_2,
|
||||
AR8327_LED_PHY1_0,
|
||||
AR8327_LED_PHY1_1,
|
||||
AR8327_LED_PHY1_2,
|
||||
AR8327_LED_PHY2_0,
|
||||
AR8327_LED_PHY2_1,
|
||||
AR8327_LED_PHY2_2,
|
||||
AR8327_LED_PHY3_0,
|
||||
AR8327_LED_PHY3_1,
|
||||
AR8327_LED_PHY3_2,
|
||||
AR8327_LED_PHY4_0,
|
||||
AR8327_LED_PHY4_1,
|
||||
AR8327_LED_PHY4_2,
|
||||
};
|
||||
|
||||
enum ar8327_led_mode {
|
||||
AR8327_LED_MODE_HW = 0,
|
||||
AR8327_LED_MODE_SW,
|
||||
};
|
||||
|
||||
struct ar8327_led_info {
|
||||
const char *name;
|
||||
const char *default_trigger;
|
||||
bool active_low;
|
||||
enum ar8327_led_num led_num;
|
||||
enum ar8327_led_mode mode;
|
||||
struct fwnode_handle *fwnode;
|
||||
};
|
||||
|
||||
#define AR8327_LED_INFO(_led, _mode, _name) { \
|
||||
.name = (_name), \
|
||||
.led_num = AR8327_LED_ ## _led, \
|
||||
.mode = AR8327_LED_MODE_ ## _mode \
|
||||
}
|
||||
|
||||
struct ar8327_platform_data {
|
||||
struct ar8327_pad_cfg *pad0_cfg;
|
||||
struct ar8327_pad_cfg *pad5_cfg;
|
||||
struct ar8327_pad_cfg *pad6_cfg;
|
||||
struct ar8327_sgmii_cfg *sgmii_cfg;
|
||||
struct ar8327_port_cfg port0_cfg;
|
||||
struct ar8327_port_cfg port6_cfg;
|
||||
struct ar8327_led_cfg *led_cfg;
|
||||
|
||||
int (*get_port_link)(unsigned port);
|
||||
|
||||
unsigned num_leds;
|
||||
const struct ar8327_led_info *leds;
|
||||
};
|
||||
|
||||
#endif /* AR8216_PLATFORM_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user