fixes to arm64
This commit is contained in:
parent
ef4846b795
commit
25e750dec7
@ -158,3 +158,5 @@ CONFIG_SATA_AHCI_PLATFORM=y
|
|||||||
|
|
||||||
# CONFIG_PMIC_OPREGION is not set
|
# CONFIG_PMIC_OPREGION is not set
|
||||||
# CONFIG_DEBUG_RODATA is not set
|
# CONFIG_DEBUG_RODATA is not set
|
||||||
|
|
||||||
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||||
|
@ -1,38 +1,22 @@
|
|||||||
diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c
|
diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c
|
||||||
index 0ec0dc5..abd13dc 100644
|
index 3425f31..381c533 100644
|
||||||
--- a/arch/arm64/kernel/psci.c
|
--- a/arch/arm64/kernel/psci.c
|
||||||
+++ b/arch/arm64/kernel/psci.c
|
+++ b/arch/arm64/kernel/psci.c
|
||||||
@@ -115,9 +115,14 @@ static void psci_power_state_unpack(u32 power_state,
|
@@ -113,7 +113,7 @@ static void psci_power_state_unpack(u32 power_state,
|
||||||
* The following two functions are invoked via the invoke_psci_fn pointer
|
* The following two functions are invoked via the invoke_psci_fn pointer
|
||||||
* and will not be inlined, allowing us to piggyback on the AAPCS.
|
* and will not be inlined, allowing us to piggyback on the AAPCS.
|
||||||
*/
|
*/
|
||||||
-static noinline int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1,
|
-static noinline int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1,
|
||||||
- u64 arg2)
|
+static noinline notrace int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1,
|
||||||
+static noinline int __invoke_psci_fn_hvc(u64 _function_id, u64 _arg0,
|
u64 arg2)
|
||||||
+ u64 _arg1, u64 _arg2)
|
|
||||||
{
|
{
|
||||||
+ register u64 function_id asm("x0") = _function_id;
|
|
||||||
+ register u64 arg0 asm("x1") = _arg0;
|
|
||||||
+ register u64 arg1 asm("x2") = _arg1;
|
|
||||||
+ register u64 arg2 asm("x3") = _arg2;
|
|
||||||
+
|
|
||||||
asm volatile(
|
asm volatile(
|
||||||
__asmeq("%0", "x0")
|
@@ -128,7 +128,7 @@ static noinline int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1,
|
||||||
__asmeq("%1", "x1")
|
|
||||||
@@ -130,9 +135,14 @@ static noinline int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1,
|
|
||||||
return function_id;
|
return function_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
-static noinline int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1,
|
-static noinline int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1,
|
||||||
- u64 arg2)
|
+static noinline notrace int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1,
|
||||||
+static noinline int __invoke_psci_fn_smc(u64 _function_id, u64 _arg0,
|
u64 arg2)
|
||||||
+ u64 _arg1, u64 _arg2)
|
|
||||||
{
|
{
|
||||||
+ register u64 function_id asm("x0") = _function_id;
|
|
||||||
+ register u64 arg0 asm("x1") = _arg0;
|
|
||||||
+ register u64 arg1 asm("x2") = _arg1;
|
|
||||||
+ register u64 arg2 asm("x3") = _arg2;
|
|
||||||
+
|
|
||||||
asm volatile(
|
asm volatile(
|
||||||
__asmeq("%0", "x0")
|
|
||||||
__asmeq("%1", "x1")
|
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
commit fdd2bbd9e18e813faa3880f820c1b674267eec0c
|
||||||
|
Author: Kyle McMartin <kmcmarti@redhat.com>
|
||||||
|
Date: Wed Feb 18 09:49:05 2015 -0500
|
||||||
|
|
||||||
|
fixes for xgene enet
|
||||||
|
|
||||||
commit ac44fa9c24a21d78e8fff79c0dab3deea490d782
|
commit ac44fa9c24a21d78e8fff79c0dab3deea490d782
|
||||||
Author: Kyle McMartin <kmcmarti@redhat.com>
|
Author: Kyle McMartin <kmcmarti@redhat.com>
|
||||||
Date: Tue Feb 17 12:04:33 2015 -0500
|
Date: Tue Feb 17 12:04:33 2015 -0500
|
||||||
@ -1336,8 +1342,9 @@ Date: Tue May 13 22:25:26 2014 -0400
|
|||||||
drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c | 312 +++
|
drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c | 312 +++
|
||||||
drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c | 284 +++
|
drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c | 284 +++
|
||||||
drivers/net/ethernet/amd/xgbe-a0/xgbe.h | 868 +++++++
|
drivers/net/ethernet/amd/xgbe-a0/xgbe.h | 868 +++++++
|
||||||
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 2 +-
|
drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 69 +-
|
||||||
drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 1 +
|
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 111 +-
|
||||||
|
drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 4 +-
|
||||||
drivers/net/ethernet/smsc/smc91x.c | 10 +
|
drivers/net/ethernet/smsc/smc91x.c | 10 +
|
||||||
drivers/net/phy/Makefile | 1 +
|
drivers/net/phy/Makefile | 1 +
|
||||||
drivers/net/phy/amd-xgbe-phy-a0.c | 1829 +++++++++++++
|
drivers/net/phy/amd-xgbe-phy-a0.c | 1829 +++++++++++++
|
||||||
@ -1374,7 +1381,7 @@ Date: Tue May 13 22:25:26 2014 -0400
|
|||||||
virt/kvm/arm/vgic-v2.c | 86 +-
|
virt/kvm/arm/vgic-v2.c | 86 +-
|
||||||
virt/kvm/arm/vgic-v3.c | 8 +-
|
virt/kvm/arm/vgic-v3.c | 8 +-
|
||||||
virt/kvm/arm/vgic.c | 32 +-
|
virt/kvm/arm/vgic.c | 32 +-
|
||||||
109 files changed, 17297 insertions(+), 641 deletions(-)
|
110 files changed, 17386 insertions(+), 733 deletions(-)
|
||||||
|
|
||||||
diff --git a/Documentation/ABI/testing/sysfs-firmware-dmi b/Documentation/ABI/testing/sysfs-firmware-dmi
|
diff --git a/Documentation/ABI/testing/sysfs-firmware-dmi b/Documentation/ABI/testing/sysfs-firmware-dmi
|
||||||
index c78f9ab..3a9ffe8 100644
|
index c78f9ab..3a9ffe8 100644
|
||||||
@ -17469,11 +17476,310 @@ index 0000000..dd8500d
|
|||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
|
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
|
||||||
|
index 869d97f..29aad5e 100644
|
||||||
|
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
|
||||||
|
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
|
||||||
|
@@ -593,12 +593,10 @@ static int xgene_enet_reset(struct xgene_enet_pdata *pdata)
|
||||||
|
if (!xgene_ring_mgr_init(pdata))
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
- if (!efi_enabled(EFI_BOOT)) {
|
||||||
|
- clk_prepare_enable(pdata->clk);
|
||||||
|
- clk_disable_unprepare(pdata->clk);
|
||||||
|
- clk_prepare_enable(pdata->clk);
|
||||||
|
- xgene_enet_ecc_init(pdata);
|
||||||
|
- }
|
||||||
|
+ clk_prepare_enable(pdata->clk);
|
||||||
|
+ clk_disable_unprepare(pdata->clk);
|
||||||
|
+ clk_prepare_enable(pdata->clk);
|
||||||
|
+ xgene_enet_ecc_init(pdata);
|
||||||
|
xgene_enet_config_ring_if_assoc(pdata);
|
||||||
|
|
||||||
|
/* Enable auto-incr for scanning */
|
||||||
|
@@ -676,7 +674,7 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
|
||||||
|
|
||||||
|
phy_dev = pdata->phy_dev;
|
||||||
|
|
||||||
|
- if (!phy_dev ||
|
||||||
|
+ if (phy_dev == NULL ||
|
||||||
|
phy_connect_direct(ndev, phy_dev, &xgene_enet_adjust_link,
|
||||||
|
pdata->phy_mode)) {
|
||||||
|
netdev_err(ndev, "Could not connect to PHY\n");
|
||||||
|
@@ -692,37 +690,23 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int xgene_mdiobus_register(struct xgene_enet_pdata *pdata,
|
||||||
|
- struct mii_bus *mdio)
|
||||||
|
+#ifdef CONFIG_ACPI
|
||||||
|
+static int xgene_acpi_mdiobus_register(struct xgene_enet_pdata *pdata,
|
||||||
|
+ struct mii_bus *mdio)
|
||||||
|
{
|
||||||
|
struct device *dev = &pdata->pdev->dev;
|
||||||
|
- struct net_device *ndev = pdata->ndev;
|
||||||
|
struct phy_device *phy;
|
||||||
|
- struct device_node *child_np;
|
||||||
|
- struct device_node *mdio_np = NULL;
|
||||||
|
- int ret;
|
||||||
|
+ int i, ret;
|
||||||
|
u32 phy_id;
|
||||||
|
|
||||||
|
- if (dev->of_node) {
|
||||||
|
- for_each_child_of_node(dev->of_node, child_np) {
|
||||||
|
- if (of_device_is_compatible(child_np,
|
||||||
|
- "apm,xgene-mdio")) {
|
||||||
|
- mdio_np = child_np;
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (!mdio_np) {
|
||||||
|
- netdev_dbg(ndev, "No mdio node in the dts\n");
|
||||||
|
- return -ENXIO;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return of_mdiobus_register(mdio, mdio_np);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
/* Mask out all PHYs from auto probing. */
|
||||||
|
mdio->phy_mask = ~0;
|
||||||
|
|
||||||
|
+ /* Clear all the IRQ properties */
|
||||||
|
+ if (mdio->irq)
|
||||||
|
+ for (i = 0; i < PHY_MAX_ADDR; i++)
|
||||||
|
+ mdio->irq[i] = PHY_POLL;
|
||||||
|
+
|
||||||
|
/* Register the MDIO bus */
|
||||||
|
ret = mdiobus_register(mdio);
|
||||||
|
if (ret)
|
||||||
|
@@ -730,8 +714,6 @@ static int xgene_mdiobus_register(struct xgene_enet_pdata *pdata,
|
||||||
|
|
||||||
|
ret = device_property_read_u32(dev, "phy-channel", &phy_id);
|
||||||
|
if (ret)
|
||||||
|
- ret = device_property_read_u32(dev, "phy-addr", &phy_id);
|
||||||
|
- if (ret)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
phy = get_phy_device(mdio, phy_id, true);
|
||||||
|
@@ -746,13 +728,31 @@ static int xgene_mdiobus_register(struct xgene_enet_pdata *pdata,
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+#define xgene_acpi_mdiobus_register(a, b) -1
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
|
||||||
|
{
|
||||||
|
struct net_device *ndev = pdata->ndev;
|
||||||
|
+ struct device *dev = &pdata->pdev->dev;
|
||||||
|
+ struct device_node *child_np;
|
||||||
|
+ struct device_node *mdio_np = NULL;
|
||||||
|
struct mii_bus *mdio_bus;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
+ for_each_child_of_node(dev->of_node, child_np) {
|
||||||
|
+ if (of_device_is_compatible(child_np, "apm,xgene-mdio")) {
|
||||||
|
+ mdio_np = child_np;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (dev->of_node && !mdio_np) {
|
||||||
|
+ netdev_dbg(ndev, "No mdio node in the dts\n");
|
||||||
|
+ return -ENXIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
mdio_bus = mdiobus_alloc();
|
||||||
|
if (!mdio_bus)
|
||||||
|
return -ENOMEM;
|
||||||
|
@@ -766,7 +766,10 @@ int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
|
||||||
|
mdio_bus->priv = pdata;
|
||||||
|
mdio_bus->parent = &ndev->dev;
|
||||||
|
|
||||||
|
- ret = xgene_mdiobus_register(pdata, mdio_bus);
|
||||||
|
+ if (dev->of_node)
|
||||||
|
+ ret = of_mdiobus_register(mdio_bus, mdio_np);
|
||||||
|
+ else
|
||||||
|
+ ret = xgene_acpi_mdiobus_register(pdata, mdio_bus);
|
||||||
|
if (ret) {
|
||||||
|
netdev_err(ndev, "Failed to register MDIO bus\n");
|
||||||
|
mdiobus_free(mdio_bus);
|
||||||
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||||
index 44b1537..37b318a 100644
|
index 44b1537..a4a53a7 100644
|
||||||
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||||
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||||
@@ -913,7 +913,7 @@ static int xgene_enet_init_hw(struct xgene_enet_pdata *pdata)
|
@@ -24,10 +24,6 @@
|
||||||
|
#include "xgene_enet_sgmac.h"
|
||||||
|
#include "xgene_enet_xgmac.h"
|
||||||
|
|
||||||
|
-#define RES_ENET_CSR 0
|
||||||
|
-#define RES_RING_CSR 1
|
||||||
|
-#define RES_RING_CMD 2
|
||||||
|
-
|
||||||
|
static void xgene_enet_init_bufpool(struct xgene_enet_desc_ring *buf_pool)
|
||||||
|
{
|
||||||
|
struct xgene_enet_raw_desc16 *raw_desc;
|
||||||
|
@@ -752,40 +748,41 @@ static const struct net_device_ops xgene_ndev_ops = {
|
||||||
|
.ndo_set_mac_address = xgene_enet_set_mac_address,
|
||||||
|
};
|
||||||
|
|
||||||
|
-static int xgene_get_mac_address(struct device *dev,
|
||||||
|
- unsigned char *addr)
|
||||||
|
+#ifdef CONFIG_ACPI
|
||||||
|
+static int acpi_get_mac_address(struct device *dev,
|
||||||
|
+ unsigned char *addr)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- ret = device_property_read_u8_array(dev, "local-mac-address", addr, 6);
|
||||||
|
- if (ret)
|
||||||
|
- ret = device_property_read_u8_array(dev, "mac-address",
|
||||||
|
- addr, 6);
|
||||||
|
+ ret = device_property_read_u8_array(dev, "mac-address", addr, 6);
|
||||||
|
if (ret)
|
||||||
|
- return -ENODEV;
|
||||||
|
+ return 0;
|
||||||
|
|
||||||
|
- return ETH_ALEN;
|
||||||
|
+ return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int xgene_get_phy_mode(struct device *dev)
|
||||||
|
+static int acpi_get_phy_mode(struct device *dev)
|
||||||
|
{
|
||||||
|
- int i, ret;
|
||||||
|
+ int i, ret, phy_mode;
|
||||||
|
char *modestr;
|
||||||
|
|
||||||
|
- ret = device_property_read_string(dev, "phy-connection-type",
|
||||||
|
- (const char **)&modestr);
|
||||||
|
- if (ret)
|
||||||
|
- ret = device_property_read_string(dev, "phy-mode",
|
||||||
|
- (const char **)&modestr);
|
||||||
|
+ ret = device_property_read_string(dev, "phy-mode", &modestr);
|
||||||
|
if (ret)
|
||||||
|
- return -ENODEV;
|
||||||
|
+ return -1;
|
||||||
|
|
||||||
|
+ phy_mode = -1;
|
||||||
|
for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) {
|
||||||
|
- if (!strcasecmp(modestr, phy_modes(i)))
|
||||||
|
- return i;
|
||||||
|
+ if (!strcasecmp(modestr, phy_modes(i))) {
|
||||||
|
+ phy_mode = i;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
- return -ENODEV;
|
||||||
|
+ return phy_mode;
|
||||||
|
}
|
||||||
|
+#else
|
||||||
|
+#define acpi_get_mac_address(a, b, c) 0
|
||||||
|
+#define acpi_get_phy_mode(a) -1
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
|
||||||
|
{
|
||||||
|
@@ -794,45 +791,38 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
|
||||||
|
struct device *dev;
|
||||||
|
struct resource *res;
|
||||||
|
void __iomem *base_addr;
|
||||||
|
+ const char *mac;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
pdev = pdata->pdev;
|
||||||
|
dev = &pdev->dev;
|
||||||
|
ndev = pdata->ndev;
|
||||||
|
|
||||||
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, RES_ENET_CSR);
|
||||||
|
- if (!res) {
|
||||||
|
- dev_err(dev, "Resource enet_csr not defined\n");
|
||||||
|
- return -ENODEV;
|
||||||
|
- }
|
||||||
|
- pdata->base_addr = devm_ioremap(dev, res->start, resource_size(res));
|
||||||
|
- if (!pdata->base_addr) {
|
||||||
|
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "enet_csr");
|
||||||
|
+ if (!res)
|
||||||
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
+ pdata->base_addr = devm_ioremap_resource(dev, res);
|
||||||
|
+ if (IS_ERR(pdata->base_addr)) {
|
||||||
|
dev_err(dev, "Unable to retrieve ENET Port CSR region\n");
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ return PTR_ERR(pdata->base_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, RES_RING_CSR);
|
||||||
|
- if (!res) {
|
||||||
|
- dev_err(dev, "Resource ring_csr not defined\n");
|
||||||
|
- return -ENODEV;
|
||||||
|
- }
|
||||||
|
- pdata->ring_csr_addr = devm_ioremap(dev, res->start,
|
||||||
|
- resource_size(res));
|
||||||
|
- if (!pdata->ring_csr_addr) {
|
||||||
|
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_csr");
|
||||||
|
+ if (!res)
|
||||||
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
|
||||||
|
+ pdata->ring_csr_addr = devm_ioremap_resource(dev, res);
|
||||||
|
+ if (IS_ERR(pdata->ring_csr_addr)) {
|
||||||
|
dev_err(dev, "Unable to retrieve ENET Ring CSR region\n");
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ return PTR_ERR(pdata->ring_csr_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, RES_RING_CMD);
|
||||||
|
- if (!res) {
|
||||||
|
- dev_err(dev, "Resource ring_cmd not defined\n");
|
||||||
|
- return -ENODEV;
|
||||||
|
- }
|
||||||
|
- pdata->ring_cmd_addr = devm_ioremap(dev, res->start,
|
||||||
|
- resource_size(res));
|
||||||
|
- if (!pdata->ring_cmd_addr) {
|
||||||
|
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_cmd");
|
||||||
|
+ if (!res)
|
||||||
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
|
||||||
|
+ pdata->ring_cmd_addr = devm_ioremap_resource(dev, res);
|
||||||
|
+ if (IS_ERR(pdata->ring_cmd_addr)) {
|
||||||
|
dev_err(dev, "Unable to retrieve ENET Ring command region\n");
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ return PTR_ERR(pdata->ring_cmd_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = platform_get_irq(pdev, 0);
|
||||||
|
@@ -843,12 +833,16 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
|
||||||
|
}
|
||||||
|
pdata->rx_irq = ret;
|
||||||
|
|
||||||
|
- if (xgene_get_mac_address(dev, ndev->dev_addr) != ETH_ALEN)
|
||||||
|
+ mac = of_get_mac_address(dev->of_node);
|
||||||
|
+ if (mac)
|
||||||
|
+ memcpy(ndev->dev_addr, mac, ndev->addr_len);
|
||||||
|
+ else if (!acpi_get_mac_address(dev, ndev->dev_addr))
|
||||||
|
eth_hw_addr_random(ndev);
|
||||||
|
-
|
||||||
|
memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
|
||||||
|
|
||||||
|
- pdata->phy_mode = xgene_get_phy_mode(dev);
|
||||||
|
+ pdata->phy_mode = of_get_phy_mode(pdev->dev.of_node);
|
||||||
|
+ if (pdata->phy_mode < 0)
|
||||||
|
+ pdata->phy_mode = acpi_get_phy_mode(dev);
|
||||||
|
if (pdata->phy_mode < 0) {
|
||||||
|
dev_err(dev, "Unable to get phy-connection-type\n");
|
||||||
|
return pdata->phy_mode;
|
||||||
|
@@ -862,7 +856,10 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
|
||||||
|
|
||||||
|
pdata->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
|
if (IS_ERR(pdata->clk)) {
|
||||||
|
- /* Firmware may have set up the clock already. */
|
||||||
|
+ /*
|
||||||
|
+ * Not necessarily an error. Firmware may have
|
||||||
|
+ * set up the clock already.
|
||||||
|
+ */
|
||||||
|
pdata->clk = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -913,7 +910,7 @@ static int xgene_enet_init_hw(struct xgene_enet_pdata *pdata)
|
||||||
pdata->port_ops->cle_bypass(pdata, dst_ring_num, buf_pool->id);
|
pdata->port_ops->cle_bypass(pdata, dst_ring_num, buf_pool->id);
|
||||||
pdata->mac_ops->init(pdata);
|
pdata->mac_ops->init(pdata);
|
||||||
|
|
||||||
@ -17482,11 +17788,43 @@ index 44b1537..37b318a 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void xgene_enet_setup_ops(struct xgene_enet_pdata *pdata)
|
static void xgene_enet_setup_ops(struct xgene_enet_pdata *pdata)
|
||||||
|
@@ -1030,17 +1027,17 @@ static const struct acpi_device_id xgene_enet_acpi_match[] = {
|
||||||
|
MODULE_DEVICE_TABLE(acpi, xgene_enet_acpi_match);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-static struct of_device_id xgene_enet_of_match[] = {
|
||||||
|
+static struct of_device_id xgene_enet_match[] = {
|
||||||
|
{.compatible = "apm,xgene-enet",},
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
|
||||||
|
-MODULE_DEVICE_TABLE(of, xgene_enet_of_match);
|
||||||
|
+MODULE_DEVICE_TABLE(of, xgene_enet_match);
|
||||||
|
|
||||||
|
static struct platform_driver xgene_enet_driver = {
|
||||||
|
.driver = {
|
||||||
|
.name = "xgene-enet",
|
||||||
|
- .of_match_table = of_match_ptr(xgene_enet_of_match),
|
||||||
|
+ .of_match_table = xgene_enet_match,
|
||||||
|
.acpi_match_table = ACPI_PTR(xgene_enet_acpi_match),
|
||||||
|
},
|
||||||
|
.probe = xgene_enet_probe,
|
||||||
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
||||||
index c2d465c..9f50bd9 100644
|
index c2d465c..0e06cad 100644
|
||||||
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
||||||
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h
|
||||||
@@ -34,6 +34,7 @@
|
@@ -22,10 +22,7 @@
|
||||||
|
#ifndef __XGENE_ENET_MAIN_H__
|
||||||
|
#define __XGENE_ENET_MAIN_H__
|
||||||
|
|
||||||
|
-#include <linux/acpi.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
-#include <linux/efi.h>
|
||||||
|
-#include <linux/io.h>
|
||||||
|
#include <linux/of_platform.h>
|
||||||
|
#include <linux/of_net.h>
|
||||||
|
#include <linux/of_mdio.h>
|
||||||
|
@@ -34,6 +31,7 @@
|
||||||
#include <linux/prefetch.h>
|
#include <linux/prefetch.h>
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
#include <linux/phy.h>
|
#include <linux/phy.h>
|
||||||
|
@ -42,7 +42,7 @@ Summary: The Linux kernel
|
|||||||
# For non-released -rc kernels, this will be appended after the rcX and
|
# For non-released -rc kernels, this will be appended after the rcX and
|
||||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||||
#
|
#
|
||||||
%global baserelease 1
|
%global baserelease 2
|
||||||
%global fedora_build %{baserelease}
|
%global fedora_build %{baserelease}
|
||||||
|
|
||||||
# base_sublevel is the kernel version we're starting with and patching
|
# base_sublevel is the kernel version we're starting with and patching
|
||||||
@ -2212,6 +2212,12 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Feb 18 2015 Kyle McMartin <kyle@fedoraproject.org> - 3.20.0-0.rc0.git8.2
|
||||||
|
- kernel-arm64.patch: Revert dropping some of the xgene fixes we carried
|
||||||
|
against upstream. (#1193875)
|
||||||
|
- kernel-arm64-fix-psci-when-pg.patch: make it simpler.
|
||||||
|
- config-arm64: turn on CONFIG_DEBUG_SECTION_MISMATCH.
|
||||||
|
|
||||||
* Wed Feb 18 2015 Josh Boyer <jwboyer@fedoraproject.org> - 3.20.0-0.rc0.git8.1
|
* Wed Feb 18 2015 Josh Boyer <jwboyer@fedoraproject.org> - 3.20.0-0.rc0.git8.1
|
||||||
- Linux v3.19-8217-gcc4f9c2a91b7
|
- Linux v3.19-8217-gcc4f9c2a91b7
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user