mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
drm/sun4i: sun8i-hdmi-phy: Support multiple custom PHY ops
The D1 SoC comes with a new custom HDMI PHY, which does not share any registers with the existing custom PHY. So it needs a new set of ops. Instead of providing a flag in the variant structure, provide the ops themselves. Signed-off-by: Samuel Holland <samuel@sholland.org> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20220615045543.62813-5-samuel@sholland.org
This commit is contained in:
parent
94c25fb1df
commit
cdf3e5e15a
|
|
@ -151,10 +151,10 @@ struct sun8i_hdmi_phy;
|
|||
struct sun8i_hdmi_phy_variant {
|
||||
bool has_phy_clk;
|
||||
bool has_second_pll;
|
||||
unsigned int is_custom_phy : 1;
|
||||
const struct dw_hdmi_curr_ctrl *cur_ctr;
|
||||
const struct dw_hdmi_mpll_config *mpll_cfg;
|
||||
const struct dw_hdmi_phy_config *phy_cfg;
|
||||
const struct dw_hdmi_phy_ops *phy_ops;
|
||||
void (*phy_init)(struct sun8i_hdmi_phy *phy);
|
||||
void (*phy_disable)(struct dw_hdmi *hdmi,
|
||||
struct sun8i_hdmi_phy *phy);
|
||||
|
|
|
|||
|
|
@ -567,8 +567,8 @@ void sun8i_hdmi_phy_set_ops(struct sun8i_hdmi_phy *phy,
|
|||
{
|
||||
const struct sun8i_hdmi_phy_variant *variant = phy->variant;
|
||||
|
||||
if (variant->is_custom_phy) {
|
||||
plat_data->phy_ops = &sun8i_hdmi_phy_ops;
|
||||
if (variant->phy_ops) {
|
||||
plat_data->phy_ops = variant->phy_ops;
|
||||
plat_data->phy_name = "sun8i_dw_hdmi_phy";
|
||||
plat_data->phy_data = phy;
|
||||
} else {
|
||||
|
|
@ -587,7 +587,7 @@ static const struct regmap_config sun8i_hdmi_phy_regmap_config = {
|
|||
};
|
||||
|
||||
static const struct sun8i_hdmi_phy_variant sun8i_a83t_hdmi_phy = {
|
||||
.is_custom_phy = true,
|
||||
.phy_ops = &sun8i_hdmi_phy_ops,
|
||||
.phy_init = &sun8i_hdmi_phy_init_a83t,
|
||||
.phy_disable = &sun8i_hdmi_phy_disable_a83t,
|
||||
.phy_config = &sun8i_hdmi_phy_config_a83t,
|
||||
|
|
@ -595,7 +595,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_a83t_hdmi_phy = {
|
|||
|
||||
static const struct sun8i_hdmi_phy_variant sun8i_h3_hdmi_phy = {
|
||||
.has_phy_clk = true,
|
||||
.is_custom_phy = true,
|
||||
.phy_ops = &sun8i_hdmi_phy_ops,
|
||||
.phy_init = &sun8i_hdmi_phy_init_h3,
|
||||
.phy_disable = &sun8i_hdmi_phy_disable_h3,
|
||||
.phy_config = &sun8i_hdmi_phy_config_h3,
|
||||
|
|
@ -604,7 +604,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_h3_hdmi_phy = {
|
|||
static const struct sun8i_hdmi_phy_variant sun8i_r40_hdmi_phy = {
|
||||
.has_phy_clk = true,
|
||||
.has_second_pll = true,
|
||||
.is_custom_phy = true,
|
||||
.phy_ops = &sun8i_hdmi_phy_ops,
|
||||
.phy_init = &sun8i_hdmi_phy_init_h3,
|
||||
.phy_disable = &sun8i_hdmi_phy_disable_h3,
|
||||
.phy_config = &sun8i_hdmi_phy_config_h3,
|
||||
|
|
@ -612,7 +612,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_r40_hdmi_phy = {
|
|||
|
||||
static const struct sun8i_hdmi_phy_variant sun50i_a64_hdmi_phy = {
|
||||
.has_phy_clk = true,
|
||||
.is_custom_phy = true,
|
||||
.phy_ops = &sun8i_hdmi_phy_ops,
|
||||
.phy_init = &sun8i_hdmi_phy_init_h3,
|
||||
.phy_disable = &sun8i_hdmi_phy_disable_h3,
|
||||
.phy_config = &sun8i_hdmi_phy_config_h3,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user