phy: marvell: a3700: Use comphy_mux on Armada 37xx.
Lane 0 supports SGMII1 and USB3. Lane 1 supports SGMII0 and PEX0. Lane 2 supports SATA0 and USB3. This is needed for Armada 37xx. This introduces new device tree bindings. AFAIK there is currently no driver for Armada 37xx comphy in Linux. When such a driver will be pushed into Linux, this will need to be rewritten accordingly. Signed-off-by: Marek Behun <marek.behun@nic.cz> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
3282a3e75f
commit
22f418935b
@ -290,8 +290,9 @@
|
|||||||
compatible = "marvell,mvebu-comphy", "marvell,comphy-armada-3700";
|
compatible = "marvell,mvebu-comphy", "marvell,comphy-armada-3700";
|
||||||
reg = <0x18300 0x28>,
|
reg = <0x18300 0x28>,
|
||||||
<0x1f300 0x3d000>;
|
<0x1f300 0x3d000>;
|
||||||
mux-bitcount = <1>;
|
mux-bitcount = <4>;
|
||||||
max-lanes = <2>;
|
mux-lane-order = <1 0 2>;
|
||||||
|
max-lanes = <3>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,6 +13,38 @@
|
|||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
struct comphy_mux_data a3700_comphy_mux_data[] = {
|
||||||
|
/* Lane 0 */
|
||||||
|
{
|
||||||
|
4,
|
||||||
|
{
|
||||||
|
{ PHY_TYPE_UNCONNECTED, 0x0 },
|
||||||
|
{ PHY_TYPE_SGMII1, 0x0 },
|
||||||
|
{ PHY_TYPE_USB3_HOST0, 0x1 },
|
||||||
|
{ PHY_TYPE_USB3_DEVICE, 0x1 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/* Lane 1 */
|
||||||
|
{
|
||||||
|
3,
|
||||||
|
{
|
||||||
|
{ PHY_TYPE_UNCONNECTED, 0x0},
|
||||||
|
{ PHY_TYPE_SGMII0, 0x0},
|
||||||
|
{ PHY_TYPE_PEX0, 0x1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/* Lane 2 */
|
||||||
|
{
|
||||||
|
4,
|
||||||
|
{
|
||||||
|
{ PHY_TYPE_UNCONNECTED, 0x0},
|
||||||
|
{ PHY_TYPE_SATA0, 0x0},
|
||||||
|
{ PHY_TYPE_USB3_HOST0, 0x1},
|
||||||
|
{ PHY_TYPE_USB3_DEVICE, 0x1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
struct sgmii_phy_init_data_fix {
|
struct sgmii_phy_init_data_fix {
|
||||||
u16 addr;
|
u16 addr;
|
||||||
u16 value;
|
u16 value;
|
||||||
@ -932,6 +964,10 @@ int comphy_a3700_init(struct chip_serdes_phy_config *chip_cfg,
|
|||||||
|
|
||||||
debug_enter();
|
debug_enter();
|
||||||
|
|
||||||
|
/* Initialize PHY mux */
|
||||||
|
chip_cfg->mux_data = a3700_comphy_mux_data;
|
||||||
|
comphy_mux_init(chip_cfg, serdes_map, COMPHY_SEL_ADDR);
|
||||||
|
|
||||||
for (lane = 0, comphy_map = serdes_map; lane < comphy_max_count;
|
for (lane = 0, comphy_map = serdes_map; lane < comphy_max_count;
|
||||||
lane++, comphy_map++) {
|
lane++, comphy_map++) {
|
||||||
debug("Initialize serdes number %d\n", lane);
|
debug("Initialize serdes number %d\n", lane);
|
||||||
|
Loading…
Reference in New Issue
Block a user