kernel: refresh patches for kernel 4.4

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 48222
v19.07.3_mercusys_ac12_duma
Hauke Mehrtens 8 years ago
parent bd99318c82
commit ba3a749f9b

@ -59,7 +59,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
static const char *const bcm5301x_dt_compat[] __initconst = {
"brcm,bcm4708",
@@ -52,6 +18,5 @@ static const char *const bcm5301x_dt_compat[] __initconst = {
@@ -52,6 +18,5 @@ static const char *const bcm5301x_dt_com
DT_MACHINE_START(BCM5301X, "BCM5301X")
.l2c_aux_val = 0,
.l2c_aux_mask = ~0,

@ -217,7 +217,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
{
void __iomem *boot_reg;
phys_addr_t boot_func;
@@ -154,15 +179,16 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -154,15 +179,16 @@ static int bcm_boot_secondary(unsigned i
return -EINVAL;
}
@ -237,7 +237,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
}
/*
@@ -191,12 +217,12 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -191,12 +217,12 @@ static int bcm_boot_secondary(unsigned i
pr_err("timeout waiting for cpu %u to start\n", cpu_id);

@ -50,7 +50,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
# BCM281XX
obj-$(CONFIG_ARCH_BCM_281XX) += board_bcm281xx.o
@@ -23,7 +27,7 @@ obj-$(CONFIG_ARCH_BCM_281XX) += board_bcm281xx.o
@@ -23,7 +27,7 @@ obj-$(CONFIG_ARCH_BCM_281XX) += board_bc
obj-$(CONFIG_ARCH_BCM_21664) += board_bcm21664.o
# BCM281XX and BCM21664 SMP support

@ -46,7 +46,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
--- a/arch/arm/mach-bcm/Makefile
+++ b/arch/arm/mach-bcm/Makefile
@@ -43,6 +43,9 @@ obj-$(CONFIG_ARCH_BCM2835) += board_bcm2835.o
@@ -43,6 +43,9 @@ obj-$(CONFIG_ARCH_BCM2835) += board_bcm2
# BCM5301X
obj-$(CONFIG_ARCH_BCM_5301X) += bcm_5301x.o

@ -121,7 +121,8 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+ };
+
+ iprocmed: iprocmed {
+ #clock-cells = <0>;
#clock-cells = <0>;
- clock-frequency = <400000000>;
+ compatible = "fixed-factor-clock";
+ clocks = <&genpll BCM_NSP_GENPLL_IPROCFAST_CLK>;
+ clock-div = <2>;
@ -137,8 +138,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+ };
+
+ periph_clk: periph_clk {
#clock-cells = <0>;
- clock-frequency = <400000000>;
+ #clock-cells = <0>;
+ compatible = "fixed-factor-clock";
+ clocks = <&a9pll>;
+ clock-div = <2>;

@ -60,7 +60,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+ };
--- a/Documentation/devicetree/bindings/arm/cpus.txt
+++ b/Documentation/devicetree/bindings/arm/cpus.txt
@@ -190,6 +190,7 @@ nodes to be present and contain the properties described below.
@@ -190,6 +190,7 @@ nodes to be present and contain the prop
"allwinner,sun6i-a31"
"allwinner,sun8i-a23"
"arm,psci"

@ -37,7 +37,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
};
/* Wait for bitmask in a register to get set or cleared.
@@ -228,19 +230,12 @@ static void bcma_hcd_init_chip_arm(struct bcma_device *dev)
@@ -228,19 +230,12 @@ static void bcma_hcd_init_chip_arm(struc
static void bcma_hci_platform_power_gpio(struct bcma_device *dev, bool val)
{
@ -60,7 +60,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
}
static const struct usb_ehci_pdata ehci_pdata = {
@@ -314,7 +309,11 @@ static int bcma_hcd_probe(struct bcma_device *dev)
@@ -314,7 +309,11 @@ static int bcma_hcd_probe(struct bcma_de
if (!usb_dev)
return -ENOMEM;

@ -52,7 +52,7 @@ Reviewed-by: Scott Branden <sbranden@broadcom.com>
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -126,6 +126,15 @@ config PCIE_IPROC
@@ -127,6 +127,15 @@ config PCIE_IPROC
iProc family of SoCs. An appropriate bus interface driver also needs
to be enabled

@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/usb/host/bcma-hcd.c
+++ b/drivers/usb/host/bcma-hcd.c
@@ -568,8 +568,7 @@ static int bcma_hcd_probe(struct bcma_device *dev)
@@ -568,8 +568,7 @@ static int bcma_hcd_probe(struct bcma_de
usb_dev->core = dev;
if (dev->dev.of_node)

@ -1,6 +1,6 @@
--- a/drivers/mtd/bcm47xxpart.c
+++ b/drivers/mtd/bcm47xxpart.c
@@ -100,6 +100,7 @@ static int bcm47xxpart_parse(struct mtd_
@@ -127,6 +127,7 @@ static int bcm47xxpart_parse(struct mtd_
int last_trx_part = -1;
int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
int err;
@ -8,7 +8,7 @@
/*
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
@@ -306,12 +307,23 @@ static int bcm47xxpart_parse(struct mtd_
@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_
if (buf[0] == NVRAM_HEADER) {
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
master->size - blocksize, 0);

@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/mtd/bcm47xxpart.c
+++ b/drivers/mtd/bcm47xxpart.c
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct mtd_partition *part, const char *name,
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct
part->mask_flags = mask_flags;
}
@ -48,7 +48,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
size_t offset)
{
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_
/* TRX */
if (buf[0x000 / 4] == TRX_MAGIC) {
@ -57,7 +57,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
pr_warn("Not enough partitions left to register trx, scanning stopped!\n");
break;
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_
i = 0;
/* We have LZMA loader if offset[2] points to sth */
if (trx->offset[2]) {
@ -82,7 +82,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
i++;
}
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_
if (trx->offset[i]) {
const char *name;

@ -61,7 +61,7 @@
.probe = at803x_probe,
.config_init = at803x_config_init,
.link_change_notify = at803x_link_change_notify,
@@ -413,7 +438,7 @@ static struct phy_driver at803x_driver[]
@@ -415,7 +440,7 @@ static struct phy_driver at803x_driver[]
/* ATHEROS 8030 */
.phy_id = ATH8030_PHY_ID,
.name = "Atheros 8030 ethernet",
@ -70,7 +70,7 @@
.probe = at803x_probe,
.config_init = at803x_config_init,
.link_change_notify = at803x_link_change_notify,
@@ -431,8 +456,8 @@ static struct phy_driver at803x_driver[]
@@ -435,8 +460,8 @@ static struct phy_driver at803x_driver[]
}, {
/* ATHEROS 8031 */
.phy_id = ATH8031_PHY_ID,
@ -81,7 +81,7 @@
.probe = at803x_probe,
.config_init = at803x_config_init,
.link_change_notify = at803x_link_change_notify,
@@ -454,9 +479,9 @@ static struct phy_driver at803x_driver[]
@@ -458,9 +483,9 @@ static struct phy_driver at803x_driver[]
module_phy_driver(at803x_driver);
static struct mdio_device_id __maybe_unused atheros_tbl[] = {

@ -22,7 +22,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
struct device_node *pp;
int nr_parts, i, ret = 0;
bool dedicated = true;
@@ -102,9 +105,15 @@ static int parse_ofpart_partitions(struc
@@ -110,9 +113,15 @@ static int parse_ofpart_partitions(struc
(*pparts)[i].offset = of_read_number(reg, a_cells);
(*pparts)[i].size = of_read_number(reg + a_cells, s_cells);
@ -41,7 +41,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
(*pparts)[i].name = partname;
if (of_get_property(pp, "read-only", &len))
@@ -207,6 +216,18 @@ static int __init ofpart_parser_init(voi
@@ -215,6 +224,18 @@ static int __init ofpart_parser_init(voi
return 0;
}

@ -1,6 +1,6 @@
--- a/arch/arm/mach-omap2/twl-common.c
+++ b/arch/arm/mach-omap2/twl-common.c
@@ -280,6 +280,7 @@ static struct regulator_init_data omap4_
@@ -368,6 +368,7 @@ static struct regulator_init_data omap4_
static struct regulator_init_data omap4_clk32kg_idata = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,

@ -19,13 +19,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/clk/sunxi/clk-simple-gates.c | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index 153ac72..ef0b452 100644
diff --git a/drivers/clk/sunxi/clk-simple-gates.c b/drivers/clk/sunxi/clk-simple-gates.c
index c8acc06..f4da52b 100644
--- a/drivers/clk/sunxi/clk-simple-gates.c
+++ b/drivers/clk/sunxi/clk-simple-gates.c
@@ -160,3 +160,15 @@ CLK_OF_DECLARE(sun5i_a13_ahb, "allwinner,sun5i-a13-ahb-gates-clk",
@@ -158,3 +158,15 @@ CLK_OF_DECLARE(sun5i_a13_ahb, "allwinner
sun4i_a10_ahb_init);
CLK_OF_DECLARE(sun7i_a20_ahb, "allwinner,sun7i-a20-ahb-gates-clk",
sun4i_a10_ahb_init);

@ -13,8 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
arch/arm/boot/dts/sun4i-a10.dtsi | 36 ++++++++++++++++++++++++++++++++----
1 file changed, 32 insertions(+), 4 deletions(-)
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index aa90f31..849d024 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -66,7 +66,7 @@

@ -13,8 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
arch/arm/boot/dts/sun7i-a20.dtsi | 32 +++++++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
index e02eb72..21169c0 100644
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
@@ -68,7 +68,7 @@

@ -24,10 +24,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
4 files changed, 121 insertions(+)
create mode 100644 drivers/clk/sunxi/clk-sun8i-bus-gates.c
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index ef0b452..014eab8 100644
diff --git a/drivers/clk/sunxi/Makefile b/drivers/clk/sunxi/Makefile
index 103efab..abf4916 100644
--- a/drivers/clk/sunxi/Makefile
+++ b/drivers/clk/sunxi/Makefile
@@ -10,6 +10,7 @@ obj-y += clk-a10-pll2.o
@ -38,9 +34,6 @@ index 103efab..abf4916 100644
obj-y += clk-sun8i-mbus.o
obj-y += clk-sun9i-core.o
obj-y += clk-sun9i-mmc.o
diff --git a/drivers/clk/sunxi/clk-sun8i-bus-gates.c b/drivers/clk/sunxi/clk-sun8i-bus-gates.c
new file mode 100644
index 0000000..7ab60c5
--- /dev/null
+++ b/drivers/clk/sunxi/clk-sun8i-bus-gates.c
@@ -0,0 +1,112 @@
@ -156,11 +149,9 @@ index 0000000..7ab60c5
+
+CLK_OF_DECLARE(sun8i_h3_bus_gates, "allwinner,sun8i-h3-bus-gates-clk",
+ sun8i_h3_bus_gates_init);
diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
index 9c79af0c..5ba2188 100644
--- a/drivers/clk/sunxi/clk-sunxi.c
+++ b/drivers/clk/sunxi/clk-sunxi.c
@@ -778,6 +778,10 @@ static const struct mux_data sun6i_a31_ahb1_mux_data __initconst = {
@@ -778,6 +778,10 @@ static const struct mux_data sun6i_a31_a
.shift = 12,
};
@ -171,7 +162,7 @@ index 9c79af0c..5ba2188 100644
static void __init sunxi_mux_clk_setup(struct device_node *node,
struct mux_data *data)
{
@@ -1130,6 +1134,7 @@ static const struct of_device_id clk_divs_match[] __initconst = {
@@ -1130,6 +1134,7 @@ static const struct of_device_id clk_div
static const struct of_device_id clk_mux_match[] __initconst = {
{.compatible = "allwinner,sun4i-a10-cpu-clk", .data = &sun4i_cpu_mux_data,},
{.compatible = "allwinner,sun6i-a31-ahb1-mux-clk", .data = &sun6i_a31_ahb1_mux_data,},
@ -179,7 +170,7 @@ index 9c79af0c..5ba2188 100644
{}
};
@@ -1212,6 +1217,7 @@ CLK_OF_DECLARE(sun6i_a31_clk_init, "allwinner,sun6i-a31", sun6i_init_clocks);
@@ -1212,6 +1217,7 @@ CLK_OF_DECLARE(sun6i_a31_clk_init, "allw
CLK_OF_DECLARE(sun6i_a31s_clk_init, "allwinner,sun6i-a31s", sun6i_init_clocks);
CLK_OF_DECLARE(sun8i_a23_clk_init, "allwinner,sun8i-a23", sun6i_init_clocks);
CLK_OF_DECLARE(sun8i_a33_clk_init, "allwinner,sun8i-a33", sun6i_init_clocks);

@ -13,9 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
1 file changed, 497 insertions(+)
create mode 100644 arch/arm/boot/dts/sun8i-h3.dtsi
diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
new file mode 100644
index 0000000..1524130e
--- /dev/null
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
@@ -0,0 +1,497 @@

@ -17,11 +17,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2 files changed, 79 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index e8f44c7..cc7309b 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -661,7 +661,8 @@ dtb-$(CONFIG_MACH_SUN8I) += \
@@ -660,7 +660,8 @@ dtb-$(CONFIG_MACH_SUN8I) += \
sun8i-a33-ga10h-v1.1.dtb \
sun8i-a33-ippo-q8h-v1.2.dtb \
sun8i-a33-q8-tablet.dtb \
@ -31,9 +29,6 @@ index e8f44c7..cc7309b 100644
dtb-$(CONFIG_MACH_SUN9I) += \
sun9i-a80-optimus.dtb \
sun9i-a80-cubieboard4.dtb
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
new file mode 100644
index 0000000..e67df59
--- /dev/null
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
@@ -0,0 +1,77 @@

@ -13,8 +13,6 @@ Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/phy-sun4i-usb.c | 121 +++++++++++++++++++++++++++++---------------
1 file changed, 79 insertions(+), 42 deletions(-)
diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
index b12964b..35b1fa3 100644
--- a/drivers/phy/phy-sun4i-usb.c
+++ b/drivers/phy/phy-sun4i-usb.c
@@ -32,6 +32,7 @@
@ -52,7 +50,7 @@ index b12964b..35b1fa3 100644
struct sun4i_usb_phy {
struct phy *phy;
void __iomem *pmu;
@@ -159,17 +171,14 @@ static void sun4i_usb_phy_write(struct sun4i_usb_phy *phy, u32 addr, u32 data,
@@ -159,17 +171,14 @@ static void sun4i_usb_phy_write(struct s
{
struct sun4i_usb_phy_data *phy_data = to_sun4i_usb_phy_data(phy);
u32 temp, usbc_bit = BIT(phy->index * 2);
@ -72,7 +70,7 @@ index b12964b..35b1fa3 100644
}
for (i = 0; i < len; i++) {
@@ -249,7 +258,8 @@ static int sun4i_usb_phy_init(struct phy *_phy)
@@ -249,7 +258,8 @@ static int sun4i_usb_phy_init(struct phy
sun4i_usb_phy_write(phy, PHY_TX_AMPLITUDE_TUNE, 0x14, 5);
/* Disconnect threshold adjustment */
@ -82,7 +80,7 @@ index b12964b..35b1fa3 100644
sun4i_usb_phy_passby(phy, 1);
@@ -476,7 +486,7 @@ static struct phy *sun4i_usb_phy_xlate(struct device *dev,
@@ -476,7 +486,7 @@ static struct phy *sun4i_usb_phy_xlate(s
{
struct sun4i_usb_phy_data *data = dev_get_drvdata(dev);
@ -91,7 +89,7 @@ index b12964b..35b1fa3 100644
return ERR_PTR(-ENODEV);
return data->phys[args->args[0]].phy;
@@ -511,7 +521,6 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
@@ -511,7 +521,6 @@ static int sun4i_usb_phy_probe(struct pl
struct device *dev = &pdev->dev;
struct device_node *np = dev->of_node;
struct phy_provider *phy_provider;
@ -99,7 +97,7 @@ index b12964b..35b1fa3 100644
struct resource *res;
int i, ret;
@@ -522,29 +531,9 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
@@ -522,29 +531,9 @@ static int sun4i_usb_phy_probe(struct pl
mutex_init(&data->mutex);
INIT_DELAYED_WORK(&data->detect, sun4i_usb_phy0_id_vbus_det_scan);
dev_set_drvdata(dev, data);
@ -132,7 +130,7 @@ index b12964b..35b1fa3 100644
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy_ctrl");
data->base = devm_ioremap_resource(dev, res);
@@ -590,7 +579,7 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
@@ -590,7 +579,7 @@ static int sun4i_usb_phy_probe(struct pl
}
}
@ -141,7 +139,7 @@ index b12964b..35b1fa3 100644
struct sun4i_usb_phy *phy = data->phys + i;
char name[16];
@@ -602,7 +591,7 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
@@ -602,7 +591,7 @@ static int sun4i_usb_phy_probe(struct pl
phy->vbus = NULL;
}
@ -150,7 +148,7 @@ index b12964b..35b1fa3 100644
snprintf(name, sizeof(name), "usb%d_phy", i);
else
strlcpy(name, "usb_phy", sizeof(name));
@@ -689,13 +678,61 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
@@ -689,13 +678,61 @@ static int sun4i_usb_phy_probe(struct pl
return 0;
}

@ -16,8 +16,6 @@ Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/phy-sun4i-usb.c | 41 +++++++++++++++++-----
2 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt
index 0cebf74..95736d7 100644
--- a/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt
+++ b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt
@@ -9,6 +9,7 @@ Required properties:
@ -28,8 +26,6 @@ index 0cebf74..95736d7 100644
- reg : a list of offset + length pairs
- reg-names :
* "phy_ctrl"
diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
index 35b1fa3..bae54f7 100644
--- a/drivers/phy/phy-sun4i-usb.c
+++ b/drivers/phy/phy-sun4i-usb.c
@@ -47,6 +47,9 @@
@ -59,7 +55,7 @@ index 35b1fa3..bae54f7 100644
};
struct sun4i_usb_phy_cfg {
@@ -239,6 +243,7 @@ static int sun4i_usb_phy_init(struct phy *_phy)
@@ -239,6 +243,7 @@ static int sun4i_usb_phy_init(struct phy
struct sun4i_usb_phy *phy = phy_get_drvdata(_phy);
struct sun4i_usb_phy_data *data = to_sun4i_usb_phy_data(phy);
int ret;
@ -67,13 +63,20 @@ index 35b1fa3..bae54f7 100644
ret = clk_prepare_enable(phy->clk);
if (ret)
@@ -250,16 +255,26 @@ static int sun4i_usb_phy_init(struct phy *_phy)
@@ -250,16 +255,26 @@ static int sun4i_usb_phy_init(struct phy
return ret;
}
- /* Enable USB 45 Ohm resistor calibration */
- if (phy->index == 0)
- sun4i_usb_phy_write(phy, PHY_RES45_CAL_EN, 0x01, 1);
-
- /* Adjust PHY's magnitude and rate */
- sun4i_usb_phy_write(phy, PHY_TX_AMPLITUDE_TUNE, 0x14, 5);
-
- /* Disconnect threshold adjustment */
- sun4i_usb_phy_write(phy, PHY_DISCON_TH_SEL,
- data->cfg->disc_thresh, 2);
+ if (data->cfg->type == sun8i_h3_phy) {
+ if (phy->index == 0) {
+ val = readl(data->base + REG_PHY_UNK_H3);
@ -86,15 +89,10 @@ index 35b1fa3..bae54f7 100644
+ /* Enable USB 45 Ohm resistor calibration */
+ if (phy->index == 0)
+ sun4i_usb_phy_write(phy, PHY_RES45_CAL_EN, 0x01, 1);
- /* Adjust PHY's magnitude and rate */
- sun4i_usb_phy_write(phy, PHY_TX_AMPLITUDE_TUNE, 0x14, 5);
+
+ /* Adjust PHY's magnitude and rate */
+ sun4i_usb_phy_write(phy, PHY_TX_AMPLITUDE_TUNE, 0x14, 5);
- /* Disconnect threshold adjustment */
- sun4i_usb_phy_write(phy, PHY_DISCON_TH_SEL,
- data->cfg->disc_thresh, 2);
+
+ /* Disconnect threshold adjustment */
+ sun4i_usb_phy_write(phy, PHY_DISCON_TH_SEL,
+ data->cfg->disc_thresh, 2);
@ -102,7 +100,7 @@ index 35b1fa3..bae54f7 100644
sun4i_usb_phy_passby(phy, 1);
@@ -726,6 +741,13 @@ static const struct sun4i_usb_phy_cfg sun8i_a33_cfg = {
@@ -726,6 +741,13 @@ static const struct sun4i_usb_phy_cfg su
.dedicated_clocks = true,
};
@ -116,7 +114,7 @@ index 35b1fa3..bae54f7 100644
static const struct of_device_id sun4i_usb_phy_of_match[] = {
{ .compatible = "allwinner,sun4i-a10-usb-phy", .data = &sun4i_a10_cfg },
{ .compatible = "allwinner,sun5i-a13-usb-phy", .data = &sun5i_a13_cfg },
@@ -733,6 +755,7 @@ static const struct of_device_id sun4i_usb_phy_of_match[] = {
@@ -733,6 +755,7 @@ static const struct of_device_id sun4i_u
{ .compatible = "allwinner,sun7i-a20-usb-phy", .data = &sun7i_a20_cfg },
{ .compatible = "allwinner,sun8i-a23-usb-phy", .data = &sun8i_a23_cfg },
{ .compatible = "allwinner,sun8i-a33-usb-phy", .data = &sun8i_a33_cfg },

@ -17,8 +17,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/clk/sunxi/clk-usb.c | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index 8a47b77..a94bb56 100644
--- a/Documentation/devicetree/bindings/clock/sunxi.txt
+++ b/Documentation/devicetree/bindings/clock/sunxi.txt
@@ -68,6 +68,7 @@ Required properties:
@ -29,11 +27,9 @@ index 8a47b77..a94bb56 100644
"allwinner,sun9i-a80-usb-mod-clk" - for usb gates + resets on A80
"allwinner,sun9i-a80-usb-phy-clk" - for usb phy gates + resets on A80
diff --git a/drivers/clk/sunxi/clk-usb.c b/drivers/clk/sunxi/clk-usb.c
index 1a72cd6..67b8e38 100644
--- a/drivers/clk/sunxi/clk-usb.c
+++ b/drivers/clk/sunxi/clk-usb.c
@@ -243,3 +243,15 @@ static void __init sun9i_a80_usb_phy_setup(struct device_node *node)
@@ -243,3 +243,15 @@ static void __init sun9i_a80_usb_phy_set
sunxi_usb_clk_setup(node, &sun9i_a80_usb_phy_data, &a80_usb_phy_lock);
}
CLK_OF_DECLARE(sun9i_a80_usb_phy, "allwinner,sun9i-a80-usb-phy-clk", sun9i_a80_usb_phy_setup);

@ -20,11 +20,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
3 files changed, 176 insertions(+)
create mode 100644 drivers/clk/sunxi/clk-a10-ve.c
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
index 014eab8..e59f57b 100644
--- a/Documentation/devicetree/bindings/clock/sunxi.txt
+++ b/Documentation/devicetree/bindings/clock/sunxi.txt
@@ -76,6 +76,7 @@ Required properties:
@@ -71,6 +71,7 @@ Required properties:
"allwinner,sun8i-h3-usb-clk" - for usb gates + resets on H3
"allwinner,sun9i-a80-usb-mod-clk" - for usb gates + resets on A80
"allwinner,sun9i-a80-usb-phy-clk" - for usb phy gates + resets on A80
@ -32,7 +30,7 @@ index 014eab8..e59f57b 100644
Required properties for all clocks:
- reg : shall be the control register address for the clock.
@@ -95,6 +96,9 @@ Required properties for all clocks:
@@ -90,6 +91,9 @@ Required properties for all clocks:
And "allwinner,*-usb-clk" clocks also require:
- reset-cells : shall be set to 1
@ -42,8 +40,6 @@ index 014eab8..e59f57b 100644
The "allwinner,sun9i-a80-mmc-config-clk" clock also requires:
- #reset-cells : shall be set to 1
- resets : shall be the reset control phandle for the mmc block.
diff --git a/drivers/clk/sunxi/Makefile b/drivers/clk/sunxi/Makefile
index abf4916..1a909f9 100644
--- a/drivers/clk/sunxi/Makefile
+++ b/drivers/clk/sunxi/Makefile
@@ -7,6 +7,7 @@ obj-y += clk-a10-codec.o
@ -54,9 +50,6 @@ index abf4916..1a909f9 100644
obj-y += clk-a20-gmac.o
obj-y += clk-mod0.o
obj-y += clk-simple-gates.o
diff --git a/drivers/clk/sunxi/clk-a10-ve.c b/drivers/clk/sunxi/clk-a10-ve.c
new file mode 100644
index 0000000..044c171
--- /dev/null
+++ b/drivers/clk/sunxi/clk-a10-ve.c
@@ -0,0 +1,171 @@

@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
arch/arm/boot/dts/sun4i-a10.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index 849d024..2c8f5e6 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -520,6 +520,15 @@

@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
arch/arm/boot/dts/sun7i-a20.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
index 21169c0..0940a78 100644
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
@@ -527,6 +527,15 @@

@ -11,11 +11,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/usb/musb/sunxi.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c
index d9b0dc4..4b472b8 100644
--- a/drivers/usb/musb/sunxi.c
+++ b/drivers/usb/musb/sunxi.c
@@ -194,6 +194,10 @@ static irqreturn_t sunxi_musb_interrupt(int irq, void *__hci)
@@ -194,6 +194,10 @@ static irqreturn_t sunxi_musb_interrupt(
musb_writeb(musb->mregs, MUSB_FADDR, 0);
}

@ -17,11 +17,9 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/sunxi-ss/sun4i-ss-core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-core.c b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
index eab6fe2..107cd2a 100644
--- a/drivers/crypto/sunxi-ss/sun4i-ss-core.c
+++ b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
@@ -39,6 +39,7 @@ static struct sun4i_ss_alg_template ss_algs[] = {
@@ -39,6 +39,7 @@ static struct sun4i_ss_alg_template ss_a
.import = sun4i_hash_import_md5,
.halg = {
.digestsize = MD5_DIGEST_SIZE,
@ -29,7 +27,7 @@ index eab6fe2..107cd2a 100644
.base = {
.cra_name = "md5",
.cra_driver_name = "md5-sun4i-ss",
@@ -66,6 +67,7 @@ static struct sun4i_ss_alg_template ss_algs[] = {
@@ -66,6 +67,7 @@ static struct sun4i_ss_alg_template ss_a
.import = sun4i_hash_import_sha1,
.halg = {
.digestsize = SHA1_DIGEST_SIZE,

@ -16,8 +16,6 @@ Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
4 files changed, 522 insertions(+)
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
index b321b26..e6ba602 100644
--- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
@@ -18,6 +18,7 @@ Required properties:
@ -28,8 +26,6 @@ index b321b26..e6ba602 100644
- reg: Should contain the register physical address and length for the
pin controller.
diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
index e68fd95..89ab7f5 100644
--- a/drivers/pinctrl/sunxi/Kconfig
+++ b/drivers/pinctrl/sunxi/Kconfig
@@ -51,6 +51,10 @@ config PINCTRL_SUN8I_A23_R
@ -43,19 +39,14 @@ index e68fd95..89ab7f5 100644
config PINCTRL_SUN9I_A80
def_bool MACH_SUN9I
select PINCTRL_SUNXI_COMMON
diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile
index e080290..6bd818e 100644
--- a/drivers/pinctrl/sunxi/Makefile
+++ b/drivers/pinctrl/sunxi/Makefile
@@ -13,4 +13,5 @@ obj-$(CONFIG_PINCTRL_SUN8I_A23) += pinctrl-sun8i-a23.o
@@ -13,4 +13,5 @@ obj-$(CONFIG_PINCTRL_SUN8I_A23) += pinc
obj-$(CONFIG_PINCTRL_SUN8I_A23_R) += pinctrl-sun8i-a23-r.o
obj-$(CONFIG_PINCTRL_SUN8I_A33) += pinctrl-sun8i-a33.o
obj-$(CONFIG_PINCTRL_SUN8I_A83T) += pinctrl-sun8i-a83t.o
+obj-$(CONFIG_PINCTRL_SUN8I_H3) += pinctrl-sun8i-h3.o
obj-$(CONFIG_PINCTRL_SUN9I_A80) += pinctrl-sun9i-a80.o
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
new file mode 100644
index 0000000..98d465d
--- /dev/null
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
@@ -0,0 +1,516 @@

@ -12,8 +12,6 @@ Signed-off-by: Jens Kuske <jenskuske@gmail.com>
drivers/reset/reset-sunxi.c | 30 +++++++++++++++++++---
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt b/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt
index c8f77571..e11f023 100644
--- a/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt
+++ b/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt
@@ -8,6 +8,7 @@ Required properties:
@ -24,11 +22,9 @@ index c8f77571..e11f023 100644
- reg: should be register base and length as documented in the
datasheet
- #reset-cells: 1, see below
diff --git a/drivers/reset/reset-sunxi.c b/drivers/reset/reset-sunxi.c
index 3d95c87..c91e146 100644
--- a/drivers/reset/reset-sunxi.c
+++ b/drivers/reset/reset-sunxi.c
@@ -75,7 +75,9 @@ static struct reset_control_ops sunxi_reset_ops = {
@@ -75,7 +75,9 @@ static struct reset_control_ops sunxi_re
.deassert = sunxi_reset_deassert,
};
@ -39,7 +35,7 @@ index 3d95c87..c91e146 100644
{
struct sunxi_reset_data *data;
struct resource res;
@@ -108,6 +110,7 @@ static int sunxi_reset_init(struct device_node *np)
@@ -108,6 +110,7 @@ static int sunxi_reset_init(struct devic
data->rcdev.nr_resets = size * 32;
data->rcdev.ops = &sunxi_reset_ops;
data->rcdev.of_node = np;
@ -47,7 +43,7 @@ index 3d95c87..c91e146 100644
reset_controller_register(&data->rcdev);
return 0;
@@ -117,6 +120,21 @@ static int sunxi_reset_init(struct device_node *np)
@@ -117,6 +120,21 @@ err_alloc:
return ret;
};
@ -69,7 +65,7 @@ index 3d95c87..c91e146 100644
/*
* These are the reset controller we need to initialize early on in
* our system, before we can even think of using a regular device
@@ -124,15 +142,21 @@ static int sunxi_reset_init(struct device_node *np)
@@ -124,15 +142,21 @@ err_alloc:
*/
static const struct of_device_id sunxi_early_reset_dt_ids[] __initdata = {
{ .compatible = "allwinner,sun6i-a31-ahb1-reset", },
@ -80,12 +76,13 @@ index 3d95c87..c91e146 100644
void __init sun6i_reset_init(void)
{
struct device_node *np;
-
- for_each_matching_node(np, sunxi_early_reset_dt_ids)
- sunxi_reset_init(np);
+ const struct of_device_id *match;
+ int (*of_xlate)(struct reset_controller_dev *rcdev,
+ const struct of_phandle_args *reset_spec);
- for_each_matching_node(np, sunxi_early_reset_dt_ids)
- sunxi_reset_init(np);
+
+ for_each_matching_node_and_match(np, sunxi_early_reset_dt_ids, &match) {
+ of_xlate = match->data;
+ sunxi_reset_init(np, of_xlate);

@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
arch/arm/boot/dts/sun8i-h3.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
index 1524130e..cbab947 100644
--- a/arch/arm/boot/dts/sun8i-h3.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
@@ -269,6 +269,18 @@

@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
arch/arm/boot/dts/sun8i-h3.dtsi | 101 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3.dtsi b/arch/arm/boot/dts/sun8i-h3.dtsi
index cbab947..1169f515 100644
--- a/arch/arm/boot/dts/sun8i-h3.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
@@ -362,6 +362,107 @@

@ -13,8 +13,6 @@ Signed-off-by: Jens Kuske <jenskuske@gmail.com>
arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 44 ++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
index e67df59..1cb6c66 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
@@ -58,6 +58,35 @@

@ -12,11 +12,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/clk/sunxi/clk-sun8i-bus-gates.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/sunxi/clk-sun8i-bus-gates.c b/drivers/clk/sunxi/clk-sun8i-bus-gates.c
index 7ab60c5..b8c7753 100644
--- a/drivers/clk/sunxi/clk-sun8i-bus-gates.c
+++ b/drivers/clk/sunxi/clk-sun8i-bus-gates.c
@@ -40,7 +40,7 @@ static void __init sun8i_h3_bus_gates_init(struct device_node *node)
@@ -40,7 +40,7 @@ static void __init sun8i_h3_bus_gates_in
const __be32 *p;
int number, i;
u8 clk_bit;

@ -16,11 +16,9 @@ Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
include/linux/reset.h | 9 +++++++++
2 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 7955e00..81ae17d 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -141,27 +141,24 @@ int reset_control_status(struct reset_control *rstc)
@@ -141,27 +141,24 @@ int reset_control_status(struct reset_co
EXPORT_SYMBOL_GPL(reset_control_status);
/**
@ -56,7 +54,7 @@ index 7955e00..81ae17d 100644
ret = of_parse_phandle_with_args(node, "resets", "#reset-cells",
index, &args);
if (ret)
@@ -202,6 +199,27 @@ struct reset_control *of_reset_control_get(struct device_node *node,
@@ -202,6 +199,27 @@ struct reset_control *of_reset_control_g
return rstc;
}
@ -84,11 +82,9 @@ index 7955e00..81ae17d 100644
EXPORT_SYMBOL_GPL(of_reset_control_get);
/**
diff --git a/include/linux/reset.h b/include/linux/reset.h
index 7f65f9c..6db74ad 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -38,6 +38,9 @@ static inline struct reset_control *devm_reset_control_get_optional(
@@ -38,6 +38,9 @@ static inline struct reset_control *devm
struct reset_control *of_reset_control_get(struct device_node *node,
const char *id);
@ -98,7 +94,7 @@ index 7f65f9c..6db74ad 100644
#else
static inline int reset_control_reset(struct reset_control *rstc)
@@ -106,6 +109,12 @@ static inline struct reset_control *of_reset_control_get(
@@ -106,6 +109,12 @@ static inline struct reset_control *of_r
return ERR_PTR(-ENOSYS);
}

@ -21,11 +21,9 @@ Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/reset/core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 81ae17d..77cfc49 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -215,9 +215,12 @@ struct reset_control *of_reset_control_get(struct device_node *node,
@@ -215,9 +215,12 @@ struct reset_control *of_reset_control_g
{
int index = 0;

@ -13,11 +13,9 @@ Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
include/linux/reset.h | 8 ++++----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 77cfc49..9ab9290 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -95,7 +95,7 @@ int reset_control_reset(struct reset_control *rstc)
@@ -95,7 +95,7 @@ int reset_control_reset(struct reset_con
if (rstc->rcdev->ops->reset)
return rstc->rcdev->ops->reset(rstc->rcdev, rstc->id);
@ -26,7 +24,7 @@ index 77cfc49..9ab9290 100644
}
EXPORT_SYMBOL_GPL(reset_control_reset);
@@ -108,7 +108,7 @@ int reset_control_assert(struct reset_control *rstc)
@@ -108,7 +108,7 @@ int reset_control_assert(struct reset_co
if (rstc->rcdev->ops->assert)
return rstc->rcdev->ops->assert(rstc->rcdev, rstc->id);
@ -35,7 +33,7 @@ index 77cfc49..9ab9290 100644
}
EXPORT_SYMBOL_GPL(reset_control_assert);
@@ -121,7 +121,7 @@ int reset_control_deassert(struct reset_control *rstc)
@@ -121,7 +121,7 @@ int reset_control_deassert(struct reset_
if (rstc->rcdev->ops->deassert)
return rstc->rcdev->ops->deassert(rstc->rcdev, rstc->id);
@ -44,7 +42,7 @@ index 77cfc49..9ab9290 100644
}
EXPORT_SYMBOL_GPL(reset_control_deassert);
@@ -136,7 +136,7 @@ int reset_control_status(struct reset_control *rstc)
@@ -136,7 +136,7 @@ int reset_control_status(struct reset_co
if (rstc->rcdev->ops->status)
return rstc->rcdev->ops->status(rstc->rcdev, rstc->id);
@ -53,11 +51,9 @@ index 77cfc49..9ab9290 100644
}
EXPORT_SYMBOL_GPL(reset_control_status);
diff --git a/include/linux/reset.h b/include/linux/reset.h
index 6db74ad..c4c097d 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -74,7 +74,7 @@ static inline void reset_control_put(struct reset_control *rstc)
@@ -74,7 +74,7 @@ static inline void reset_control_put(str
static inline int device_reset_optional(struct device *dev)
{
@ -66,7 +62,7 @@ index 6db74ad..c4c097d 100644
}
static inline struct reset_control *__must_check reset_control_get(
@@ -94,19 +94,19 @@ static inline struct reset_control *__must_check devm_reset_control_get(
@@ -94,19 +94,19 @@ static inline struct reset_control *__mu
static inline struct reset_control *reset_control_get_optional(
struct device *dev, const char *id)
{

@ -22,11 +22,9 @@ Changes in v2:
include/linux/reset.h | 2 +
3 files changed, 116 insertions(+), 9 deletions(-)
diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 9ab9290..8c3436c 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -22,16 +22,29 @@ static DEFINE_MUTEX(reset_controller_list_mutex);
@@ -22,16 +22,29 @@ static DEFINE_MUTEX(reset_controller_lis
static LIST_HEAD(reset_controller_list);
/**
@ -59,7 +57,7 @@ index 9ab9290..8c3436c 100644
};
/**
@@ -66,6 +79,8 @@ int reset_controller_register(struct reset_controller_dev *rcdev)
@@ -66,6 +79,8 @@ int reset_controller_register(struct res
rcdev->of_xlate = of_reset_simple_xlate;
}
@ -68,7 +66,7 @@ index 9ab9290..8c3436c 100644
mutex_lock(&reset_controller_list_mutex);
list_add(&rcdev->list, &reset_controller_list);
mutex_unlock(&reset_controller_list_mutex);
@@ -93,7 +108,7 @@ EXPORT_SYMBOL_GPL(reset_controller_unregister);
@@ -93,7 +108,7 @@ EXPORT_SYMBOL_GPL(reset_controller_unreg
int reset_control_reset(struct reset_control *rstc)
{
if (rstc->rcdev->ops->reset)
@ -143,7 +141,7 @@ index 9ab9290..8c3436c 100644
* reset_control_status - returns a negative errno if not supported, a
* positive value if the reset line is asserted, or zero if the reset
* line is not asserted.
@@ -134,12 +191,47 @@ EXPORT_SYMBOL_GPL(reset_control_deassert);
@@ -134,12 +191,47 @@ EXPORT_SYMBOL_GPL(reset_control_deassert
int reset_control_status(struct reset_control *rstc)
{
if (rstc->rcdev->ops->status)
@ -192,7 +190,7 @@ index 9ab9290..8c3436c 100644
/**
* of_reset_control_get_by_index - Lookup and obtain a reference to a reset
* controller by index.
@@ -155,6 +247,7 @@ struct reset_control *of_reset_control_get_by_index(struct device_node *node,
@@ -155,6 +247,7 @@ struct reset_control *of_reset_control_g
{
struct reset_control *rstc = ERR_PTR(-EPROBE_DEFER);
struct reset_controller_dev *r, *rcdev;
@ -200,7 +198,7 @@ index 9ab9290..8c3436c 100644
struct of_phandle_args args;
int rstc_id;
int ret;
@@ -186,16 +279,22 @@ struct reset_control *of_reset_control_get_by_index(struct device_node *node,
@@ -186,16 +279,22 @@ struct reset_control *of_reset_control_g
}
try_module_get(rcdev->owner);
@ -225,7 +223,7 @@ index 9ab9290..8c3436c 100644
return rstc;
}
@@ -259,6 +358,10 @@ void reset_control_put(struct reset_control *rstc)
@@ -259,6 +358,10 @@ void reset_control_put(struct reset_cont
if (IS_ERR(rstc))
return;
@ -236,8 +234,6 @@ index 9ab9290..8c3436c 100644
module_put(rstc->rcdev->owner);
kfree(rstc);
}
diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
index ce6b962..7f2cbd1 100644
--- a/include/linux/reset-controller.h
+++ b/include/linux/reset-controller.h
@@ -31,6 +31,7 @@ struct of_phandle_args;
@ -256,11 +252,9 @@ index ce6b962..7f2cbd1 100644
struct device_node *of_node;
int of_reset_n_cells;
int (*of_xlate)(struct reset_controller_dev *rcdev,
diff --git a/include/linux/reset.h b/include/linux/reset.h
index c4c097d..1cca8ce 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -11,6 +11,8 @@ int reset_control_reset(struct reset_control *rstc);
@@ -11,6 +11,8 @@ int reset_control_reset(struct reset_con
int reset_control_assert(struct reset_control *rstc);
int reset_control_deassert(struct reset_control *rstc);
int reset_control_status(struct reset_control *rstc);

@ -19,8 +19,6 @@ Changes in v2:
drivers/usb/host/ehci-platform.c | 47 +++++++++++++---------
2 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt
index a12d601..0701812 100644
--- a/Documentation/devicetree/bindings/usb/usb-ehci.txt
+++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt
@@ -18,7 +18,7 @@ Optional properties:
@ -32,8 +30,6 @@ index a12d601..0701812 100644
Example (Sequoia 440EPx):
ehci@e0000300 {
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
index bd7082f2..6fbf32a 100644
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
@@ -39,11 +39,12 @@
@ -50,7 +46,7 @@ index bd7082f2..6fbf32a 100644
struct phy **phys;
int num_phys;
bool reset_on_resume;
@@ -149,7 +150,7 @@ static int ehci_platform_probe(struct platform_device *dev)
@@ -149,7 +150,7 @@ static int ehci_platform_probe(struct pl
struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ehci_platform_priv *priv;
struct ehci_hcd *ehci;
@ -59,7 +55,7 @@ index bd7082f2..6fbf32a 100644
if (usb_disabled())
return -ENODEV;
@@ -232,18 +233,24 @@ static int ehci_platform_probe(struct platform_device *dev)
@@ -232,18 +233,24 @@ static int ehci_platform_probe(struct pl
break;
}
}
@ -95,7 +91,7 @@ index bd7082f2..6fbf32a 100644
}
if (pdata->big_endian_desc)
@@ -300,8 +307,10 @@ static int ehci_platform_probe(struct platform_device *dev)
@@ -302,8 +309,10 @@ err_power:
if (pdata->power_off)
pdata->power_off(dev);
err_reset:
@ -108,7 +104,7 @@ index bd7082f2..6fbf32a 100644
err_put_clks:
while (--clk >= 0)
clk_put(priv->clks[clk]);
@@ -319,15 +328,17 @@ static int ehci_platform_remove(struct platform_device *dev)
@@ -321,15 +330,17 @@ static int ehci_platform_remove(struct p
struct usb_hcd *hcd = platform_get_drvdata(dev);
struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ehci_platform_priv *priv = hcd_to_ehci_priv(hcd);

@ -19,8 +19,6 @@ Changes in v2:
drivers/usb/host/ohci-platform.c | 49 +++++++++++++---------
2 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt
index 19233b7..9df4569 100644
--- a/Documentation/devicetree/bindings/usb/usb-ohci.txt
+++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt
@@ -14,7 +14,7 @@ Optional properties:
@ -32,8 +30,6 @@ index 19233b7..9df4569 100644
Example:
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
index c2669f18..7d8bbc4 100644
--- a/drivers/usb/host/ohci-platform.c
+++ b/drivers/usb/host/ohci-platform.c
@@ -33,11 +33,12 @@
@ -50,7 +46,7 @@ index c2669f18..7d8bbc4 100644
struct phy **phys;
int num_phys;
};
@@ -117,7 +118,7 @@ static int ohci_platform_probe(struct platform_device *dev)
@@ -117,7 +118,7 @@ static int ohci_platform_probe(struct pl
struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ohci_platform_priv *priv;
struct ohci_hcd *ohci;
@ -59,7 +55,7 @@ index c2669f18..7d8bbc4 100644
if (usb_disabled())
return -ENODEV;
@@ -195,19 +196,23 @@ static int ohci_platform_probe(struct platform_device *dev)
@@ -195,19 +196,23 @@ static int ohci_platform_probe(struct pl
break;
}
}
@ -96,7 +92,7 @@ index c2669f18..7d8bbc4 100644
}
if (pdata->big_endian_desc)
@@ -265,8 +270,10 @@ static int ohci_platform_probe(struct platform_device *dev)
@@ -265,8 +270,10 @@ err_power:
if (pdata->power_off)
pdata->power_off(dev);
err_reset:
@ -109,7 +105,7 @@ index c2669f18..7d8bbc4 100644
err_put_clks:
while (--clk >= 0)
clk_put(priv->clks[clk]);
@@ -284,15 +291,17 @@ static int ohci_platform_remove(struct platform_device *dev)
@@ -284,15 +291,17 @@ static int ohci_platform_remove(struct p
struct usb_hcd *hcd = platform_get_drvdata(dev);
struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev);
struct ohci_platform_priv *priv = hcd_to_ohci_priv(hcd);

@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
arch/arm/boot/dts/sun7i-a20-pcduino3.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/boot/dts/sun7i-a20-pcduino3.dts b/arch/arm/boot/dts/sun7i-a20-pcduino3.dts
index 861a4a6..067f365 100644
--- a/arch/arm/boot/dts/sun7i-a20-pcduino3.dts
+++ b/arch/arm/boot/dts/sun7i-a20-pcduino3.dts
@@ -111,6 +111,11 @@

@ -18,11 +18,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2 files changed, 298 insertions(+)
create mode 100644 arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index cc7309b..6f8deac 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -639,6 +639,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
@@ -638,6 +638,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
sun7i-a20-cubietruck.dtb \
sun7i-a20-hummingbird.dtb \
sun7i-a20-i12-tvbox.dtb \
@ -30,9 +28,6 @@ index cc7309b..6f8deac 100644
sun7i-a20-m3.dtb \
sun7i-a20-mk808c.dtb \
sun7i-a20-olimex-som-evb.dtb \
diff --git a/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts
new file mode 100644
index 0000000..975b0b2
--- /dev/null
+++ b/arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts
@@ -0,0 +1,297 @@

@ -1,6 +1,6 @@
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -324,7 +324,7 @@
@@ -324,7 +324,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
quiet_cmd_lzma = LZMA $@
cmd_lzma = (cat $(filter-out FORCE,$^) | \

@ -1,6 +1,6 @@
--- a/drivers/mfd/rdc321x-southbridge.c
+++ b/drivers/mfd/rdc321x-southbridge.c
@@ -85,6 +85,8 @@
@@ -85,6 +85,8 @@ static int rdc321x_sb_probe(struct pci_d
rdc321x_gpio_pdata.sb_pdev = pdev;
rdc321x_wdt_pdata.sb_pdev = pdev;

Loading…
Cancel
Save