Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3cd7a26 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'sti_drivers'

Peter Griffin says:

====================
Fix sti drivers whcih mix reg address spaces

A V2 of this old series incorporating Arnd and Lees Feedback form v1.

Following on from Arnds comments about the picophy driver here
https://lkml.org/lkml/2014/11/13/161

, this series fixes the
remaining upstreamed drivers for STI, which are mixing address spaces
in the reg property. We do this in a way similar to the keystone
and bcm7445 platforms, by having sysconfig phandle/ offset pair
(where only one register is required). Or phandle / integer array
where multiple offsets in the same bank are needed).

This series breaks DT compatability! But the platform support
is WIP and only being used by the few developers who are upstreaming
support for it. I've made each change to the driver / dt doc / dt
file as a single atomic commit so the kernel will remain bisectable.

This series then also enables the picophy driver, and adds back in
the ehci/ohci dt nodes for stih410 which make use of the picophy.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents fb57720d 9b1a6d36
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -9,14 +9,10 @@ The device node has following properties.
Required properties:
 - compatible	: Can be "st,stih415-dwmac", "st,stih416-dwmac",
   "st,stih407-dwmac", "st,stid127-dwmac".
 - reg : Offset of the glue configuration register map in system
   configuration regmap pointed by st,syscon property and size.
 - st,syscon : Should be phandle to system configuration node which
   encompases this glue registers.
 - st,syscon : Should be phandle/offset pair. The phandle to the syscon node which
   encompases the glue register, and the offset of the control register.
 - st,gmac_en: this is to enable the gmac into a dedicated sysctl control
   register available on STiH407 SoC.
 - sti-ethconf: this is the gmac glue logic register to enable the GMAC,
   select among the different modes and program the clk retiming.
 - pinctrl-0: pin-control for all the MII mode supported.

