This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/DRA745: How to apply another ethernet PHY?

Part Number: DRA745


Tool/software: Linux

Hello.

I'm trying to setup another automotive gigabit PHY on the cusom board.
Target board is based on DRA7X_EVM(VAYU 703761-1031), there is no much differences.

EVM board have 2 PHY for CPSW.
PHY part number is DP83865DVH(drivers/net/phy/national.c).
But actually Generic PHY driver(drivers/net/phy/phy_device.c) is used.

The difference b/w EVM and target board is only 2nd PHY which is replaced with Marvell automotive PHY.
(Exact same pad is connected. PHY mode is rgmii.  )
I have changed the driver for marvel PHY.

But how can I make davinci-mdio use the marvell automotive PHY driver on device tree?
Is there any example or reference?

dra7.dtsi
...
		mac: ethernet@48484000 {
			compatible = "ti,dra7-cpsw","ti,cpsw";
			ti,hwmods = "gmac";
			clocks = <&gmac_main_clk>, <&gmac_rft_clk_mux>;
			clock-names = "fck", "cpts";
			cpdma_channels = <8>;
			ale_entries = <1024>;
			bd_ram_size = <0x2000>;
			mac_control = <0x20>;
			slaves = <2>;
			active_slave = <0>;
			cpts_clock_mult = <0x784CFE14>;
			cpts_clock_shift = <29>;
			reg = <0x48484000 0x1000
			       0x48485200 0x2E00>;
			#address-cells = <1>;
			#size-cells = <1>;

			/*
			 * Do not allow gating of cpsw clock as workaround
			 * for errata i877. Keeping internal clock disabled
			 * causes the device switching characteristics
			 * to degrade over time and eventually fail to meet
			 * the data manual delay time/skew specs.
			 */
			ti,no-idle;

			/*
			 * rx_thresh_pend
			 * rx_pend
			 * tx_pend
			 * misc_pend
			 */
			interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
			ranges;
			syscon = <&scm_conf>;
			status = "disabled";

			davinci_mdio: mdio@48485000 {
				compatible = "ti,cpsw-mdio";
				#address-cells = <1>;
				#size-cells = <0>;
				ti,hwmods = "davinci_mdio";
				bus_freq = <1000000>;
				reg = <0x48485000 0x100>;
			};

			cpsw_emac0: slave@48480200 {
				/* Filled in by U-Boot */
				mac-address = [ 00 00 00 00 00 00 ];
			};

			cpsw_emac1: slave@48480300 {
				/* Filled in by U-Boot */
				mac-address = [ 00 00 00 00 00 00 ];
			};

			phy_sel: cpsw-phy-sel@4a002554 {
				compatible = "ti,dra7xx-cpsw-phy-sel";
				reg= <0x4a002554 0x4>;
				reg-names = "gmii-sel";
			};
		};
...



in dts file
...
&mac {
	status = "okay";
	dual_emac;
};

&cpsw_emac0 {
	phy_id = <&davinci_mdio>, <2>;
	phy-mode = "rgmii";
	dual_emac_res_vlan = <1>;
};

&cpsw_emac1 {
	phy_id = <&davinci_mdio>, <3>;
	phy-mode = "rgmii";
	dual_emac_res_vlan = <2>;
};
...

Best Regards,

JeHun Kim