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

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

Merge branch 'apm_xgene'



Iyappan Subramanian says:

====================
net: Add APM X-Gene SoC Ethernet driver support

Adding APM X-Gene SoC Ethernet driver.

v10: Address comments from v9 review
* Documentation: aligned descriptions
* simplified struct platform_driver initialization
* fixed xgene_enet_mdio_config error path
* fixed xgene_enet_init_hw error path
* removed statistics spin_lock as it is not required
* changed raw_desc fields to type __le64
* defined helper macros for set/get raw_descriptor fields

v9: Address comments from v8 review
* changed to direct read/write, byteswap into raw descriptor
* fixed xgene_enet_create_desc_ring() error handling
* removed references to IS_ERR_OR_NULL
* disabled half duplex on phy_devce supported/advertising
* simplified xgene_enet_adjust_link() function
* fixed sparse tool compilation warnings

v8: Address comments from v7 review
* changed angle bracket to double quotes in header file include.

v7: Address comments from v6 review
* fixed skb memory leak when dma_map_single fails in xmit.

v6: Address comments from v5 review
* added basic ethtool support
* added ndo_get_stats64 call back
* deleted priting Rx error messages
* renamed set_bits to xgene_set_bits to fix kbuild error (make ARCH=powerpc)

v5: Address comments from v4 review
* Documentation: Added phy-handle, reg-names and changed mdio part
* dtb: Added reg-names supplemental property
* changed platform_get_resource to platform_get_resource_byname
* added separate tx/rx set_desc/get_desc functions to do raw_write/raw_read
* removed set_desc/get_desc table lookup logic
* added error handling logic based on per packet descriptor bits
* added software managed Rx packet and error counters
* added busy wait for register read/writes
* changed mdio_bus->id to avoid conflict
* fixed mdio_bus leak in case of mdio_config error
* changed phy reg hard coded value to MII_BMSR
* changed phy addr hard coded value to phy_device->addr
* added paranthesis around macro arguments
* converted helper macros to inline functions
* changed use of goto's only to common work such as cleanup

v4: Address comments from v3 review
* MAINTAINERS: changed status to supported
* Kconfig: made default to no
* changed to bool data type wherever applicable
* cleaned up single bit set and masking code
* removed statistics counters masking
* removed unnecessary OOM message printing
* fixed dma_map_single and dma_unmap_single size parameter
* changed set bits macro body using new set_bits function

v3: Address comments from v2 review
* cleaned up set_desc and get_desc functions
* added dtb mdio node and phy-handle subnode
* renamed dtb phy-mode to phy-connection-type
* added of_phy_connect call to connec to PHY
* added empty line after last local variable declaration
* removed type casting when not required
* removed inline keyword from source files
* removed CONFIG_CPU_BIG_ENDIAN ifdef

v2
* Completely redesigned ethernet driver
* Added support to work with big endian kernel
* Renamed dtb phyid entry to phy_addr
* Changed dtb local-mac-address entry to byte string format
* Renamed dtb eth8clk entry to menetclk

v1
* Initial version
====================

Signed-off-by: default avatarIyappan Subramanian <isubramanian@apm.com>
Signed-off-by: default avatarRavi Patel <rapatel@apm.com>
Signed-off-by: default avatarKeyur Chudgar <kchudgar@apm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents f00439e2 e6ad7673
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
APM X-Gene SoC Ethernet nodes

Ethernet nodes are defined to describe on-chip ethernet interfaces in
APM X-Gene SoC.

Required properties:
- compatible: Should be "apm,xgene-enet"
- reg: Address and length of the register set for the device. It contains the
  information of registers in the same order as described by reg-names
- reg-names: Should contain the register set names
  - "enet_csr": Ethernet control and status register address space
  - "ring_csr": Descriptor ring control and status register address space
  - "ring_cmd": Descriptor ring command register address space
- interrupts: Ethernet main interrupt
- clocks: Reference to the clock entry.
- local-mac-address: MAC address assigned to this device
- phy-connection-type: Interface type between ethernet device and PHY device
- phy-handle: Reference to a PHY node connected to this device

