From: Inki Dae <inki.dae@samsung.com>
To: Hyungwon Hwang <human.hwang@samsung.com>
Cc: devicetree@vger.kernel.org, sw0312.kim@samsung.com,
dh09.lee@samsung.com, cw00.choi@samsung.com,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v4 6/8] drm/exynos: dsi: add support for Exynos5433
Date: Tue, 07 Apr 2015 22:11:56 +0900 [thread overview]
Message-ID: <5523D79C.2040504@samsung.com> (raw)
In-Reply-To: <1428407858-25523-7-git-send-email-human.hwang@samsung.com>
On 2015년 04월 07일 20:57, Hyungwon Hwang wrote:
> This patch adds support for Exynos5433 mipi dsi.
With this and other dsi relevant patches, display doesn't work - the
screen is flickered and booting is halted. I think there is something
you missed. Check it out again.
Thanks,
Inki Dae
>
> Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com>
> ---
> Changes for v2:
> - change the author of "drm/exynos: dsi: add support for Exynos5433 SoC" to
> Hyungwon Hwang by the previous author's will
>
> Changes for v3:
> - Separated from the patch "drm/exynos: dsi: add support for Exynos5433 SoC"
> in version 2.
> - use defines for more readable code
> - fix typos
>
> Changes for v4:
> - None
> .../devicetree/bindings/video/exynos_dsim.txt | 1 +
> drivers/gpu/drm/exynos/Kconfig | 2 +-
> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 69 +++++++++++++++++++++-
> 3 files changed, 68 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt
> index 39940ca..8b12bfe 100644
> --- a/Documentation/devicetree/bindings/video/exynos_dsim.txt
> +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt
> @@ -6,6 +6,7 @@ Required properties:
> "samsung,exynos4210-mipi-dsi" /* for Exynos4 SoCs */
> "samsung,exynos4415-mipi-dsi" /* for Exynos4415 SoC */
> "samsung,exynos5410-mipi-dsi" /* for Exynos5410/5420/5440 SoCs */
> + "samsung,exynos5433-mipi-dsi" /* for Exynos5433 SoCs */
> - reg: physical base address and length of the registers set for the device
> - interrupts: should contain DSI interrupt
> - clocks: list of clock specifiers, must contain an entry for each required
> diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig
> index 3f649ab..4e4182b 100644
> --- a/drivers/gpu/drm/exynos/Kconfig
> +++ b/drivers/gpu/drm/exynos/Kconfig
> @@ -47,7 +47,7 @@ config DRM_EXYNOS_DPI
>
> config DRM_EXYNOS_DSI
> bool "EXYNOS DRM MIPI-DSI driver support"
> - depends on (DRM_EXYNOS_FIMD || DRM_EXYNOS7_DECON)
> + depends on (DRM_EXYNOS_FIMD || DRM_EXYNOS5433_DECON || DRM_EXYNOS7_DECON)
> select DRM_MIPI_DSI
> select DRM_PANEL
> default n
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> index 2d9a249..d1ecd0f 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> @@ -131,6 +131,7 @@
> #define DSIM_INT_PLL_STABLE (1 << 31)
> #define DSIM_INT_SW_RST_RELEASE (1 << 30)
> #define DSIM_INT_SFR_FIFO_EMPTY (1 << 29)
> +#define DSIM_INT_SFR_HDR_FIFO_EMPTY (1 << 28)
> #define DSIM_INT_BTA (1 << 25)
> #define DSIM_INT_FRAME_DONE (1 << 24)
> #define DSIM_INT_RX_TIMEOUT (1 << 21)
> @@ -179,6 +180,8 @@
>
> /* DSIM_PHYCTRL */
> #define DSIM_PHYCTRL_ULPS_EXIT(x) (((x) & 0x1ff) << 0)
> +#define DSIM_PHYCTRL_B_DPHYCTL_VREG_LP (1 << 30)
> +#define DSIM_PHYCTRL_B_DPHYCTL_SLEW_UP (1 << 14)
>
> /* DSIM_PHYTIMING */
> #define DSIM_PHYTIMING_LPX(x) ((x) << 8)
> @@ -206,7 +209,9 @@
> #define DSI_WRITE(dsi, reg, val) writel((val), REG((dsi), (reg)))
> #define DSI_READ(dsi, reg) readl(REG((dsi), (reg)))
>
> -static char *clk_names[2] = { "bus_clk", "sclk_mipi" };
> +static char *clk_names[5] = { "bus_clk", "sclk_mipi",
> + "phyclk_mipidphy0_bitclkdiv8", "phyclk_mipidphy0_rxclkesc0",
> + "sclk_rgb_vclk_to_dsim0" };
>
> enum exynos_dsi_transfer_type {
> EXYNOS_DSI_TX,
> @@ -335,6 +340,30 @@ static unsigned int regs[] = {
> [DSIM_PHYTIMING2_REG] = 0x6c,
> };
>
> +static unsigned int exynos5433_regs[] = {
> + [DSIM_STATUS_REG] = 0x04,
> + [DSIM_SWRST_REG] = 0x0C,
> + [DSIM_CLKCTRL_REG] = 0x10,
> + [DSIM_TIMEOUT_REG] = 0x14,
> + [DSIM_CONFIG_REG] = 0x18,
> + [DSIM_ESCMODE_REG] = 0x1C,
> + [DSIM_MDRESOL_REG] = 0x20,
> + [DSIM_MVPORCH_REG] = 0x24,
> + [DSIM_MHPORCH_REG] = 0x28,
> + [DSIM_MSYNC_REG] = 0x2C,
> + [DSIM_INTSRC_REG] = 0x34,
> + [DSIM_INTMSK_REG] = 0x38,
> + [DSIM_PKTHDR_REG] = 0x3C,
> + [DSIM_PAYLOAD_REG] = 0x40,
> + [DSIM_RXFIFO_REG] = 0x44,
> + [DSIM_FIFOCTRL_REG] = 0x4C,
> + [DSIM_PLLCTRL_REG] = 0x94,
> + [DSIM_PHYCTRL_REG] = 0xA4,
> + [DSIM_PHYTIMING_REG] = 0xB4,
> + [DSIM_PHYTIMING1_REG] = 0xB8,
> + [DSIM_PHYTIMING2_REG] = 0xBC,
> +};
> +
> enum values {
> RESET_TYPE,
> PLL_TIMER,
> @@ -371,6 +400,24 @@ static unsigned int values[] = {
> [PHYTIMING_HS_TRAIL] = DSIM_PHYTIMING2_HS_TRAIL(0x0b),
> };
>
> +static unsigned int exynos5433_values[] = {
> + [RESET_TYPE] = DSIM_FUNCRST,
> + [PLL_TIMER] = 22200,
> + [STOP_STATE_CNT] = 0xa,
> + [PHYCTRL_ULPS_EXIT] = DSIM_PHYCTRL_ULPS_EXIT(0x190),
> + [PHYCTRL_VREG_LP] = DSIM_PHYCTRL_B_DPHYCTL_VREG_LP,
> + [PHYCTRL_SLEW_UP] = DSIM_PHYCTRL_B_DPHYCTL_SLEW_UP,
> + [PHYTIMING_LPX] = DSIM_PHYTIMING_LPX(0x07),
> + [PHYTIMING_HS_EXIT] = DSIM_PHYTIMING_HS_EXIT(0x0c),
> + [PHYTIMING_CLK_PREPARE] = DSIM_PHYTIMING1_CLK_PREPARE(0x09),
> + [PHYTIMING_CLK_ZERO] = DSIM_PHYTIMING1_CLK_ZERO(0x2d),
> + [PHYTIMING_CLK_POST] = DSIM_PHYTIMING1_CLK_POST(0x0e),
> + [PHYTIMING_CLK_TRAIL] = DSIM_PHYTIMING1_CLK_TRAIL(0x09),
> + [PHYTIMING_HS_PREPARE] = DSIM_PHYTIMING2_HS_PREPARE(0x0b),
> + [PHYTIMING_HS_ZERO] = DSIM_PHYTIMING2_HS_ZERO(0x10),
> + [PHYTIMING_HS_TRAIL] = DSIM_PHYTIMING2_HS_TRAIL(0x0c),
> +};
> +
> static struct exynos_dsi_driver_data exynos3_dsi_driver_data = {
> .regs = regs,
> .plltmr_reg = 0x50,
> @@ -416,6 +463,17 @@ static struct exynos_dsi_driver_data exynos5_dsi_driver_data = {
> .values = values,
> };
>
> +static struct exynos_dsi_driver_data exynos5433_dsi_driver_data = {
> + .regs = exynos5433_regs,
> + .plltmr_reg = 0xa0,
> + .has_clklane_stop = 1,
> + .num_clks = 5,
> + .max_freq = 1500,
> + .wait_for_reset = 0,
> + .num_bits_resol = 12,
> + .values = exynos5433_values,
> +};
> +
> static struct of_device_id exynos_dsi_of_match[] = {
> { .compatible = "samsung,exynos3250-mipi-dsi",
> .data = &exynos3_dsi_driver_data },
> @@ -425,6 +483,8 @@ static struct of_device_id exynos_dsi_of_match[] = {
> .data = &exynos4415_dsi_driver_data },
> { .compatible = "samsung,exynos5410-mipi-dsi",
> .data = &exynos5_dsi_driver_data },
> + { .compatible = "samsung,exynos5433-mipi-dsi",
> + .data = &exynos5433_dsi_driver_data },
> { }
> };
>
> @@ -1182,13 +1242,16 @@ static irqreturn_t exynos_dsi_irq(int irq, void *dev_id)
> DSI_WRITE(dsi, DSIM_INTSRC_REG, status);
>
> if (status & DSIM_INT_SW_RST_RELEASE) {
> - u32 mask = ~(DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY);
> + u32 mask = ~(DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY |
> + DSIM_INT_SFR_HDR_FIFO_EMPTY | DSIM_INT_FRAME_DONE |
> + DSIM_INT_RX_ECC_ERR | DSIM_INT_SW_RST_RELEASE);
> DSI_WRITE(dsi, DSIM_INTMSK_REG, mask);
> complete(&dsi->completed);
> return IRQ_HANDLED;
> }
>
> - if (!(status & (DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY)))
> + if (!(status & (DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY |
> + DSIM_INT_FRAME_DONE | DSIM_INT_PLL_STABLE)))
> return IRQ_HANDLED;
>
> if (exynos_dsi_transfer_finish(dsi))
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-04-07 13:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-07 11:57 [PATCH v4 0/8] Add drivers for Exynos5433 display Hyungwon Hwang
2015-04-07 11:57 ` [PATCH v4 1/8] drm/exynos: add Exynos5433 decon driver Hyungwon Hwang
2015-04-07 11:57 ` [PATCH v4 2/8] of: add helper for getting endpoint node of specific identifiers Hyungwon Hwang
[not found] ` <1428407858-25523-1-git-send-email-human.hwang-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2015-04-07 11:57 ` [PATCH v4 3/8] drm/exynos: mic: add MIC driver Hyungwon Hwang
2015-04-07 11:57 ` [PATCH v4 4/8] drm/exynos: dsi: rename pll_clk to sclk_clk Hyungwon Hwang
2015-04-07 13:03 ` Inki Dae
2015-04-07 11:57 ` [PATCH v4 5/8] drm/exynos: dsi: generalize register setting and clock control Hyungwon Hwang
2015-04-07 13:08 ` Inki Dae
2015-04-07 11:57 ` [PATCH v4 6/8] drm/exynos: dsi: add support for Exynos5433 Hyungwon Hwang
2015-04-07 13:11 ` Inki Dae [this message]
2015-04-07 11:57 ` [PATCH v4 7/8] drm/exynos: dsi: add support for MIC driver as a bridge Hyungwon Hwang
2015-04-07 11:57 ` [PATCH v4 8/8] drm/exynos: dsi: do not set TE GPIO direction by input Hyungwon Hwang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5523D79C.2040504@samsung.com \
--to=inki.dae@samsung.com \
--cc=cw00.choi@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=dh09.lee@samsung.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=human.hwang@samsung.com \
--cc=sw0312.kim@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox