- Refreshed all patches
- Adapted 1 (0031-mtd-add-SMEM-parser-for-QCOM-platforms.patch)
Compile tested on: brcm2708, cns3xxx, imx6
Run tested on: brcm2708, cns3xxx, imx6
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
[Compile and run tested on brcm2708]
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
22 files changed:
LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.4 = .71
LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.4 = .71
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.4.71 = 44cd5532d6df32197fd0f89e6f8c542fcfb76b52155a4d3a609ef4898522e6ab
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.4.71 = 44cd5532d6df32197fd0f89e6f8c542fcfb76b52155a4d3a609ef4898522e6ab
-LINUX_KERNEL_HASH-4.9.31 = 28cad8b66216da2550155b7a77f37041bde40b821567d1b288e5e9fb6cca9856
+LINUX_KERNEL_HASH-4.9.34 = 13d159d1b1fa41ea19fcc2defe09d7532f312ee0b8279b8e12c961d8b02a4546
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
#include "xhci.h"
#include "xhci-trace.h"
#include "xhci.h"
#include "xhci-trace.h"
-@@ -227,6 +229,458 @@ static void xhci_pme_acpi_rtd3_enable(st
+@@ -230,6 +232,458 @@ static void xhci_pme_acpi_rtd3_enable(st
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
-@@ -266,6 +720,22 @@ static int xhci_pci_probe(struct pci_dev
+@@ -269,6 +723,22 @@ static int xhci_pci_probe(struct pci_dev
struct hc_driver *driver;
struct usb_hcd *hcd;
struct hc_driver *driver;
struct usb_hcd *hcd;
driver = (struct hc_driver *)id->driver_data;
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
driver = (struct hc_driver *)id->driver_data;
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
-@@ -323,6 +793,16 @@ static void xhci_pci_remove(struct pci_d
+@@ -326,6 +796,16 @@ static void xhci_pci_remove(struct pci_d
--- a/drivers/net/phy/b53/b53_common.c
+++ b/drivers/net/phy/b53/b53_common.c
--- a/drivers/net/phy/b53/b53_common.c
+++ b/drivers/net/phy/b53/b53_common.c
-@@ -25,6 +25,7 @@
- #include <linux/module.h>
- #include <linux/switch.h>
+@@ -27,6 +27,7 @@
+ #include <linux/of.h>
+ #include <linux/of_net.h>
#include <linux/platform_data/b53.h>
+#include <linux/of.h>
#include "b53_regs.h"
#include "b53_priv.h"
#include <linux/platform_data/b53.h>
+#include <linux/of.h>
#include "b53_regs.h"
#include "b53_priv.h"
-@@ -1383,6 +1384,28 @@ static int b53_switch_init(struct b53_de
- sw_dev->cpu_port = 5;
+@@ -1522,6 +1523,28 @@ static int b53_switch_init(struct b53_de
+ return ret;
}
+ /* Set correct CPU port */
}
+ /* Set correct CPU port */
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -5034,7 +5034,7 @@ static void port_event(struct usb_hub *h
+@@ -5040,7 +5040,7 @@ static void port_event(struct usb_hub *h
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -5627,7 +5627,7 @@ int __init cgroup_init_early(void)
+@@ -5632,7 +5632,7 @@ int __init cgroup_init_early(void)
/**
* cgroup_init - cgroup initialization
/**
* cgroup_init - cgroup initialization
-@@ -6164,6 +6164,28 @@ static int __init cgroup_no_v1(char *str
+@@ -6169,6 +6169,28 @@ static int __init cgroup_no_v1(char *str
}
__setup("cgroup_no_v1=", cgroup_no_v1);
}
__setup("cgroup_no_v1=", cgroup_no_v1);
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -314,6 +314,14 @@ void vc4_free_object(struct drm_gem_obje
+@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
/* For Max performance, the MRRS must be set to the largest supported
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
/* For Max performance, the MRRS must be set to the largest supported
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -778,7 +778,7 @@ enum pcie_bus_config_types {
+@@ -783,7 +783,7 @@ enum pcie_bus_config_types {
PCIE_BUS_DEFAULT, /* ensure MPS matches upstream bridge */
PCIE_BUS_SAFE, /* use largest MPS boot-time devices support */
PCIE_BUS_PERFORMANCE, /* use MPS and MRRS for best performance */
PCIE_BUS_DEFAULT, /* ensure MPS matches upstream bridge */
PCIE_BUS_SAFE, /* use largest MPS boot-time devices support */
PCIE_BUS_PERFORMANCE, /* use MPS and MRRS for best performance */
return 0;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
return 0;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1748,6 +1748,8 @@ struct net_device {
+@@ -1749,6 +1749,8 @@ struct net_device {
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1247,6 +1247,9 @@ int genphy_update_link(struct phy_device
+@@ -1267,6 +1267,9 @@ int genphy_update_link(struct phy_device
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -983,6 +983,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1001,6 +1001,9 @@ void phy_detach(struct phy_device *phyde
struct mii_bus *bus;
int i;
struct mii_bus *bus;
int i;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1465,7 +1465,7 @@ int genphy_config_init(struct phy_device
+@@ -1485,7 +1485,7 @@ int genphy_config_init(struct phy_device
{
/* Do nothing for now */
return 0;
{
/* Do nothing for now */
return 0;
-@@ -1704,7 +1704,7 @@ static struct phy_driver genphy_driver[]
+@@ -1724,7 +1724,7 @@ static struct phy_driver genphy_driver[]
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic PHY",
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic PHY",
.config_init = genphy_config_init,
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
SUPPORTED_AUI | SUPPORTED_FIBRE |
.config_init = genphy_config_init,
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
SUPPORTED_AUI | SUPPORTED_FIBRE |
-@@ -1718,7 +1718,7 @@ static struct phy_driver genphy_driver[]
+@@ -1738,7 +1738,7 @@ static struct phy_driver genphy_driver[]
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic 10G PHY",
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic 10G PHY",
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1397,6 +1397,7 @@ enum netdev_priv_flags {
+@@ -1398,6 +1398,7 @@ enum netdev_priv_flags {
IFF_RXFH_CONFIGURED = 1<<25,
IFF_PHONY_HEADROOM = 1<<26,
IFF_MACSEC = 1<<27,
IFF_RXFH_CONFIGURED = 1<<25,
IFF_PHONY_HEADROOM = 1<<26,
IFF_MACSEC = 1<<27,
};
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
};
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
-@@ -1426,6 +1427,7 @@ enum netdev_priv_flags {
+@@ -1427,6 +1428,7 @@ enum netdev_priv_flags {
#define IFF_TEAM IFF_TEAM
#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
#define IFF_MACSEC IFF_MACSEC
#define IFF_TEAM IFF_TEAM
#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
#define IFF_MACSEC IFF_MACSEC
/**
* struct net_device - The DEVICE structure.
/**
* struct net_device - The DEVICE structure.
-@@ -1712,6 +1714,11 @@ struct net_device {
+@@ -1713,6 +1715,11 @@ struct net_device {
const struct ndisc_ops *ndisc_ops;
#endif
const struct ndisc_ops *ndisc_ops;
#endif
const struct header_ops *header_ops;
unsigned int flags;
const struct header_ops *header_ops;
unsigned int flags;
-@@ -1779,6 +1786,10 @@ struct net_device {
+@@ -1780,6 +1787,10 @@ struct net_device {
struct mpls_dev __rcu *mpls_ptr;
#endif
struct mpls_dev __rcu *mpls_ptr;
#endif
depends on BROKEN || !FRV
--- a/kernel/Makefile
+++ b/kernel/Makefile
depends on BROKEN || !FRV
--- a/kernel/Makefile
+++ b/kernel/Makefile
-@@ -112,6 +112,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
+@@ -113,6 +113,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_HAS_IOMEM) += memremap.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_HAS_IOMEM) += memremap.o
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
-@@ -190,6 +190,13 @@ config MTD_MYLOADER_PARTS
+@@ -194,6 +194,13 @@ config MTD_MYLOADER_PARTS
You will still need the parsing functions to be called by the driver
for your particular device. It won't happen automatically.
You will still need the parsing functions to be called by the driver
for your particular device. It won't happen automatically.
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
+obj-$(CONFIG_MTD_QCOM_SMEM_PARTS) += qcom_smem_part.o
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
+obj-$(CONFIG_MTD_QCOM_SMEM_PARTS) += qcom_smem_part.o
# 'Users' - code which presents functionality to userspace.
# 'Users' - code which presents functionality to userspace.
- obj-$(CONFIG_MTD_BLKDEVS) += mtd_blkdevs.o
/*
* This structure holds all XPS maps for device. Maps are indexed by CPU.
*/
/*
* This structure holds all XPS maps for device. Maps are indexed by CPU.
*/
-@@ -1250,6 +1260,9 @@ struct net_device_ops {
+@@ -1251,6 +1261,9 @@ struct net_device_ops {
const struct sk_buff *skb,
u16 rxq_index,
u32 flow_id);
const struct sk_buff *skb,
u16 rxq_index,
u32 flow_id);
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -1245,6 +1245,8 @@ void pci_walk_bus(struct pci_bus *top, i
+@@ -1250,6 +1250,8 @@ void pci_walk_bus(struct pci_bus *top, i
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
-@@ -120,12 +155,22 @@ static int parse_ofpart_partitions(struc
+@@ -121,12 +156,22 @@ static int parse_ofpart_partitions(struc
if (of_get_property(pp, "lock", &len))
parts[i].mask_flags |= MTD_POWERUP_LOCK;
if (of_get_property(pp, "lock", &len))
parts[i].mask_flags |= MTD_POWERUP_LOCK;
*pparts = parts;
return nr_parts;
*pparts = parts;
return nr_parts;
-@@ -136,6 +181,7 @@ ofpart_fail:
+@@ -137,6 +182,7 @@ ofpart_fail:
ofpart_none:
of_node_put(pp);
kfree(parts);
ofpart_none:
of_node_put(pp);
kfree(parts);
struct device_node *pp;
int nr_parts, i, ret = 0;
bool dedicated = true;
struct device_node *pp;
int nr_parts, i, ret = 0;
bool dedicated = true;
-@@ -109,9 +112,13 @@ static int parse_ofpart_partitions(struc
- parts[i].offset = of_read_number(reg, a_cells);
+@@ -110,9 +113,13 @@ static int parse_ofpart_partitions(struc
parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].size = of_read_number(reg + a_cells, s_cells);
- partname = of_get_property(pp, "label", &len);
- if (!partname)
- partname = of_get_property(pp, "label", &len);
- if (!partname)
parts[i].name = partname;
if (of_get_property(pp, "read-only", &len))
parts[i].name = partname;
if (of_get_property(pp, "read-only", &len))
-@@ -212,6 +219,18 @@ static int __init ofpart_parser_init(voi
+@@ -213,6 +220,18 @@ static int __init ofpart_parser_init(voi
/**
* phy_prepare_link - prepares the PHY layer to monitor link status
* @phydev: target phy_device struct
/**
* phy_prepare_link - prepares the PHY layer to monitor link status
* @phydev: target phy_device struct
-@@ -899,6 +912,7 @@ int phy_attach_direct(struct net_device
+@@ -910,6 +923,7 @@ int phy_attach_direct(struct net_device
+EXPORT_SYMBOL_GPL(genphy_c45_read_pma);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
+EXPORT_SYMBOL_GPL(genphy_c45_read_pma);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1390,27 +1390,19 @@ EXPORT_SYMBOL(genphy_read_status);
+@@ -1410,27 +1410,19 @@ EXPORT_SYMBOL(genphy_read_status);
static int gen10g_read_status(struct phy_device *phydev)
{
static int gen10g_read_status(struct phy_device *phydev)
{
obj-$(CONFIG_SWCONFIG) += swconfig.o
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
obj-$(CONFIG_SWCONFIG) += swconfig.o
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1003,6 +1003,7 @@ void phy_detach(struct phy_device *phyde
+@@ -1021,6 +1021,7 @@ void phy_detach(struct phy_device *phyde
phydev->attached_dev->phydev = NULL;
phydev->attached_dev = NULL;
phy_suspend(phydev);
+ phydev->phylink = NULL;
phydev->attached_dev->phydev = NULL;
phydev->attached_dev = NULL;
phy_suspend(phydev);
+ phydev->phylink = NULL;
- /* If the device had no specific driver before (i.e. - it
- * was using the generic driver), we unbind the device
+ module_put(phydev->mdio.dev.driver->owner);
+
--- /dev/null
+++ b/drivers/net/phy/phylink.c
@@ -0,0 +1,903 @@
--- /dev/null
+++ b/drivers/net/phy/phylink.c
@@ -0,0 +1,903 @@
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
-@@ -369,6 +369,8 @@ source "drivers/mtd/onenand/Kconfig"
+@@ -373,6 +373,8 @@ source "drivers/mtd/onenand/Kconfig"
source "drivers/mtd/lpddr/Kconfig"
source "drivers/mtd/lpddr/Kconfig"
source "drivers/mtd/ubi/Kconfig"
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
source "drivers/mtd/ubi/Kconfig"
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
-@@ -35,5 +35,6 @@ inftl-objs := inftlcore.o inftlmount.o
+@@ -36,5 +36,6 @@ inftl-objs := inftlcore.o inftlmount.o
obj-y += chips/ lpddr/ maps/ devices/ nand/ onenand/ tests/
obj-y += chips/ lpddr/ maps/ devices/ nand/ onenand/ tests/