mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
Renesas ARM Based SoC DT DU Updates for v3.19
* Enable DU using DT on marzen/r8a7779, lager/r8a7790 and koelsch/r8a7791 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUWBRRAAoJENfPZGlqN0++Pm0P/3Qa+X8o4kAZETi+ER+Q7s/B d0EGNAw/1b/Si7D2SpftRHvHx5TDL2QiU0QIAPWAcd4u1NJxaYP/SDwRETGQnHbV TsL25mASYNByP6DXTrBJneiDS5U88DwVP5q5FW9WEkvIbmtzbxTe/7OnSPAjhxl0 83kXATiHwdRct4KYLW8ngNhaY/9OUjrL+wZ8ffN/dM0EpSyixXK5bHmWLFC5/HGY D8b+zW/NTSBOYTk1OR6QSlp/eGmjRCG2UJn4toHWKse2defxZ/hyTUas4ysgDXzC gsWT96yLwmueTRcSBglkKGFbPukWcyKPt7sRphtZlTYbJmpS0ncBTfC2s0+Jv2RR VDpeAmB6NXQ5L7Ck51ryt4A8kX88uOgHrmcz+NGJadNE07TZgLJBLDf6aSjDsytr NIZq7RFNK975Qv3QldQJX4PYmqcWJMI5WDPnm2buzZsKHkjQrpKIicAiSlwzJX/9 4SeCF2yrZuJJVnJwit8gOvvBHq5ORQrumAs1xrPQiu570p+6jBjjJ5v4sDvuF5UY nXfMTUGrNYe8JSxjf8NTmXJX8DRKSLq0tGcHbzajvKVzuy8Gp6+yFNkrqzQj2HK6 dy4TLtuvMk5JB4E5Q22xdYYV4TorO28qiuGoGDOOwIx6+940MdY/ucE2Z4i4M2R7 /NZJCpITds6HxVZJWAKo =m0Ov -----END PGP SIGNATURE----- Merge tag 'renesas-dt-du-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/cleanup Pull "Renesas ARM Based SoC DT DU Updates for v3.19" from Simon Horman: * Enable DU using DT on marzen/r8a7779, lager/r8a7790 and koelsch/r8a7791 * tag 'renesas-dt-du-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: ARM: shmobile: koelsch: Enable DU device in DT ARM: shmobile: koelsch-reference: Remove DU platform device ARM: shmobile: lager: Enable DU device in DT ARM: shmobile: lager-reference: Remove DU platform device ARM: shmobile: marzen: Enable DU device in DT ARM: shmobile: dts: Add common file for AA104XD12 panel ARM: shmobile: r8a7791: Add DU node to device tree ARM: shmobile: r8a7790: Add DU node to device tree ARM: shmobile: r8a7779: Add DU node to device tree Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
8ecb3ccb74
@ -68,6 +68,78 @@
|
||||
gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
vga-encoder {
|
||||
compatible = "adi,adv7123";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
vga_enc_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb0>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
vga_enc_out: endpoint {
|
||||
remote-endpoint = <&vga_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vga {
|
||||
compatible = "vga-connector";
|
||||
|
||||
port {
|
||||
vga_in: endpoint {
|
||||
remote-endpoint = <&vga_enc_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lvds-encoder {
|
||||
compatible = "thine,thc63lvdm83d";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
lvds_enc_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb1>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@0 {
|
||||
endpoint {
|
||||
remote-endpoint = <&vga_enc_in>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
endpoint {
|
||||
remote-endpoint = <&lvds_enc_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&irqpin0 {
|
||||
@ -83,6 +155,17 @@
|
||||
};
|
||||
|
||||
&pfc {
|
||||
du_pins: du {
|
||||
du0 {
|
||||
renesas,groups = "du0_rgb888", "du0_sync_1", "du0_clk_out_0";
|
||||
renesas,function = "du0";
|
||||
};
|
||||
du1 {
|
||||
renesas,groups = "du1_rgb666", "du1_sync_1", "du1_clk_out";
|
||||
renesas,function = "du1";
|
||||
};
|
||||
};
|
||||
|
||||
lan0_pins: lan0 {
|
||||
intc {
|
||||
renesas,groups = "intc_irq1_b";
|
||||
|
@ -379,6 +379,30 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
du: display@fff80000 {
|
||||
compatible = "renesas,du-r8a7779";
|
||||
reg = <0 0xfff80000 0 0x40000>;
|
||||
interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7779_CLK_DU>;
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb0: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_rgb1: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
@ -144,6 +144,56 @@
|
||||
states = <3300000 1
|
||||
1800000 0>;
|
||||
};
|
||||
|
||||
vga-encoder {
|
||||
compatible = "adi,adv7123";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
adv7123_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
adv7123_out: endpoint {
|
||||
remote-endpoint = <&vga_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vga {
|
||||
compatible = "vga-connector";
|
||||
|
||||
port {
|
||||
vga_in: endpoint {
|
||||
remote-endpoint = <&adv7123_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@0 {
|
||||
endpoint {
|
||||
remote-endpoint = <&adv7123_in>;
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
@ -151,9 +201,6 @@
|
||||
};
|
||||
|
||||
&pfc {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
du_pins: du {
|
||||
renesas,groups = "du_rgb666", "du_sync_1", "du_clk_out_0";
|
||||
renesas,function = "du";
|
||||
|
@ -600,6 +600,96 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
vsp1@fe920000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe920000 0 0x8000>;
|
||||
interrupts = <0 266 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_R>;
|
||||
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe928000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe928000 0 0x8000>;
|
||||
interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>;
|
||||
|
||||
renesas,has-lut;
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <3>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe930000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe930000 0 0x8000>;
|
||||
interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU0>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe938000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe938000 0 0x8000>;
|
||||
interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU1>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
du: display@feb00000 {
|
||||
compatible = "renesas,du-r8a7790";
|
||||
reg = <0 0xfeb00000 0 0x70000>,
|
||||
<0 0xfeb90000 0 0x1c>,
|
||||
<0 0xfeb94000 0 0x1c>;
|
||||
reg-names = "du", "lvds.0", "lvds.1";
|
||||
interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 268 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 269 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp7_clks R8A7790_CLK_DU0>,
|
||||
<&mstp7_clks R8A7790_CLK_DU1>,
|
||||
<&mstp7_clks R8A7790_CLK_DU2>,
|
||||
<&mstp7_clks R8A7790_CLK_LVDS0>,
|
||||
<&mstp7_clks R8A7790_CLK_LVDS1>;
|
||||
clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1";
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_lvds0: endpoint {
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
du_out_lvds1: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
@ -211,14 +211,24 @@
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@1 {
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
clock-frequency = <20000000>;
|
||||
};
|
||||
|
||||
&pfc {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
i2c2_pins: i2c2 {
|
||||
renesas,groups = "i2c2";
|
||||
renesas,function = "i2c2";
|
||||
|
@ -637,6 +637,75 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
vsp1@fe928000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe928000 0 0x8000>;
|
||||
interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_S>;
|
||||
|
||||
renesas,has-lut;
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <3>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe930000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe930000 0 0x8000>;
|
||||
interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU0>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe938000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe938000 0 0x8000>;
|
||||
interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU1>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
du: display@feb00000 {
|
||||
compatible = "renesas,du-r8a7791";
|
||||
reg = <0 0xfeb00000 0 0x40000>,
|
||||
<0 0xfeb90000 0 0x1c>;
|
||||
reg-names = "du", "lvds.0";
|
||||
interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 268 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp7_clks R8A7791_CLK_DU0>,
|
||||
<&mstp7_clks R8A7791_CLK_DU1>,
|
||||
<&mstp7_clks R8A7791_CLK_LVDS0>;
|
||||
clock-names = "du.0", "du.1", "lvds.0";
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_lvds0: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
41
arch/arm/boot/dts/r8a77xx-aa104xd12-panel.dtsi
Normal file
41
arch/arm/boot/dts/r8a77xx-aa104xd12-panel.dtsi
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Common file for the AA104XD12 panel connected to Renesas R-Car boards
|
||||
*
|
||||
* Copyright (C) 2014 Renesas Electronics Corp.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/ {
|
||||
panel {
|
||||
compatible = "mitsubishi,aa104xd12", "panel-dpi";
|
||||
|
||||
width-mm = <210>;
|
||||
height-mm = <158>;
|
||||
|
||||
panel-timing {
|
||||
/* 1024x768 @65Hz */
|
||||
clock-frequency = <65000000>;
|
||||
hactive = <1024>;
|
||||
vactive = <768>;
|
||||
hsync-len = <136>;
|
||||
hfront-porch = <20>;
|
||||
hback-porch = <160>;
|
||||
vfront-porch = <3>;
|
||||
vback-porch = <29>;
|
||||
vsync-len = <6>;
|
||||
};
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&lvds_connector>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lvds_connector {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
@ -15,87 +15,15 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7791.h"
|
||||
#include "rcar-gen2.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 = {
|
||||
.pixelclock = 65000000,
|
||||
.hactive = 1024,
|
||||
.hfront_porch = 20,
|
||||
.hback_porch = 160,
|
||||
.hsync_len = 136,
|
||||
.vactive = 768,
|
||||
.vfront_porch = 3,
|
||||
.vback_porch = 29,
|
||||
.vsync_len = 6,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
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 = {
|
||||
{ "du0", "du.0", "rcar-du-r8a7791" },
|
||||
{ "du1", "du.1", "rcar-du-r8a7791" },
|
||||
{ "lvds0", "lvds.0", "rcar-du-r8a7791" },
|
||||
};
|
||||
|
||||
static void __init koelsch_add_standard_devices(void)
|
||||
{
|
||||
shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false);
|
||||
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",
|
||||
@ -106,7 +34,6 @@ 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,
|
||||
.reserve = rcar_gen2_reserve,
|
||||
.dt_compat = koelsch_boards_compat_dt,
|
||||
|
@ -14,94 +14,15 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7790.h"
|
||||
#include "rcar-gen2.h"
|
||||
|
||||
/* DU */
|
||||
static struct rcar_du_encoder_data lager_du_encoders[] = {
|
||||
{
|
||||
.type = RCAR_DU_ENCODER_VGA,
|
||||
.output = RCAR_DU_OUTPUT_DPAD0,
|
||||
}, {
|
||||
.type = RCAR_DU_ENCODER_NONE,
|
||||
.output = RCAR_DU_OUTPUT_LVDS1,
|
||||
.connector.lvds.panel = {
|
||||
.width_mm = 210,
|
||||
.height_mm = 158,
|
||||
.mode = {
|
||||
.pixelclock = 65000000,
|
||||
.hactive = 1024,
|
||||
.hfront_porch = 20,
|
||||
.hback_porch = 160,
|
||||
.hsync_len = 136,
|
||||
.vactive = 768,
|
||||
.vfront_porch = 3,
|
||||
.vback_porch = 29,
|
||||
.vsync_len = 6,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct rcar_du_platform_data lager_du_pdata = {
|
||||
.encoders = lager_du_encoders,
|
||||
.num_encoders = ARRAY_SIZE(lager_du_encoders),
|
||||
};
|
||||
|
||||
static const struct resource du_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xfeb00000, 0x70000),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb94000, 0x1c, "lvds.1"),
|
||||
DEFINE_RES_IRQ(gic_spi(256)),
|
||||
DEFINE_RES_IRQ(gic_spi(268)),
|
||||
DEFINE_RES_IRQ(gic_spi(269)),
|
||||
};
|
||||
|
||||
static void __init lager_add_du_device(void)
|
||||
{
|
||||
struct platform_device_info info = {
|
||||
.name = "rcar-du-r8a7790",
|
||||
.id = -1,
|
||||
.res = du_resources,
|
||||
.num_res = ARRAY_SIZE(du_resources),
|
||||
.data = &lager_du_pdata,
|
||||
.size_data = sizeof(lager_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 = {
|
||||
{ "du0", "du.0", "rcar-du-r8a7790" },
|
||||
{ "du1", "du.1", "rcar-du-r8a7790" },
|
||||
{ "du2", "du.2", "rcar-du-r8a7790" },
|
||||
{ "lvds0", "lvds.0", "rcar-du-r8a7790" },
|
||||
{ "lvds1", "lvds.1", "rcar-du-r8a7790" },
|
||||
};
|
||||
|
||||
static void __init lager_add_standard_devices(void)
|
||||
{
|
||||
shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false);
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
|
||||
lager_add_du_device();
|
||||
}
|
||||
|
||||
static const char *lager_boards_compat_dt[] __initdata = {
|
||||
"renesas,lager",
|
||||
"renesas,lager-reference",
|
||||
@ -112,7 +33,6 @@ DT_MACHINE_START(LAGER_DT, "lager")
|
||||
.smp = smp_ops(r8a7790_smp_ops),
|
||||
.init_early = shmobile_init_delay,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = lager_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.reserve = rcar_gen2_reserve,
|
||||
.dt_compat = lager_boards_compat_dt,
|
||||
|
Loading…
Reference in New Issue
Block a user