Optional properties:
@@ -40,10 +36,10 @@ ethernet0: dwmac@9630000 {
	device_type = "network";
	status = "disabled";
	compatible = "st,stih407-dwmac", "snps,dwmac", "snps,dwmac-3.710";
	reg = <0x9630000 0x8000>, <0x80 0x4>;
	reg-names = "stmmaceth", "sti-ethconf";
	reg = <0x9630000 0x8000>;
	reg-names = "stmmaceth";

	st,syscon = <&syscfg_sbc_reg>;
	st,syscon = <&syscfg_sbc_reg 0x80>;
	st,gmac_en;
	resets = <&softreset STIH407_ETH1_SOFTRESET>;
	reset-names = "stmmaceth";
+8 −7
Original line number Diff line number Diff line
@@ -6,8 +6,10 @@ for SATA and PCIe.

Required properties (controller (parent) node):
- compatible    : Should be "st,miphy365x-phy"
- st,syscfg     : Should be a phandle of the system configuration register group
		  which contain the SATA, PCIe mode setting bits
- st,syscfg     : Phandle / integer array property. Phandle of sysconfig group
		  containing the miphy registers and integer array should contain
		  an entry for each port sub-node, specifying the control
		  register offset inside the sysconfig group.

Required nodes	:  A sub-node is required for each channel the controller
		   provides. Address range information including the usual
@@ -26,7 +28,6 @@ Required properties (port (child) node):
		  registers filled in "reg":
			- sata:   For SATA devices
			- pcie:   For PCIe devices
			- syscfg: To specify the syscfg based config register

Optional properties (port (child) node):
- st,sata-gen	     :	Generation of locally attached SATA IP. Expected values
@@ -39,20 +40,20 @@ Example:

	miphy365x_phy: miphy365x@fe382000 {
		compatible      = "st,miphy365x-phy";
		st,syscfg  	= <&syscfg_rear>;
		st,syscfg  	= <&syscfg_rear 0x824 0x828>;
		#address-cells	= <1>;
		#size-cells	= <1>;
		ranges;

		phy_port0: port@fe382000 {
			reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>;
			reg-names = "sata", "pcie", "syscfg";
			reg = <0xfe382000 0x100>, <0xfe394000 0x100>;
			reg-names = "sata", "pcie";
			#phy-cells = <1>;
			st,sata-gen = <3>;
		};

		phy_port1: port@fe38a000 {
			reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;;
			reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;;
			reg-names = "sata", "pcie", "syscfg";
			#phy-cells = <1>;
			st,pcie-tx-pol-inv;
+2 −8
Original line number Diff line number Diff line
@@ -5,10 +5,7 @@ host controllers (when controlling usb2/1.1 devices) available on STiH407 SoC fa

Required properties:
- compatible		: should be "st,stih407-usb2-phy"
- reg			: contain the offset and length of the system configuration registers
			  used as glue logic to control & parameter phy
- reg-names		: the names of the system configuration registers in "reg", should be "param" and "reg"
- st,syscfg		: sysconfig register to manage phy parameter at driver level
- st,syscfg		: phandle of sysconfig bank plus integer array containing phyparam and phyctrl register offsets
- resets		: list of phandle and reset specifier pairs. There should be two entries, one
			  for the whole phy and one for the port
- reset-names		: list of reset signal names. Should be "global" and "port"
@@ -19,11 +16,8 @@ Example:

usb2_picophy0: usbpicophy@f8 {
	compatible	= "st,stih407-usb2-phy";
	reg		= <0xf8 0x04>,	/* syscfg 5062 */
			  <0xf4 0x04>;	/* syscfg 5061 */
	reg-names	= "param", "ctrl";
	#phy-cells	= <0>;
	st,syscfg	= <&syscfg_core>;
	st,syscfg	= <&syscfg_core 0x100 0xf4>;
	resets		= <&softreset STIH407_PICOPHY_SOFTRESET>,
			  <&picophyreset STIH407_PICOPHY0_RESET>;
	reset-names	= "global", "port";
+9 −0
Original line number Diff line number Diff line
@@ -274,5 +274,14 @@

			status = "disabled";
		};

		usb2_picophy0: phy1 {
			compatible = "st,stih407-usb2-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_core 0x100 0xf4>;
			resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
				 <&picophyreset STIH407_PICOPHY0_RESET>;
			reset-names = "global", "port";
		};
	};
};
+70 −0
Original line number Diff line number Diff line
@@ -10,5 +10,75 @@
#include "stih407-family.dtsi"
#include "stih410-pinctrl.dtsi"
/ {
	soc {
		usb2_picophy1: phy2 {
			compatible = "st,stih407-usb2-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_core 0xf8 0xf4>;
			resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
				 <&picophyreset STIH407_PICOPHY0_RESET>;
			reset-names = "global", "port";
		};

		usb2_picophy2: phy3 {
			compatible = "st,stih407-usb2-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_core 0xfc 0xf4>;
			resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
				 <&picophyreset STIH407_PICOPHY1_RESET>;
			reset-names = "global", "port";
		};

		ohci0: usb@9a03c00 {
			compatible = "st,st-ohci-300x";
			reg = <0x9a03c00 0x100>;
			interrupts = <GIC_SPI 180 IRQ_TYPE_NONE>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT0_SOFTRESET>;
			reset-names = "power", "softreset";
			phys = <&usb2_picophy1>;
			phy-names = "usb";
		};

		ehci0: usb@9a03e00 {
			compatible = "st,st-ehci-300x";
			reg = <0x9a03e00 0x100>;
			interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb0>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT0_SOFTRESET>;
			reset-names = "power", "softreset";
			phys = <&usb2_picophy1>;
			phy-names = "usb";
		};

		ohci1: usb@9a83c00 {
			compatible = "st,st-ohci-300x";
			reg = <0x9a83c00 0x100>;
			interrupts = <GIC_SPI 181 IRQ_TYPE_NONE>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT1_SOFTRESET>;
			reset-names = "power", "softreset";
			phys = <&usb2_picophy2>;
			phy-names = "usb";
		};

		ehci1: usb@9a83e00 {
			compatible = "st,st-ehci-300x";
			reg = <0x9a83e00 0x100>;
			interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb1>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT1_SOFTRESET>;
			reset-names = "power", "softreset";
			phys = <&usb2_picophy2>;
			phy-names = "usb";
		};
	};
};
Loading