Commit 1c1597c8 authored by Kunihiko Hayashi's avatar Kunihiko Hayashi Committed by Vinod Koul
Browse files

phy: uniphier-pcie: Add compatible string and SoC-dependent data for NX1 SoC



Add basic support for UniPhier NX1 SoC. This includes a compatible string,
SoC-dependent data, and a function that set to 2-lane mode.

Signed-off-by: default avatarKunihiko Hayashi <hayashi.kunihiko@socionext.com>
Link: https://lore.kernel.org/r/1635503947-18250-5-git-send-email-hayashi.kunihiko@socionext.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 21db1010
Loading
Loading
Loading
Loading
+19 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,10 @@
#define SG_USBPCIESEL		0x590
#define SG_USBPCIESEL		0x590
#define SG_USBPCIESEL_PCIE	BIT(0)
#define SG_USBPCIESEL_PCIE	BIT(0)


/* SC */
#define SC_US3SRCSEL		0x2244
#define SC_US3SRCSEL_2LANE	GENMASK(9, 8)

#define PCL_PHY_R00		0
#define PCL_PHY_R00		0
#define   RX_EQ_ADJ_EN		BIT(3)		/* enable for EQ adjustment */
#define   RX_EQ_ADJ_EN		BIT(3)		/* enable for EQ adjustment */
#define PCL_PHY_R06		6
#define PCL_PHY_R06		6
@@ -261,6 +265,12 @@ static void uniphier_pciephy_ld20_setmode(struct regmap *regmap)
			   SG_USBPCIESEL_PCIE, SG_USBPCIESEL_PCIE);
			   SG_USBPCIESEL_PCIE, SG_USBPCIESEL_PCIE);
}
}


static void uniphier_pciephy_nx1_setmode(struct regmap *regmap)
{
	regmap_update_bits(regmap, SC_US3SRCSEL,
			   SC_US3SRCSEL_2LANE, SC_US3SRCSEL_2LANE);
}

static const struct uniphier_pciephy_soc_data uniphier_pro5_data = {
static const struct uniphier_pciephy_soc_data uniphier_pro5_data = {
	.is_legacy = true,
	.is_legacy = true,
};
};
@@ -274,6 +284,11 @@ static const struct uniphier_pciephy_soc_data uniphier_pxs3_data = {
	.is_legacy = false,
	.is_legacy = false,
};
};


static const struct uniphier_pciephy_soc_data uniphier_nx1_data = {
	.is_legacy = false,
	.set_phymode = uniphier_pciephy_nx1_setmode,
};

static const struct of_device_id uniphier_pciephy_match[] = {
static const struct of_device_id uniphier_pciephy_match[] = {
	{
	{
		.compatible = "socionext,uniphier-pro5-pcie-phy",
		.compatible = "socionext,uniphier-pro5-pcie-phy",
@@ -287,6 +302,10 @@ static const struct of_device_id uniphier_pciephy_match[] = {
		.compatible = "socionext,uniphier-pxs3-pcie-phy",
		.compatible = "socionext,uniphier-pxs3-pcie-phy",
		.data = &uniphier_pxs3_data,
		.data = &uniphier_pxs3_data,
	},
	},
	{
		.compatible = "socionext,uniphier-nx1-pcie-phy",
		.data = &uniphier_nx1_data,
	},
	{ /* sentinel */ },
	{ /* sentinel */ },
};
};
MODULE_DEVICE_TABLE(of, uniphier_pciephy_match);
MODULE_DEVICE_TABLE(of, uniphier_pciephy_match);