forked from Minki/linux
5c73cc4b6c
As always, this tends to be one of our bigger branches. There are lots of updates this release, but not that many jumps out as something that needs more detailed coverage. Some of the highlights are: - DTs for the new Annapurna Labs Alpine platform - More graphics DT pieces falling into place on Exynos, bridges, clocks. - Plenty of DT updates for Qualcomm platforms for various IP blocks - Some churn on Tegra due to switch-over to tool-generated pinctrl data - Misc fixes and updates for Atmel at91 platforms - Various DT updates to add IP block support on Broadcom's Cygnus platforms - More updates for Renesas platforms as DT support is added for various IP blocks (IPMMU, display, audio, etc). -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJVNzKFAAoJEIwa5zzehBx3JtEP/1g89CW7iZHAUyIiC+jtgqck ASoplr13DLD0HWjjWITX3zm7J/iY57YjEv14tHH/xmrh5YCCZ+mRLqiD/Plnv0Zv JdJRRJv/NMnMlu/tA1aBO326JOt2Vw+3YngmYayDpoRzVifx2YTJLbu2difa+6rM vN6FpOE6U5jkvM16+gqxKxyx0tGIQz9cTn+9q2V1fDS++vZ2VvqfB5pTNul3BKAF OVCNFJ/EUE9EPMPbmgDjYmNE/POj64kF32n7NBEQz2Z+nwDNxDAecfF356hV7o5g JsFLNK+4c2QQqBL775xzCf5kK+n/V2cFEpDica+hU70AdWsjdAlUFrbOsWGUJLRi 4Blrv8GRxEKeOCs8AFKYCM+z3zf2ais7JMteD2VW26ywCwpUt+QEZTUVHRHU3NYQ BMI7uyTGIH2GyLyS+Av3vikza8IbDIwlYuuDpXhCJSXXgKSnbzCrpjkhyGLccBJR k3qgUwPJVw9hP1qaaNgvb7p9oNhTP2yLl3fQ68WqI7QWIupW0/s12INhzFFgt6zU Nzcx010ku9yMeMMGtfiNgA3cMln+Ysfs1UIUOMQ36zP1PCtHJkZgwtZzTsBE4A04 KqmiLL/+7qsconEhEanmDzTpeXiNzERnOKSSqVN7Fwp89GEFJLrWpHSXI+8SBTHC fB54LRTNYdlcoN0QshcT =wqhB -----END PGP SIGNATURE----- Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM DT updates from Olof Johansson: "As always, this tends to be one of our bigger branches. There are lots of updates this release, but not that many jumps out as something that needs more detailed coverage. Some of the highlights are: - DTs for the new Annapurna Labs Alpine platform - more graphics DT pieces falling into place on Exynos, bridges, clocks. - plenty of DT updates for Qualcomm platforms for various IP blocks - some churn on Tegra due to switch-over to tool-generated pinctrl data - misc fixes and updates for Atmel at91 platforms - various DT updates to add IP block support on Broadcom's Cygnus platforms - more updates for Renesas platforms as DT support is added for various IP blocks (IPMMU, display, audio, etc)" * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (231 commits) ARM: dts: alpine: add internal pci Revert "ARM: dts: mt8135: Add pinctrl/GPIO/EINT node for mt8135." ARM: mvebu: use 0xf1000000 as internal registers on Armada 370 DB ARM: dts: qcom: Add idle state device nodes for 8064 ARM: dts: qcom: Add idle states device nodes for 8084 ARM: dts: qcom: Add idle states device nodes for 8974/8074 ARM: dts: qcom: Update power-controller device node for 8064 Krait CPUs ARM: dts: qcom: Add power-controller device node for 8084 Krait CPUs ARM: dts: qcom: Add power-controller device node for 8074 Krait CPUs devicetree: bindings: Document qcom,idle-states devicetree: bindings: Update qcom,saw2 node bindings dt-bindings: Add #defines for MSM8916 clocks and resets arm: dts: qcom: Add LPASS Audio HW to IPQ8064 device tree arm: dts: qcom: Add APQ8084 chipset SPMI PMIC's nodes arm: dts: qcom: Add 8x74 chipset SPMI PMIC's nodes arm: dts: qcom: Add SPMI PMIC Arbiter nodes for APQ8084 and MSM8974 arm: dts: qcom: Add LCC nodes arm: dts: qcom: Add TCSR support for MSM8960 arm: dts: qcom: Add TCSR support for MSM8660 arm: dts: qcom: Add TCSR support for IPQ8064 ...
72 lines
2.0 KiB
C
72 lines
2.0 KiB
C
/*
|
|
* SMP support for r8a7790
|
|
*
|
|
* Copyright (C) 2012-2013 Renesas Solutions Corp.
|
|
* Copyright (C) 2012 Takashi Yoshii <takashi.yoshii.ze@renesas.com>
|
|
*
|
|
* 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.
|
|
*/
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/smp.h>
|
|
#include <linux/io.h>
|
|
|
|
#include <asm/smp_plat.h>
|
|
|
|
#include "common.h"
|
|
#include "platsmp-apmu.h"
|
|
#include "pm-rcar.h"
|
|
#include "rcar-gen2.h"
|
|
#include "r8a7790.h"
|
|
|
|
static struct rcar_sysc_ch r8a7790_ca15_scu = {
|
|
.chan_offs = 0x180, /* PWRSR5 .. PWRER5 */
|
|
.isr_bit = 12, /* CA15-SCU */
|
|
};
|
|
|
|
static struct rcar_sysc_ch r8a7790_ca7_scu = {
|
|
.chan_offs = 0x100, /* PWRSR3 .. PWRER3 */
|
|
.isr_bit = 21, /* CA7-SCU */
|
|
};
|
|
|
|
static struct rcar_apmu_config r8a7790_apmu_config[] = {
|
|
{
|
|
.iomem = DEFINE_RES_MEM(0xe6152000, 0x188),
|
|
.cpus = { 0, 1, 2, 3 },
|
|
},
|
|
{
|
|
.iomem = DEFINE_RES_MEM(0xe6151000, 0x188),
|
|
.cpus = { 0x100, 0x0101, 0x102, 0x103 },
|
|
}
|
|
};
|
|
|
|
static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus)
|
|
{
|
|
/* let APMU code install data related to shmobile_boot_vector */
|
|
shmobile_smp_apmu_prepare_cpus(max_cpus,
|
|
r8a7790_apmu_config,
|
|
ARRAY_SIZE(r8a7790_apmu_config));
|
|
|
|
/* turn on power to SCU */
|
|
rcar_gen2_pm_init();
|
|
rcar_sysc_power_up(&r8a7790_ca15_scu);
|
|
rcar_sysc_power_up(&r8a7790_ca7_scu);
|
|
}
|
|
|
|
struct smp_operations r8a7790_smp_ops __initdata = {
|
|
.smp_prepare_cpus = r8a7790_smp_prepare_cpus,
|
|
.smp_boot_secondary = shmobile_smp_apmu_boot_secondary,
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
.cpu_disable = shmobile_smp_cpu_disable,
|
|
.cpu_die = shmobile_smp_apmu_cpu_die,
|
|
.cpu_kill = shmobile_smp_apmu_cpu_kill,
|
|
#endif
|
|
};
|