forked from Minki/linux
c67d9ce166
The bulk of this branch is updates for Renesas Shmobile. They are still doing some enablement for classic boards first, and then come up with DT bindings when they've had a chance to learn more about the hardware. Not necessarily a bad way to go about it, and they're looking at moving some of the temporary board code resulting from it to drivers/staging instead to avoid the churn here. As a result of the shmobile clock cleanups, we end up merging quite a bit of SH code here as well. We ended up merging it here instead of in the cleanup branch due to the other board changes depending on it. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQIcBAABAgAGBQJTjNClAAoJEIwa5zzehBx3Q7wP+wYzWTAU0+3BnnjJpQM79hsX 1hP89RaM6DEyTf6PiL/AKOHsnDponUhNzZu1W5FvNG6cFVenh/nxbmO65FKX9CrY Ap2pkQW+/IcpmIKZ+Hln2bkCc54a6yPouK+5pd9W14X5TtqNmLbdh1qhoq9UjFTo zgLfhch5tyNqfpNOj0vFsmvTw0ZGJ0Neq6olRqQbXmyAaRaWzDa64lmEKVupMdk7 2Fh/8jeXlVlryi7p7CvNoAmZEMm7+We5ZMVsQXLk8b9zcwuCWK0DZzNW4DnRCB1d lsNM/Sygi3Y5zRj2XogNANVhNDIih0f50FX7uuKtmevWNJE9n4To7uFUMTk/3zBt 1hvJLL8w4WHhzkg5v5nFsiCTx65pFaTD/LocPj8lhQ1AYzUvWN5sKPxW0uC1lvJ9 Unlwdc0C4EWs3yq6hAPUZS2eB7owmzNUWdjdkgKfdc74u5RnRay0pUmbRMJm2l20 OKoDSwaluQZUeHrxPnTSLdgpkBbPRn9M5DbswEQsuPyI6yROgCRxaRQ4XcpM93dV 4obCF+fOvX6dtsdIUBCtdhvmJ/iHqhQlPLc2avpt2gyti7eWjQkt5it12hjjOF6A DVBdNHv215EEgvB0MbPJvFVKBLw4boxdeBx+FqMQCqvAbqefHo4gcQZcsUGAv/pX zJ8jgkYhlt7XTd+6GlJu =lWof -----END PGP SIGNATURE----- Merge tag 'boards-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc into next Pull ARM SoC board support updates from Olof Johansson: "The bulk of this branch is updates for Renesas Shmobile. They are still doing some enablement for classic boards first, and then come up with DT bindings when they've had a chance to learn more about the hardware. Not necessarily a bad way to go about it, and they're looking at moving some of the temporary board code resulting from it to drivers/staging instead to avoid the churn here. As a result of the shmobile clock cleanups, we end up merging quite a bit of SH code here as well. We ended up merging it here instead of in the cleanup branch due to the other board changes depending on it" * tag 'boards-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (130 commits) ARM: davinci: remove checks for CONFIG_USB_MUSB_PERIPHERAL ARM: add drivers for Colibri T30 to multi_v7_defconfig ARM: shmobile: Remove Genmai reference DTS ARM: shmobile: Let Genmai multiplatform boot with Genmai DTB ARM: shmobile: Sync Genmai DTS with Genmai reference DTS ARM: shmobile: genmai-reference: Remove legacy clock support ARM: shmobile: Remove non-multiplatform Genmai reference support ARM: configs: enable XHCI mvebu support in multi_v7_defconfig ARM: OMAP: replace checks for CONFIG_USB_GADGET_OMAP ARM: OMAP: AM3517EVM: remove check for CONFIG_PANEL_SHARP_LQ043T1DG01 ARM: OMAP: SX1: remove check for CONFIG_SX1_OLD_FLASH ARM: OMAP: remove some dead code ARM: OMAP: omap3stalker: remove two Kconfig macros ARM: tegra: tegra_defconfig updates ARM: shmobile: r7s72100: use workaround for non DT-clocks ARM: shmobile: Add forward declaration of struct clk to silence warning ARM: shmobile: r7s72100: remove SPI DT clocks from legacy clock support ARM: shmobile: r7s72100: add spi clocks to dtsi ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock support ARM: shmobile: r7s72100: add i2c clocks to dtsi ...
133 lines
3.7 KiB
C
133 lines
3.7 KiB
C
/*
|
|
* Koelsch board support - Reference DT implementation
|
|
*
|
|
* Copyright (C) 2013 Renesas Electronics Corporation
|
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
|
* Copyright (C) 2013 Magnus Damm
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#include <linux/dma-mapping.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/of_platform.h>
|
|
#include <linux/platform_data/rcar-du.h>
|
|
#include <mach/clock.h>
|
|
#include <mach/common.h>
|
|
#include <mach/irqs.h>
|
|
#include <mach/rcar-gen2.h>
|
|
#include <mach/r8a7791.h>
|
|
#include <asm/mach/arch.h>
|
|
|
|
/* DU */
|
|
static struct rcar_du_encoder_data koelsch_du_encoders[] = {
|
|
{
|
|
.type = RCAR_DU_ENCODER_NONE,
|
|
.output = RCAR_DU_OUTPUT_LVDS0,
|
|
.connector.lvds.panel = {
|
|
.width_mm = 210,
|
|
.height_mm = 158,
|
|
.mode = {
|
|
.clock = 65000,
|
|
.hdisplay = 1024,
|
|
.hsync_start = 1048,
|
|
.hsync_end = 1184,
|
|
.htotal = 1344,
|
|
.vdisplay = 768,
|
|
.vsync_start = 771,
|
|
.vsync_end = 777,
|
|
.vtotal = 806,
|
|
.flags = 0,
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct rcar_du_platform_data koelsch_du_pdata = {
|
|
.encoders = koelsch_du_encoders,
|
|
.num_encoders = ARRAY_SIZE(koelsch_du_encoders),
|
|
};
|
|
|
|
static const struct resource du_resources[] __initconst = {
|
|
DEFINE_RES_MEM(0xfeb00000, 0x40000),
|
|
DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
|
|
DEFINE_RES_IRQ(gic_spi(256)),
|
|
DEFINE_RES_IRQ(gic_spi(268)),
|
|
};
|
|
|
|
static void __init koelsch_add_du_device(void)
|
|
{
|
|
struct platform_device_info info = {
|
|
.name = "rcar-du-r8a7791",
|
|
.id = -1,
|
|
.res = du_resources,
|
|
.num_res = ARRAY_SIZE(du_resources),
|
|
.data = &koelsch_du_pdata,
|
|
.size_data = sizeof(koelsch_du_pdata),
|
|
.dma_mask = DMA_BIT_MASK(32),
|
|
};
|
|
|
|
platform_device_register_full(&info);
|
|
}
|
|
|
|
/*
|
|
* This is a really crude hack to provide clkdev support to platform
|
|
* devices until they get moved to DT.
|
|
*/
|
|
static const struct clk_name clk_names[] __initconst = {
|
|
{ "cmt0", "fck", "sh-cmt-48-gen2.0" },
|
|
{ "du0", "du.0", "rcar-du-r8a7791" },
|
|
{ "du1", "du.1", "rcar-du-r8a7791" },
|
|
{ "lvds0", "lvds.0", "rcar-du-r8a7791" },
|
|
};
|
|
|
|
/*
|
|
* This is a really crude hack to work around core platform clock issues
|
|
*/
|
|
static const struct clk_name clk_enables[] __initconst = {
|
|
{ "ether", NULL, "ee700000.ethernet" },
|
|
{ "i2c2", NULL, "e6530000.i2c" },
|
|
{ "msiof0", NULL, "e6e20000.spi" },
|
|
{ "qspi_mod", NULL, "e6b10000.spi" },
|
|
{ "sdhi0", NULL, "ee100000.sd" },
|
|
{ "sdhi1", NULL, "ee140000.sd" },
|
|
{ "sdhi2", NULL, "ee160000.sd" },
|
|
{ "thermal", NULL, "e61f0000.thermal" },
|
|
};
|
|
|
|
static void __init koelsch_add_standard_devices(void)
|
|
{
|
|
shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false);
|
|
shmobile_clk_workaround(clk_enables, ARRAY_SIZE(clk_enables), true);
|
|
r8a7791_add_dt_devices();
|
|
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
|
|
|
koelsch_add_du_device();
|
|
}
|
|
|
|
static const char * const koelsch_boards_compat_dt[] __initconst = {
|
|
"renesas,koelsch",
|
|
"renesas,koelsch-reference",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(KOELSCH_DT, "koelsch")
|
|
.smp = smp_ops(r8a7791_smp_ops),
|
|
.init_early = shmobile_init_delay,
|
|
.init_time = rcar_gen2_timer_init,
|
|
.init_machine = koelsch_add_standard_devices,
|
|
.init_late = shmobile_init_late,
|
|
.dt_compat = koelsch_boards_compat_dt,
|
|
MACHINE_END
|