Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.14 hdmi #27

Merged
merged 12 commits into from
Jun 10, 2018
248 changes: 106 additions & 142 deletions arch/arm/boot/dts/mt7623.dtsi

Large diffs are not rendered by default.

97 changes: 75 additions & 22 deletions arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,15 @@
};
};

&bls {
status = "okay";
port {
bls_out: endpoint {
remote-endpoint = <&dpi0_in>;
};
};
};

&cir {
pinctrl-names = "default";
pinctrl-0 = <&cir_pins_a>;
Expand Down Expand Up @@ -208,14 +217,49 @@
};
};

&hdmi0 {
&cec {
status = "okay";
};

&hdmi_phy {
mediatek,ibias = <0xa>;
mediatek,ibias_up = <0x1c>;
status = "okay";
};

&hdmiddc0 {
status = "okay";
};

&dpi0 {
status = "okay";
port {
dpi0_out: endpoint {
remote-endpoint = <&hdmi0_in>;
};

dpi0_in: endpoint@1 {
remote-endpoint = <&bls_out>;
};
};
};

&hdmi0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&hdmi_pin>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
hdmi0_in: endpoint {
remote-endpoint = <&dpi0_out>;
};
};
};
};

&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins_a>;
Expand All @@ -228,11 +272,6 @@
status = "okay";
};

&mali {
vdd_g3d-supply = <&vdd_fixed_vgpu_reg>;
status = "okay";
};

&mmc0 {
pinctrl-names = "default", "state_uhs";
pinctrl-0 = <&mmc0_pins_default>;
Expand Down Expand Up @@ -289,6 +328,14 @@
};
};

hdmi_pin: htplg {
pins1 {
pinmux = <MT7623_PIN_123_HTPLG_FUNC_HTPLG>;
input-enable;
bias-pull-down;
};
};

i2c0_pins_a: i2c@0 {
pins_i2c0 {
pinmux = <MT7623_PIN_75_SDA0_FUNC_SDA0>,
Expand Down Expand Up @@ -345,6 +392,22 @@
};
};


mipi_dsi_pin: mipi_dsi_pin {
pins_cmd_dat {
pinmux = <MT7623_PIN_100_MIPI_TDP0_FUNC_TDP0>,
<MT7623_PIN_99_MIPI_TDN0_FUNC_TDN0>,
<MT7623_PIN_98_MIPI_TDP1_FUNC_TDP1>,
<MT7623_PIN_97_MIPI_TDN1_FUNC_TDN1>,
<MT7623_PIN_96_MIPI_TCP_FUNC_TCP>,
<MT7623_PIN_95_MIPI_TCN_FUNC_TCN>,
<MT7623_PIN_94_MIPI_TDP2_FUNC_TDP2>,
<MT7623_PIN_93_MIPI_TDN2_FUNC_TDN2>,
<MT7623_PIN_92_MIPI_TDP3_FUNC_TDP3>,
<MT7623_PIN_91_MIPI_TDN3_FUNC_TDN3>;
};
};

mmc0_pins_default: mmc0default {
pins_cmd_dat {
pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_MSDC0_DAT7>,
Expand Down Expand Up @@ -448,6 +511,12 @@
};
};

pwm_bls_gpio: pwm_bls_gpio {
pins_cmd_dat {
pinmux = <MT7623_PIN_203_PWM0_FUNC_DISP_PWM>;
};
};

pcie_default: pcie_pin_default {
pins_cmd_dat {
pinmux = <MT7623_PIN_208_AUD_EXT_CK1_FUNC_PCIE0_PERST_N>,
Expand Down Expand Up @@ -515,17 +584,6 @@
};
};

mipi_dsi_pin: mipi_dsi_pin {
pins_cmd_dat {
pinmux = <MT7623_PIN_100_MIPI_TDP0_FUNC_TDP0>,
<MT7623_PIN_99_MIPI_TDN0_FUNC_TDN0>,
<MT7623_PIN_98_MIPI_TDP1_FUNC_TDP1>,
<MT7623_PIN_97_MIPI_TDN1_FUNC_TDN1>,
<MT7623_PIN_96_MIPI_TCP_FUNC_TCP>,
<MT7623_PIN_95_MIPI_TCN_FUNC_TCN>;
};

};
};

