mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 02:34:01 +08:00
fcba914542
This is the third and smallest of the SoC specific updates. Changes include: * SMP support for the Xilinx zynq platform * Smaller imx changes * LPAE support for mvebu * Moving the orion5x, kirkwood, dove and mvebu platforms to a common "mbus" driver for their internal devices. It would be good to get feedback on the location of the "mbus" driver. Since this is used on multiple platforms may potentially get shared with other architectures (powerpc and arm64), it was moved to drivers/bus/. We expect other similar drivers to get moved to the same place in order to avoid creating more top-level directories under drivers/ or cluttering up the messy drivers/misc/ even more. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAUYgifmCrR//JCVInAQLZ6A//VD38ocUx9RPC8rOgrkzQxcMTh3wFghoA BVvS8fcAmhZYA5+GpTYBm+5XH2Jvu6Pv0hrba8TOeEhyZJxiWA6vg0cWWmnvZLDC Q0uubhqIhv32I2Oq4uJb/VyzcCrQFrnjhw9HHphy7YlGKKBUFWrbgTaOypwbgXr9 DnB7u04DvaKcUjZb4Y0HaUDM7qWMFDPbKKF5WMZPqjocnjsiBQ2JMw+2KByliWR3 mCI+FdickpDYSVp9V9iRM6F73cItknjZIzQs1RYg/GSuPSWkWTdfzE1Blk/561Fo QDrNDhnXHlt+bmQRKGWel2gDWBZW47Wj+XkjGpWDFh+e/l3vNJq0hrzXizuRCLSw /2VefXyd3jNj8UWL3+GCA4dnw8fx14dgfNJ2iu7kg6l4ggwpJ05ToxabkLFlTRwy LloDFjswiTBi75YdQRQCV/95NIxvIQIkbytPrk5zQWVwg8ZXoicgzRRUL5gifLh+ WE+zaY/A5e1fXN/XS70hvbp2ROZtfGOdunUR9XFR8KNqDoJDlqtrlV3Pjh75YY8G JUmCKQjzfubr5WHskPBGCtsSb1455MEIFVANEtlJyOEKp6ytXfpVvrrZtAvmD6Ep 07dOqOgflnuZPk7H0JOf7mTf9L+fmNp4ubjRqcs9ZfPsEGoQFqBtpLF6JQbxUYGd j69lW3jEM3o= =rQsu -----END PGP SIGNATURE----- Merge tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC platform updates (part 3) from Arnd Bergmann: "This is the third and smallest of the SoC specific updates. Changes include: - SMP support for the Xilinx zynq platform - Smaller imx changes - LPAE support for mvebu - Moving the orion5x, kirkwood, dove and mvebu platforms to a common "mbus" driver for their internal devices. It would be good to get feedback on the location of the "mbus" driver. Since this is used on multiple platforms may potentially get shared with other architectures (powerpc and arm64), it was moved to drivers/bus/. We expect other similar drivers to get moved to the same place in order to avoid creating more top-level directories under drivers/ or cluttering up the messy drivers/misc/ even more." * tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits) ARM: imx: reset_controller may be disabled ARM: mvebu: Align the internal registers virtual base to support LPAE ARM: mvebu: Limit the DMA zone when LPAE is selected arm: plat-orion: remove addr-map code arm: mach-mv78xx0: convert to use the mvebu-mbus driver arm: mach-orion5x: convert to use mvebu-mbus driver arm: mach-dove: convert to use mvebu-mbus driver arm: mach-kirkwood: convert to use mvebu-mbus driver arm: mach-mvebu: convert to use mvebu-mbus driver ARM i.MX53: set CLK_SET_RATE_PARENT flag on the tve_ext_sel clock ARM i.MX53: tve_di clock is not part of the CCM, but of TVE ARM i.MX53: make tve_ext_sel propagate rate change to PLL ARM i.MX53: Remove unused tve_gate clkdev entry ARM i.MX5: Remove tve_sel clock from i.MX53 clock tree ARM: i.MX5: Add PATA and SRTC clocks ARM: imx: do not bring up unavailable cores ARM: imx: add initial imx6dl support ARM: imx1: mm: add call to mxc_device_init ARM: imx_v4_v5_defconfig: Add CONFIG_GPIO_SYSFS ARM: imx_v6_v7_defconfig: Select CONFIG_PERF_EVENTS ...
202 lines
5.1 KiB
C
202 lines
5.1 KiB
C
/*
|
|
* Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net>
|
|
*
|
|
* arch/arm/mach-kirkwood/board-dt.c
|
|
*
|
|
* Flattened Device Tree board initialization
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/of.h>
|
|
#include <linux/of_platform.h>
|
|
#include <linux/clk-provider.h>
|
|
#include <linux/clk/mvebu.h>
|
|
#include <linux/kexec.h>
|
|
#include <asm/mach/arch.h>
|
|
#include <asm/mach/map.h>
|
|
#include <mach/bridge-regs.h>
|
|
#include <linux/platform_data/usb-ehci-orion.h>
|
|
#include <plat/irq.h>
|
|
#include <plat/common.h>
|
|
#include "common.h"
|
|
|
|
static struct of_device_id kirkwood_dt_match_table[] __initdata = {
|
|
{ .compatible = "simple-bus", },
|
|
{ }
|
|
};
|
|
|
|
/*
|
|
* There are still devices that doesn't know about DT yet. Get clock
|
|
* gates here and add a clock lookup alias, so that old platform
|
|
* devices still work.
|
|
*/
|
|
|
|
static void __init kirkwood_legacy_clk_init(void)
|
|
{
|
|
|
|
struct device_node *np = of_find_compatible_node(
|
|
NULL, NULL, "marvell,kirkwood-gating-clock");
|
|
struct of_phandle_args clkspec;
|
|
struct clk *clk;
|
|
|
|
clkspec.np = np;
|
|
clkspec.args_count = 1;
|
|
|
|
clkspec.args[0] = CGC_BIT_PEX0;
|
|
orion_clkdev_add("0", "pcie",
|
|
of_clk_get_from_provider(&clkspec));
|
|
|
|
clkspec.args[0] = CGC_BIT_PEX1;
|
|
orion_clkdev_add("1", "pcie",
|
|
of_clk_get_from_provider(&clkspec));
|
|
|
|
clkspec.args[0] = CGC_BIT_SDIO;
|
|
orion_clkdev_add(NULL, "mvsdio",
|
|
of_clk_get_from_provider(&clkspec));
|
|
|
|
/*
|
|
* The ethernet interfaces forget the MAC address assigned by
|
|
* u-boot if the clocks are turned off. Until proper DT support
|
|
* is available we always enable them for now.
|
|
*/
|
|
clkspec.args[0] = CGC_BIT_GE0;
|
|
clk = of_clk_get_from_provider(&clkspec);
|
|
orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk);
|
|
clk_prepare_enable(clk);
|
|
|
|
clkspec.args[0] = CGC_BIT_GE1;
|
|
clk = of_clk_get_from_provider(&clkspec);
|
|
orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk);
|
|
clk_prepare_enable(clk);
|
|
}
|
|
|
|
static void __init kirkwood_of_clk_init(void)
|
|
{
|
|
mvebu_clocks_init();
|
|
kirkwood_legacy_clk_init();
|
|
}
|
|
|
|
static void __init kirkwood_dt_init(void)
|
|
{
|
|
pr_info("Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), kirkwood_tclk);
|
|
|
|
/*
|
|
* Disable propagation of mbus errors to the CPU local bus,
|
|
* as this causes mbus errors (which can occur for example
|
|
* for PCI aborts) to throw CPU aborts, which we're not set
|
|
* up to deal with.
|
|
*/
|
|
writel(readl(CPU_CONFIG) & ~CPU_CONFIG_ERROR_PROP, CPU_CONFIG);
|
|
|
|
kirkwood_setup_wins();
|
|
|
|
kirkwood_l2_init();
|
|
|
|
/* Setup root of clk tree */
|
|
kirkwood_of_clk_init();
|
|
|
|
kirkwood_cpuidle_init();
|
|
|
|
#ifdef CONFIG_KEXEC
|
|
kexec_reinit = kirkwood_enable_pcie;
|
|
#endif
|
|
|
|
if (of_machine_is_compatible("globalscale,dreamplug"))
|
|
dreamplug_init();
|
|
|
|
if (of_machine_is_compatible("globalscale,guruplug"))
|
|
guruplug_dt_init();
|
|
|
|
if (of_machine_is_compatible("dlink,dns-kirkwood"))
|
|
dnskw_init();
|
|
|
|
if (of_machine_is_compatible("iom,iconnect"))
|
|
iconnect_init();
|
|
|
|
if (of_machine_is_compatible("raidsonic,ib-nas62x0"))
|
|
ib62x0_init();
|
|
|
|
if (of_machine_is_compatible("qnap,ts219"))
|
|
qnap_dt_ts219_init();
|
|
|
|
if (of_machine_is_compatible("seagate,dockstar"))
|
|
dockstar_dt_init();
|
|
|
|
if (of_machine_is_compatible("seagate,goflexnet"))
|
|
goflexnet_init();
|
|
|
|
if (of_machine_is_compatible("buffalo,lsxl"))
|
|
lsxl_init();
|
|
|
|
if (of_machine_is_compatible("iom,ix2-200"))
|
|
iomega_ix2_200_init();
|
|
|
|
if (of_machine_is_compatible("keymile,km_kirkwood"))
|
|
km_kirkwood_init();
|
|
|
|
if (of_machine_is_compatible("lacie,cloudbox") ||
|
|
of_machine_is_compatible("lacie,inetspace_v2") ||
|
|
of_machine_is_compatible("lacie,netspace_lite_v2") ||
|
|
of_machine_is_compatible("lacie,netspace_max_v2") ||
|
|
of_machine_is_compatible("lacie,netspace_mini_v2") ||
|
|
of_machine_is_compatible("lacie,netspace_v2"))
|
|
ns2_init();
|
|
|
|
if (of_machine_is_compatible("mpl,cec4"))
|
|
mplcec4_init();
|
|
|
|
if (of_machine_is_compatible("netgear,readynas-duo-v2"))
|
|
netgear_readynas_init();
|
|
|
|
if (of_machine_is_compatible("plathome,openblocks-a6"))
|
|
openblocks_a6_init();
|
|
|
|
if (of_machine_is_compatible("usi,topkick"))
|
|
usi_topkick_init();
|
|
|
|
of_platform_populate(NULL, kirkwood_dt_match_table, NULL, NULL);
|
|
}
|
|
|
|
static const char * const kirkwood_dt_board_compat[] = {
|
|
"globalscale,dreamplug",
|
|
"globalscale,guruplug",
|
|
"dlink,dns-320",
|
|
"dlink,dns-325",
|
|
"iom,iconnect",
|
|
"raidsonic,ib-nas62x0",
|
|
"qnap,ts219",
|
|
"seagate,dockstar",
|
|
"seagate,goflexnet",
|
|
"buffalo,lsxl",
|
|
"iom,ix2-200",
|
|
"keymile,km_kirkwood",
|
|
"lacie,cloudbox",
|
|
"lacie,inetspace_v2",
|
|
"lacie,netspace_lite_v2",
|
|
"lacie,netspace_max_v2",
|
|
"lacie,netspace_mini_v2",
|
|
"lacie,netspace_v2",
|
|
"mpl,cec4",
|
|
"netgear,readynas-duo-v2",
|
|
"plathome,openblocks-a6",
|
|
"usi,topkick",
|
|
"zyxel,nsa310",
|
|
NULL
|
|
};
|
|
|
|
DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")
|
|
/* Maintainer: Jason Cooper <jason@lakedaemon.net> */
|
|
.map_io = kirkwood_map_io,
|
|
.init_early = kirkwood_init_early,
|
|
.init_irq = orion_dt_init_irq,
|
|
.init_time = kirkwood_timer_init,
|
|
.init_machine = kirkwood_dt_init,
|
|
.restart = kirkwood_restart,
|
|
.dt_compat = kirkwood_dt_board_compat,
|
|
MACHINE_END
|