From 81e69dc8da4951220404350163b7ae21e647a006 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Wed, 9 Oct 2013 11:31:11 +0200 Subject: [PATCH] i.MX53 tablet: complete IOMUX routes for display For the framebuffer driver of the i.MX53 platform to work even when u-boot didn't prepared the display previously, there were some IOMUX routes missing. Fixes #914 --- .../imx53/platform_session/platform_session.h | 1 + os/src/drivers/framebuffer/imx53/driver.h | 1 + os/src/drivers/platform/imx53/iomux.h | 11 ++++++++++- os/src/drivers/platform/imx53/main.cc | 3 +++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/os/include/platform/imx53/platform_session/platform_session.h b/os/include/platform/imx53/platform_session/platform_session.h index 5e09cd1096..6201be9bb4 100644 --- a/os/include/platform/imx53/platform_session/platform_session.h +++ b/os/include/platform/imx53/platform_session/platform_session.h @@ -26,6 +26,7 @@ namespace Platform { I2C_2, I2C_3, BUTTONS, + PWM, }; enum Board_revision { diff --git a/os/src/drivers/framebuffer/imx53/driver.h b/os/src/drivers/framebuffer/imx53/driver.h index cb7dfe74e3..d287c07ec5 100644 --- a/os/src/drivers/framebuffer/imx53/driver.h +++ b/os/src/drivers/framebuffer/imx53/driver.h @@ -83,6 +83,7 @@ class Framebuffer::Driver case Platform::Session::SMD: _ipu.init(_width, _height, _width * BYTES_PER_PIXEL, phys_base, false); + _platform.enable(Platform::Session::PWM); _pwm.enable_display(); break; default: diff --git a/os/src/drivers/platform/imx53/iomux.h b/os/src/drivers/platform/imx53/iomux.h index eaf9999ffc..886fe7c392 100644 --- a/os/src/drivers/platform/imx53/iomux.h +++ b/os/src/drivers/platform/imx53/iomux.h @@ -61,7 +61,8 @@ class Iomux : public Genode::Attached_io_mem_dataspace, Iomux() : Genode::Attached_io_mem_dataspace(Genode::Board_base::IOMUXC_BASE, Genode::Board_base::IOMUXC_SIZE), - Genode::Mmio((Genode::addr_t)local_addr()) { } + Genode::Mmio((Genode::addr_t)local_addr()) { + } void i2c_2_enable() { @@ -91,6 +92,14 @@ class Iomux : public Genode::Attached_io_mem_dataspace, write(Gpr2::Ch1_mode::ROUTED_TO_DI1); } + void pwm_enable() + { + write(1); + write(0); + write >(0x4); + write >(0x0); + } + void buttons_enable() { write(1); diff --git a/os/src/drivers/platform/imx53/main.cc b/os/src/drivers/platform/imx53/main.cc index 43406c14fb..c520b0da48 100644 --- a/os/src/drivers/platform/imx53/main.cc +++ b/os/src/drivers/platform/imx53/main.cc @@ -71,6 +71,9 @@ class Platform::Session_component : public Genode::Rpc_object case Session::BUTTONS: _iomux.buttons_enable(); break; + case Session::PWM: + _iomux.pwm_enable(); + break; default: PWRN("Invalid device"); };