&pwm {
Expand Down Expand Up @@ -857,8 +915,3 @@
status = "okay";
};

&mipi_tx0 {
pinctrl-names = "default";
pinctrl-0 = <&mipi_dsi_pin>;
status = "okay";
};
24 changes: 15 additions & 9 deletions arch/arm/configs/mt7623n_evb_fwu_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,10 @@ CONFIG_KEYBOARD_MATRIX=y
CONFIG_KEYBOARD_SAMSUNG=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_MOUSE_PS2_SENTELIC=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_SERIO_SERPORT is not set
CONFIG_VT_HW_CONSOLE_BINDING=y
Expand All @@ -215,6 +219,7 @@ CONFIG_MEDIATEK_WATCHDOG=y
CONFIG_MFD_MT6397=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_MT6323=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_RC_SUPPORT=y
CONFIG_RC_DEVICES=y
Expand Down Expand Up @@ -386,15 +391,16 @@ CONFIG_THERMAL=m
CONFIG_MTK_THERMAL=m

#HDMI
##CONFIG_HDMI=y
#CONFIG_DRM=m
#CONFIG_DRM_MEDIATEK=m
#CONFIG_DRM_MEDIATEK_HDMI=m

#CONFIG_FB=y
#CONFIG_FB_CMDLINE=y
#CONFIG_FRAMEBUFFER_CONSOLE=y
#CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_DRM=y
CONFIG_DRM_ARM=y
CONFIG_DRM_MALI_DISPLAY=y
CONFIG_DRM_MEDIATEK=y
CONFIG_DRM_MEDIATEK_HDMI=y
CONFIG_COMMON_CLK_MT2701_MMSYS=y
CONFIG_COMMON_CLK_MT2701_IMGSYS=y
CONFIG_COMMON_CLK_MT2701_VDECSYS=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_DRM_FBDEV_EMULATION=y

#Sound
CONFIG_SOUND=y
Expand Down
8 changes: 6 additions & 2 deletions drivers/clk/mediatek/clk-mt2701.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ static const struct mtk_fixed_clk top_fixed_clks[] = {
340 * MHZ),
FIXED_CLK(CLK_TOP_HDMI_0_PLL340M, "hdmi_0_pll340m", "clk26m",
340 * MHZ),
FIXED_CLK(CLK_TOP_HDMITX_CLKDIG_CTS, "hdmitx_dig_cts", "clk26m",
300 * MHZ),
FIXED_CLK(CLK_TOP_HADDS2_FB, "hadds2_fbclk", "clk26m",
27 * MHZ),
FIXED_CLK(CLK_TOP_WBG_DIG_416M, "wbg_dig_ck_416m", "clk26m",
Expand Down Expand Up @@ -977,6 +975,10 @@ static const struct mtk_pll_data apmixed_plls[] = {
21, 0x2d0, 4, 0x0, 0x2d4, 0),
};

static const struct mtk_fixed_factor apmixed_fixed_divs[] = {
FACTOR(CLK_APMIXED_HDMI_REF, "hdmi_ref", "tvdpll", 1, 1),
};

static int mtk_apmixedsys_init(struct platform_device *pdev)
{
struct clk_onecell_data *clk_data;
Expand All @@ -988,6 +990,8 @@ static int mtk_apmixedsys_init(struct platform_device *pdev)

mtk_clk_register_plls(node, apmixed_plls, ARRAY_SIZE(apmixed_plls),
clk_data);
mtk_clk_register_factors(apmixed_fixed_divs, ARRAY_SIZE(apmixed_fixed_divs),
clk_data);

return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
}
Expand Down
10 changes: 3 additions & 7 deletions drivers/clk/mediatek/clk-mtk.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <linux/clk-provider.h>

struct clk;
struct clk_onecell_data;

#define MAX_MUX_GATE_BIT 31
#define INVALID_MUX_GATE_BIT (MAX_MUX_GATE_BIT + 1)
Expand Down Expand Up @@ -207,6 +208,8 @@ struct mtk_pll_data {
uint32_t en_mask;
uint32_t pd_reg;
uint32_t tuner_reg;
uint32_t tuner_en_reg;
uint8_t tuner_en_bit;
int pd_shift;
unsigned int flags;
const struct clk_ops *ops;
Expand All @@ -226,14 +229,7 @@ void mtk_clk_register_plls(struct device_node *node,
struct clk *mtk_clk_register_ref2usb_tx(const char *name,
const char *parent_name, void __iomem *reg);

#ifdef CONFIG_RESET_CONTROLLER
void mtk_register_reset_controller(struct device_node *np,
unsigned int num_regs, int regofs);
#else
static inline void mtk_register_reset_controller(struct device_node *np,
unsigned int num_regs, int regofs)
{
}
#endif

#endif /* __DRV_CLK_MTK_H */
13 changes: 11 additions & 2 deletions drivers/clk/mediatek/clk-pll.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct mtk_clk_pll {
void __iomem *pd_addr;
void __iomem *pwr_addr;
void __iomem *tuner_addr;
void __iomem *tuner_en_addr;
void __iomem *pcw_addr;
const struct mtk_pll_data *data;
};
Expand Down Expand Up @@ -227,7 +228,10 @@ static int mtk_pll_prepare(struct clk_hw *hw)
r |= pll->data->en_mask;
writel(r, pll->base_addr + REG_CON0);

if (pll->tuner_addr) {
if (pll->tuner_en_addr) {
r = readl(pll->tuner_en_addr) | BIT(pll->data->tuner_en_bit);
writel(r, pll->tuner_en_addr);
} else if (pll->tuner_addr) {
r = readl(pll->tuner_addr) | AUDPLL_TUNER_EN;
writel(r, pll->tuner_addr);
}
Expand All @@ -254,7 +258,10 @@ static void mtk_pll_unprepare(struct clk_hw *hw)
writel(r, pll->base_addr + REG_CON0);
}

if (pll->tuner_addr) {
if (pll->tuner_en_addr) {
r = readl(pll->tuner_en_addr) & ~BIT(pll->data->tuner_en_bit);
writel(r, pll->tuner_en_addr);
} else if (pll->tuner_addr) {
r = readl(pll->tuner_addr) & ~AUDPLL_TUNER_EN;
writel(r, pll->tuner_addr);
}
Expand Down Expand Up @@ -297,6 +304,8 @@ static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data,
pll->pcw_addr = base + data->pcw_reg;
if (data->tuner_reg)
pll->tuner_addr = base + data->tuner_reg;
if (data->tuner_en_reg)
pll->tuner_en_addr = base + data->tuner_en_reg;
pll->hw.init = &init;
pll->data = data;

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/drm_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ static int create_compat_control_link(struct drm_device *dev)
* Old controlD chardev have been allocated in the range
* 64-127.
*/
name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
name = kasprintf(GFP_KERNEL, "controlD%d", minor->index);
if (!name)
return -ENOMEM;

Expand Down
8 changes: 6 additions & 2 deletions drivers/gpu/drm/mediatek/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@ mediatek-drm-y := mtk_disp_color.o \
mtk_drm_plane.o \
mtk_dsi.o \
mtk_mipi_tx.o \
mtk_dpi.o
mtk_dpi.o \

mediatek-drm-$(CONFIG_DRM_FBDEV_EMULATION) += mtk_drm_fbdev.o

obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o

mediatek-drm-hdmi-objs := mtk_cec.o \
mtk_hdmi.o \
mtk_hdmi_ddc.o \
mtk_mt8173_hdmi_phy.o
mtk_mt2701_hdmi_phy.o \
mtk_mt8173_hdmi_phy.o \
mtk_hdmi_phy.o

obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o
Loading