diff --git a/patch/kernel/sunxi-next/axp20x-sysfs-interface.patch b/patch/kernel/sunxi-next/axp20x-sysfs-interface.patch index f3fec4a79a..2d3860da77 100644 --- a/patch/kernel/sunxi-next/axp20x-sysfs-interface.patch +++ b/patch/kernel/sunxi-next/axp20x-sysfs-interface.patch @@ -1,16 +1,16 @@ diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c -index 9842199..c313710 100644 +index a57d6e9..51b34f6 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c -@@ -26,6 +26,7 @@ +@@ -27,6 +27,7 @@ + #include #include - #include #include +#include #define AXP20X_OFF 0x80 -@@ -70,6 +71,7 @@ static const struct regmap_range axp20x_volatile_ranges[] = { +@@ -72,6 +73,7 @@ static const struct regmap_range axp20x_volatile_ranges[] = { regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE), regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L), regmap_reg_range(AXP20X_GPIO20_SS, AXP20X_GPIO3_CTRL), @@ -18,7 +18,7 @@ index 9842199..c313710 100644 regmap_reg_range(AXP20X_FG_RES, AXP20X_RDC_L), }; -@@ -606,6 +608,611 @@ static void axp20x_power_off(void) +@@ -582,6 +584,611 @@ static void axp20x_power_off(void) AXP20X_OFF); } @@ -627,10 +627,10 @@ index 9842199..c313710 100644 + axp20x_sysfs_remove_subgroup(subsystems.ac, &axp20x_group_ac); +} + - static int axp20x_match_device(struct axp20x_dev *axp20x, struct device *dev) + int axp20x_match_device(struct axp20x_dev *axp20x) { - const struct acpi_device_id *acpi_id; -@@ -711,6 +1318,10 @@ static int axp20x_i2c_probe(struct i2c_client *i2c, + struct device *dev = axp20x->dev; +@@ -669,6 +1276,10 @@ int axp20x_device_probe(struct axp20x_dev *axp20x) pm_power_off = axp20x_power_off; } @@ -638,17 +638,17 @@ index 9842199..c313710 100644 + axp20x_sysfs_init(axp20x); + } + - dev_info(&i2c->dev, "AXP20X driver loaded\n"); + dev_info(axp20x->dev, "AXP20X driver loaded\n"); return 0; -@@ -720,6 +1331,10 @@ static int axp20x_i2c_remove(struct i2c_client *i2c) - { - struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); +@@ -682,6 +1293,10 @@ int axp20x_device_remove(struct axp20x_dev *axp20x) + pm_power_off = NULL; + } + if (axp20x->variant == AXP209_ID || axp20x->variant == AXP202_ID) { + axp20x_sysfs_exit(axp20x); + } + - if (axp20x == axp20x_pm_power_off) { - axp20x_pm_power_off = NULL; - pm_power_off = NULL; + mfd_remove_devices(axp20x->dev); + regmap_del_irq_chip(axp20x->irq, axp20x->regmap_irqc); + diff --git a/patch/kernel/sunxi-next/crypto_ss_corruption_fix.patch b/patch/kernel/sunxi-next/crypto_ss_corruption_fix.patch deleted file mode 100644 index 948daa85dd..0000000000 --- a/patch/kernel/sunxi-next/crypto_ss_corruption_fix.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c -index 7be3fbc..3830d7c 100644 ---- a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c -+++ b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c -@@ -35,6 +35,7 @@ static int sun4i_ss_opti_poll(struct ablkcipher_request *areq) - unsigned int todo; - struct sg_mapping_iter mi, mo; - unsigned int oi, oo; /* offset for in and out */ -+ unsigned long flags; - - if (areq->nbytes == 0) - return 0; -@@ -49,7 +50,7 @@ static int sun4i_ss_opti_poll(struct ablkcipher_request *areq) - return -EINVAL; - } - -- spin_lock_bh(&ss->slock); -+ spin_lock_irqsave(&ss->slock, flags); - - for (i = 0; i < op->keylen; i += 4) - writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); -@@ -117,7 +118,7 @@ release_ss: - sg_miter_stop(&mi); - sg_miter_stop(&mo); - writel(0, ss->base + SS_CTL); -- spin_unlock_bh(&ss->slock); -+ spin_unlock_irqrestore(&ss->slock, flags); - return err; - } - -@@ -149,6 +150,7 @@ static int sun4i_ss_cipher_poll(struct ablkcipher_request *areq) - unsigned int ob = 0; /* offset in buf */ - unsigned int obo = 0; /* offset in bufo*/ - unsigned int obl = 0; /* length of data in bufo */ -+ unsigned long flags; - - if (areq->nbytes == 0) - return 0; -@@ -181,7 +183,7 @@ static int sun4i_ss_cipher_poll(struct ablkcipher_request *areq) - if (no_chunk == 1) - return sun4i_ss_opti_poll(areq); - -- spin_lock_bh(&ss->slock); -+ spin_lock_irqsave(&ss->slock, flags); - - for (i = 0; i < op->keylen; i += 4) - writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); -@@ -307,7 +309,7 @@ release_ss: - sg_miter_stop(&mi); - sg_miter_stop(&mo); - writel(0, ss->base + SS_CTL); -- spin_unlock_bh(&ss->slock); -+ spin_unlock_irqrestore(&ss->slock, flags); - - return err; - } --- -2.7.3 - - \ No newline at end of file diff --git a/patch/kernel/sunxi-next/stmmac-fix-v4.5.patch b/patch/kernel/sunxi-next/stmmac-fix-v4.5.patch deleted file mode 100644 index a952bde973..0000000000 --- a/patch/kernel/sunxi-next/stmmac-fix-v4.5.patch +++ /dev/null @@ -1,91 +0,0 @@ -commit d7e944c8ddc0983640a9a32868fb217485d12ca2 -Author: Giuseppe CAVALLARO -Date: Fri Apr 1 09:07:15 2016 +0200 - - Revert "stmmac: Fix 'eth0: No PHY found' regression" - - This reverts commit 88f8b1bb41c6208f81b6a480244533ded7b59493. - due to problems on GeekBox and Banana Pi M1 board when - connected to a real transceiver instead of a switch via - fixed-link. - - Signed-off-by: Giuseppe Cavallaro - Cc: Gabriel Fernandez - Cc: Andreas Färber - Cc: Frank Schäfer - Cc: Dinh Nguyen - Cc: David S. Miller - Signed-off-by: David S. Miller - -diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c -index ea76129..af09ced 100644 ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c -@@ -199,12 +199,21 @@ int stmmac_mdio_register(struct net_device *ndev) - struct stmmac_priv *priv = netdev_priv(ndev); - struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data; - int addr, found; -- struct device_node *mdio_node = priv->plat->mdio_node; -+ struct device_node *mdio_node = NULL; -+ struct device_node *child_node = NULL; - - if (!mdio_bus_data) - return 0; - - if (IS_ENABLED(CONFIG_OF)) { -+ for_each_child_of_node(priv->device->of_node, child_node) { -+ if (of_device_is_compatible(child_node, -+ "snps,dwmac-mdio")) { -+ mdio_node = child_node; -+ break; -+ } -+ } -+ - if (mdio_node) { - netdev_dbg(ndev, "FOUND MDIO subnode\n"); - } else { -diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c -index dcbd2a1..9cf181f 100644 ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c -@@ -146,7 +146,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) - struct device_node *np = pdev->dev.of_node; - struct plat_stmmacenet_data *plat; - struct stmmac_dma_cfg *dma_cfg; -- struct device_node *child_node = NULL; - - plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL); - if (!plat) -@@ -177,19 +176,13 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) - plat->phy_node = of_node_get(np); - } - -- for_each_child_of_node(np, child_node) -- if (of_device_is_compatible(child_node, "snps,dwmac-mdio")) { -- plat->mdio_node = child_node; -- break; -- } -- - /* "snps,phy-addr" is not a standard property. Mark it as deprecated - * and warn of its use. Remove this when phy node support is added. - */ - if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) - dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); - -- if ((plat->phy_node && !of_phy_is_fixed_link(np)) || !plat->mdio_node) -+ if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name) - plat->mdio_bus_data = NULL; - else - plat->mdio_bus_data = -diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h -index 4bcf5a6..6e53fa8 100644 ---- a/include/linux/stmmac.h -+++ b/include/linux/stmmac.h -@@ -114,7 +114,6 @@ struct plat_stmmacenet_data { - int interface; - struct stmmac_mdio_bus_data *mdio_bus_data; - struct device_node *phy_node; -- struct device_node *mdio_node; - struct stmmac_dma_cfg *dma_cfg; - int clk_csr; - int has_gmac;