mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
ARM: vexpress: Add support for HDLCD
This is a temporary solution to get everything running. Signed-off-by: Jon Medhurst <tixy@linaro.org>
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/memreserve/ 0xbf000000 0x01000000;
|
||||
|
||||
/ {
|
||||
model = "V2P-CA15";
|
||||
arm,hbi = <0x237>;
|
||||
@@ -57,6 +59,8 @@
|
||||
interrupts = <0 85 4>;
|
||||
clocks = <&oscclk5>;
|
||||
clock-names = "pxlclk";
|
||||
mode = "1024x768-16@60";
|
||||
framebuffer = <0 0xff000000 0 0x01000000>;
|
||||
};
|
||||
|
||||
memory-controller@2b0a0000 {
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/memreserve/ 0xbf000000 0x01000000;
|
||||
|
||||
/ {
|
||||
model = "V2P-CA5s";
|
||||
arm,hbi = <0x225>;
|
||||
@@ -59,6 +61,8 @@
|
||||
interrupts = <0 85 4>;
|
||||
clocks = <&oscclk3>;
|
||||
clock-names = "pxlclk";
|
||||
mode = "640x480-16@60";
|
||||
framebuffer = <0xbf000000 0x01000000>;
|
||||
};
|
||||
|
||||
memory-controller@2a150000 {
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <linux/smp.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_fdt.h>
|
||||
#include <linux/of_irq.h>
|
||||
@@ -373,6 +374,31 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")
|
||||
.init_machine = v2m_init,
|
||||
MACHINE_END
|
||||
|
||||
static void __init v2m_dt_hdlcd_init(void)
|
||||
{
|
||||
struct device_node *node;
|
||||
int len, na, ns;
|
||||
const __be32 *prop;
|
||||
phys_addr_t fb_base, fb_size;
|
||||
|
||||
node = of_find_compatible_node(NULL, NULL, "arm,hdlcd");
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
na = of_n_addr_cells(node);
|
||||
ns = of_n_size_cells(node);
|
||||
|
||||
prop = of_get_property(node, "framebuffer", &len);
|
||||
if (WARN_ON(!prop || len < (na + ns) * sizeof(*prop)))
|
||||
return;
|
||||
|
||||
fb_base = of_read_number(prop, na);
|
||||
fb_size = of_read_number(prop + na, ns);
|
||||
|
||||
if (WARN_ON(memblock_remove(fb_base, fb_size)))
|
||||
return;
|
||||
};
|
||||
|
||||
static struct map_desc v2m_rs1_io_desc __initdata = {
|
||||
.virtual = V2M_PERIPH,
|
||||
.pfn = __phys_to_pfn(0x1c000000),
|
||||
@@ -423,6 +449,8 @@ void __init v2m_dt_init_early(void)
|
||||
pr_warning("vexpress: DT HBI (%x) is not matching "
|
||||
"hardware (%x)!\n", dt_hbi, hbi);
|
||||
}
|
||||
|
||||
v2m_dt_hdlcd_init();
|
||||
}
|
||||
|
||||
static void __init v2m_dt_timer_init(void)
|
||||
|
||||
Reference in New Issue
Block a user