mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
ee1a8d402e
These changes from 30 individual branches for the most part update device tree files, but there are also a few source code changes that have crept in this time, usually in order to atomically move over a driver from using hardcoded data to DT probing. A number of platforms change their DT files to use the C preprocessor, which is causing a bit of churn, but that is hopefully only this once. There are a few conflicts with the other branches unfortunately: * in exynos5440.dtsi and kirkwood-6281.dtsi, device nodes are added from multiple branches. Need to be careful to have the right set of closing braces as git gets this one wrong. * In kirkwood.dtsi, one 'ranges' line got split into two lines, while another line got added. Order of the lines does not matter. * in sama5d3.dtsi, some cleanup was merged the wrong way, causing a bogus conflict. We want the 'dmas' and 'dma-names' properties to get added here. * Two lines got removed independently in arch/arm/mach-mxs/mach-mxs.c * Contents get added independently in arch/arm/mach-omap2/cclock33xx_data.c -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAUdLnpGCrR//JCVInAQI50RAAsXbH1SGvjKJemXhRkFloPDYpCbgdDUFr ChUbjNV1xsY/jaNCfMa5/Qo7lgz/Ot7BpJef9fZn7ret+dc7nchqe/4iIkAokAUh E4ao9D1dP5aAA0ihdbSQHCZtR/0SUR81h6BoOVuo/1mvEiBaFbWAeYe8/6LJd9II OU1w9bDmjfZWYFUXs+j2VF76ueZQ+kz69XDKZUGtkqN76m1AL8lGDurj5jxvyllF VJns8d9q2nr2q9PferfajK6rkOIPaTpwKblxZHUgobCyOitZaiZM0NgF733TsNM6 HXmhDhkcn7T81+SiHVfigJ/nxo9UgU4zNJCODF3WZIwGIj3FbxvCOpdCYi2NhCO8 oLcgDk57tpoKpB3gvAmYVQHP9FIepFa/WAWyPIADA7PkpYrwgc4v+cLEHXpd8SRv viLLIa5QuNdMeaK+Md9OKmKZFd7uFD9jiMtmdm6IpEVDDjMgoteb2XSoEtNebmtY MfbW4okn118a2dFKKaPTKcXVW/a5FRp2JGfB0A58RQHaJWj3JsY1bFn/xWPEpTOA IWB/HHMln0LYTL2AXN9HcaL1jnGI1Wq5eWBurX+cXQ/ij1A6jfoRKYglx7AQqOHj iWcGYtKLLJCgiWFnLSwcljZhfoYr0/z7rhns6yo7/vhN0riy+M84OgN4HbAmUzc1 Bgy9PnJTNo8= =8PtJ -----END PGP SIGNATURE----- Merge tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC device tree changes from Arnd Bergmann: "These changes from 30 individual branches for the most part update device tree files, but there are also a few source code changes that have crept in this time, usually in order to atomically move over a driver from using hardcoded data to DT probing. A number of platforms change their DT files to use the C preprocessor, which is causing a bit of churn, but that is hopefully only this once" * tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (372 commits) ARM: at91: dt: rm9200ek: add spi support ARM: at91: dt: rm9200: add spi support ARM: at91/DT: at91sam9n12: add SPI DMA client infos ARM: at91/DT: sama5d3: add SPI DMA client infos ARM: at91/DT: fix SPI compatibility string ARM: Kirkwood: Fix the internal register ranges translation ARM: dts: bcm281xx: change comment to C89 style ARM: mmc: bcm281xx SDHCI driver (dt mods) ARM: nomadik: add the new clocks to the device tree clk: nomadik: implement the Nomadik clocks properly ARM: dts: omap5-uevm: Provide USB Host PHY clock frequency ARM: dts: omap4-panda: Fix DVI EDID reads ARM: dts: omap4-panda: Add USB Host support arm: mvebu: enable mini-PCIe connectors on Armada 370 RD ARM: shmobile: irqpin: add a DT property to enable masking on parent ARM: dts: AM43x EPOS EVM support ARM: dts: OMAP5: Add bandgap DT entry ARM: dts: AM33XX: Add pinmux configuration for CPSW to am335x EVM ARM: dts: AM33XX: Add pinmux configuration for CPSW to EVMsk ARM: dts: AM33XX: Add pinmux configuration for CPSW to beaglebone ...
112 lines
2.7 KiB
C
112 lines
2.7 KiB
C
/*
|
|
* This file contains common code that is intended to be used across
|
|
* boards so that it's not replicated.
|
|
*
|
|
* Copyright (C) 2011 Xilinx
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/cpumask.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/clk.h>
|
|
#include <linux/clk/zynq.h>
|
|
#include <linux/clocksource.h>
|
|
#include <linux/of_address.h>
|
|
#include <linux/of_irq.h>
|
|
#include <linux/of_platform.h>
|
|
#include <linux/of.h>
|
|
|
|
#include <asm/mach/arch.h>
|
|
#include <asm/mach/map.h>
|
|
#include <asm/mach/time.h>
|
|
#include <asm/mach-types.h>
|
|
#include <asm/page.h>
|
|
#include <asm/pgtable.h>
|
|
#include <asm/smp_scu.h>
|
|
#include <asm/hardware/cache-l2x0.h>
|
|
|
|
#include "common.h"
|
|
|
|
void __iomem *zynq_scu_base;
|
|
|
|
static struct of_device_id zynq_of_bus_ids[] __initdata = {
|
|
{ .compatible = "simple-bus", },
|
|
{}
|
|
};
|
|
|
|
/**
|
|
* zynq_init_machine - System specific initialization, intended to be
|
|
* called from board specific initialization.
|
|
*/
|
|
static void __init zynq_init_machine(void)
|
|
{
|
|
/*
|
|
* 64KB way size, 8-way associativity, parity disabled
|
|
*/
|
|
l2x0_of_init(0x02060000, 0xF0F0FFFF);
|
|
|
|
of_platform_bus_probe(NULL, zynq_of_bus_ids, NULL);
|
|
}
|
|
|
|
static void __init zynq_timer_init(void)
|
|
{
|
|
zynq_slcr_init();
|
|
clocksource_of_init();
|
|
}
|
|
|
|
static struct map_desc zynq_cortex_a9_scu_map __initdata = {
|
|
.length = SZ_256,
|
|
.type = MT_DEVICE,
|
|
};
|
|
|
|
static void __init zynq_scu_map_io(void)
|
|
{
|
|
unsigned long base;
|
|
|
|
base = scu_a9_get_base();
|
|
zynq_cortex_a9_scu_map.pfn = __phys_to_pfn(base);
|
|
/* Expected address is in vmalloc area that's why simple assign here */
|
|
zynq_cortex_a9_scu_map.virtual = base;
|
|
iotable_init(&zynq_cortex_a9_scu_map, 1);
|
|
zynq_scu_base = (void __iomem *)base;
|
|
BUG_ON(!zynq_scu_base);
|
|
}
|
|
|
|
/**
|
|
* zynq_map_io - Create memory mappings needed for early I/O.
|
|
*/
|
|
static void __init zynq_map_io(void)
|
|
{
|
|
debug_ll_io_init();
|
|
zynq_scu_map_io();
|
|
}
|
|
|
|
static void zynq_system_reset(char mode, const char *cmd)
|
|
{
|
|
zynq_slcr_system_reset();
|
|
}
|
|
|
|
static const char * const zynq_dt_match[] = {
|
|
"xlnx,zynq-7000",
|
|
NULL
|
|
};
|
|
|
|
MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")
|
|
.smp = smp_ops(zynq_smp_ops),
|
|
.map_io = zynq_map_io,
|
|
.init_machine = zynq_init_machine,
|
|
.init_time = zynq_timer_init,
|
|
.dt_compat = zynq_dt_match,
|
|
.restart = zynq_system_reset,
|
|
MACHINE_END
|