- mdio: Device tree subnode with the following required properties:
  - compatible: Must be "apm,xgene-mdio".
  - #address-cells: Must be <1>.
  - #size-cells: Must be <0>.

  For the phy on the mdio bus, there must be a node with the following fields:
  - compatible: PHY identifier.  Please refer ./phy.txt for the format.
  - reg: The ID number for the phy.

Optional properties:
- status: Should be "ok" or "disabled" for enabled/disabled. Default is "ok".

Example:
	menetclk: menetclk {
		compatible = "apm,xgene-device-clock";
		clock-output-names = "menetclk";
		status = "ok";
	};

	menet: ethernet@17020000 {
		compatible = "apm,xgene-enet";
		status = "disabled";
		reg = <0x0 0x17020000 0x0 0xd100>,
		      <0x0 0X17030000 0x0 0X400>,
		      <0x0 0X10000000 0x0 0X200>;
		reg-names = "enet_csr", "ring_csr", "ring_cmd";
		interrupts = <0x0 0x3c 0x4>;
		clocks = <&menetclk 0>;
		local-mac-address = [00 01 73 00 00 01];
		phy-connection-type = "rgmii";
		phy-handle = <&menetphy>;
		mdio {
			compatible = "apm,xgene-mdio";
			#address-cells = <1>;
			#size-cells = <0>;
			menetphy: menetphy@3 {
				compatible = "ethernet-phy-id001c.c915";
				reg = <0x3>;
			};

		};
	};

/* Board-specific peripheral configurations */
&menet {
        status = "ok";
};
+8 −0
Original line number Diff line number Diff line
@@ -719,6 +719,14 @@ S: Maintained
F:	drivers/net/appletalk/
F:	net/appletalk/

APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
M:	Iyappan Subramanian <isubramanian@apm.com>
M:	Keyur Chudgar <kchudgar@apm.com>
M:	Ravi Patel <rapatel@apm.com>
S:	Supported
F:	drivers/net/ethernet/apm/xgene/
F:	Documentation/devicetree/bindings/net/apm-xgene-enet.txt

APTINA CAMERA SENSOR PLL
M:	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
L:	linux-media@vger.kernel.org
+4 −0
Original line number Diff line number Diff line
@@ -28,3 +28,7 @@
&serial0 {
	status = "ok";
};

&menet {
	status = "ok";
};
+27 −3
Original line number Diff line number Diff line
@@ -167,14 +167,13 @@
				clock-output-names = "ethclk";
			};

			eth8clk: eth8clk {
			menetclk: menetclk {
				compatible = "apm,xgene-device-clock";
				#clock-cells = <1>;
				clocks = <&ethclk 0>;
				clock-names = "eth8clk";
				reg = <0x0 0x1702C000 0x0 0x1000>;
				reg-names = "csr-reg";
				clock-output-names = "eth8clk";
				clock-output-names = "menetclk";
			};

			sataphy1clk: sataphy1clk@1f21c000 {
@@ -397,5 +396,30 @@
			#clock-cells = <1>;
			clocks = <&rtcclk 0>;
		};

		menet: ethernet@17020000 {
			compatible = "apm,xgene-enet";
			status = "disabled";
			reg = <0x0 0x17020000 0x0 0xd100>,
			      <0x0 0X17030000 0x0 0X400>,
			      <0x0 0X10000000 0x0 0X200>;
			reg-names = "enet_csr", "ring_csr", "ring_cmd";
			interrupts = <0x0 0x3c 0x4>;
			dma-coherent;
			clocks = <&menetclk 0>;
			local-mac-address = [00 01 73 00 00 01];
			phy-connection-type = "rgmii";
			phy-handle = <&menetphy>;
			mdio {
				compatible = "apm,xgene-mdio";
				#address-cells = <1>;
				#size-cells = <0>;
				menetphy: menetphy@3 {
					compatible = "ethernet-phy-id001c.c915";
					reg = <0x3>;
				};

			};
		};
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ source "drivers/net/ethernet/allwinner/Kconfig"
source "drivers/net/ethernet/alteon/Kconfig"
source "drivers/net/ethernet/altera/Kconfig"
source "drivers/net/ethernet/amd/Kconfig"
source "drivers/net/ethernet/apm/Kconfig"
source "drivers/net/ethernet/apple/Kconfig"
source "drivers/net/ethernet/arc/Kconfig"
source "drivers/net/ethernet/atheros/Kconfig"
Loading