Merge tag 'soc-arm-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC code updates from Arnd Bergmann: "Another small set of code changes for the 32-bit Arm platforms, and a trivial update to the Kconfig entry for the arm64 TI K3 chip. Andrew Davis cleans up the system reset handling, which touches a couple of platforms. The mediatek platform needs some code changes to support multiprocessing in the newly added support for the old mt6572 chip" * tag 'soc-arm-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: ARM: sa110/gpio: convert set_multiple() to returning an integer ARM: rockchip: fix kernel hang during smp initialization ARM: mediatek: add MT6572 smp bring up code ARM: mediatek: add board_dt_compat entry for the MT6572 SoC ARM: tegra: Use I/O memcpy to write to IRAM arm: orion: use string choices helper ARM: Switch to new sys-off handler API arm64: Kconfig.platforms: remove useless select for ARCH_K3
This commit is contained in:
@@ -578,8 +578,8 @@ static int sa1111_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sa1111_gpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
|
||||
unsigned long *bits)
|
||||
static int sa1111_gpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
|
||||
unsigned long *bits)
|
||||
{
|
||||
struct sa1111 *sachip = gc_to_sa1111(gc);
|
||||
unsigned long flags;
|
||||
@@ -597,6 +597,8 @@ static void sa1111_gpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
|
||||
sa1111_gpio_modify(reg + SA1111_GPIO_PCDWR, (msk >> 12) & 255, val >> 12);
|
||||
sa1111_gpio_modify(reg + SA1111_GPIO_PCSSR, (msk >> 12) & 255, val >> 12);
|
||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sa1111_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
|
||||
@@ -616,7 +618,7 @@ static int sa1111_setup_gpios(struct sa1111 *sachip)
|
||||
sachip->gc.direction_output = sa1111_gpio_direction_output;
|
||||
sachip->gc.get = sa1111_gpio_get;
|
||||
sachip->gc.set_rv = sa1111_gpio_set;
|
||||
sachip->gc.set_multiple = sa1111_gpio_set_multiple;
|
||||
sachip->gc.set_multiple_rv = sa1111_gpio_set_multiple;
|
||||
sachip->gc.to_irq = sa1111_gpio_to_irq;
|
||||
sachip->gc.base = -1;
|
||||
sachip->gc.ngpio = 18;
|
||||
|
||||
@@ -143,7 +143,7 @@ static void __init highbank_init(void)
|
||||
sregs_base = of_iomap(np, 0);
|
||||
WARN_ON(!sregs_base);
|
||||
|
||||
pm_power_off = highbank_power_off;
|
||||
register_platform_power_off(highbank_power_off);
|
||||
highbank_pm_init();
|
||||
|
||||
bus_register_notifier(&platform_bus_type, &highbank_platform_nb);
|
||||
|
||||
@@ -15,6 +15,10 @@ config MACH_MT2701
|
||||
bool "MediaTek MT2701 SoCs support"
|
||||
default ARCH_MEDIATEK
|
||||
|
||||
config MACH_MT6572
|
||||
bool "MediaTek MT6572 SoCs support"
|
||||
default ARCH_MEDIATEK
|
||||
|
||||
config MACH_MT6589
|
||||
bool "MediaTek MT6589 SoCs support"
|
||||
default ARCH_MEDIATEK
|
||||
|
||||
@@ -38,6 +38,7 @@ static void __init mediatek_timer_init(void)
|
||||
|
||||
static const char * const mediatek_board_dt_compat[] = {
|
||||
"mediatek,mt2701",
|
||||
"mediatek,mt6572",
|
||||
"mediatek,mt6589",
|
||||
"mediatek,mt6592",
|
||||
"mediatek,mt7623",
|
||||
|
||||
@@ -29,6 +29,12 @@ static const struct mtk_smp_boot_info mtk_mt8135_tz_boot = {
|
||||
{ 0x3f8, 0x3f8, 0x3f8 },
|
||||
};
|
||||
|
||||
static const struct mtk_smp_boot_info mtk_mt6572_boot = {
|
||||
0x10001400, 0x08,
|
||||
{ 0x534c4131 },
|
||||
{ 0x0c },
|
||||
};
|
||||
|
||||
static const struct mtk_smp_boot_info mtk_mt6589_boot = {
|
||||
0x10002000, 0x34,
|
||||
{ 0x534c4131, 0x4c415332, 0x41534c33 },
|
||||
@@ -49,6 +55,7 @@ static const struct of_device_id mtk_tz_smp_boot_infos[] __initconst = {
|
||||
};
|
||||
|
||||
static const struct of_device_id mtk_smp_boot_infos[] __initconst = {
|
||||
{ .compatible = "mediatek,mt6572", .data = &mtk_mt6572_boot },
|
||||
{ .compatible = "mediatek,mt6589", .data = &mtk_mt6589_boot },
|
||||
{ .compatible = "mediatek,mt7623", .data = &mtk_mt7623_boot },
|
||||
{ .compatible = "mediatek,mt7629", .data = &mtk_mt7623_boot },
|
||||
|
||||
@@ -1096,7 +1096,7 @@ static void __init spitz_init(void)
|
||||
software_node_register(&spitz_scoop_2_gpiochip_node);
|
||||
|
||||
init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0);
|
||||
pm_power_off = spitz_poweroff;
|
||||
register_platform_power_off(spitz_poweroff);
|
||||
|
||||
PMCR = 0x00;
|
||||
|
||||
|
||||
@@ -279,11 +279,6 @@ static void __init rockchip_smp_prepare_cpus(unsigned int max_cpus)
|
||||
}
|
||||
|
||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) {
|
||||
if (rockchip_smp_prepare_sram(node)) {
|
||||
of_node_put(node);
|
||||
return;
|
||||
}
|
||||
|
||||
/* enable the SCU power domain */
|
||||
pmu_set_power_domain(PMU_PWRDN_SCU, true);
|
||||
|
||||
@@ -316,11 +311,19 @@ static void __init rockchip_smp_prepare_cpus(unsigned int max_cpus)
|
||||
asm ("mrc p15, 1, %0, c9, c0, 2\n" : "=r" (l2ctlr));
|
||||
ncores = ((l2ctlr >> 24) & 0x3) + 1;
|
||||
}
|
||||
of_node_put(node);
|
||||
|
||||
/* Make sure that all cores except the first are really off */
|
||||
for (i = 1; i < ncores; i++)
|
||||
pmu_set_power_domain(0 + i, false);
|
||||
|
||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) {
|
||||
if (rockchip_smp_prepare_sram(node)) {
|
||||
of_node_put(node);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
of_node_put(node);
|
||||
}
|
||||
|
||||
static void __init rk3036_smp_prepare_cpus(unsigned int max_cpus)
|
||||
|
||||
@@ -298,7 +298,7 @@ static struct platform_device *sa11x0_devices[] __initdata = {
|
||||
static int __init sa1100_init(void)
|
||||
{
|
||||
struct resource wdt_res = DEFINE_RES_MEM(0x90000000, 0x20);
|
||||
pm_power_off = sa1100_power_off;
|
||||
register_platform_power_off(sa1100_power_off);
|
||||
|
||||
regulator_has_full_constraints();
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ static void __init tegra_cpu_reset_handler_enable(void)
|
||||
BUG_ON(is_enabled);
|
||||
BUG_ON(tegra_cpu_reset_handler_size > TEGRA_IRAM_RESET_HANDLER_SIZE);
|
||||
|
||||
memcpy(iram_base, (void *)__tegra_cpu_reset_handler_start,
|
||||
memcpy_toio(iram_base, (void *)__tegra_cpu_reset_handler_start,
|
||||
tegra_cpu_reset_handler_size);
|
||||
|
||||
err = call_firmware_op(set_cpu_boot_addr, 0, reset_address);
|
||||
|
||||
@@ -141,7 +141,7 @@ static void __init vt8500_init(void)
|
||||
pr_err("%s:ioremap(power_off) failed\n", __func__);
|
||||
}
|
||||
if (pmc_base)
|
||||
pm_power_off = &vt8500_power_off;
|
||||
register_platform_power_off(vt8500_power_off);
|
||||
else
|
||||
pr_err("%s: PMC Hibernation register could not be remapped, not enabling power off!\n", __func__);
|
||||
}
|
||||
|
||||
@@ -468,14 +468,14 @@ static void orion_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
||||
|
||||
if (is_out) {
|
||||
seq_printf(s, " out %s %s\n",
|
||||
out & msk ? "hi" : "lo",
|
||||
str_hi_lo(out & msk),
|
||||
blink & msk ? "(blink )" : "");
|
||||
continue;
|
||||
}
|
||||
|
||||
seq_printf(s, " in %s (act %s) - IRQ",
|
||||
(data_in ^ in_pol) & msk ? "hi" : "lo",
|
||||
in_pol & msk ? "lo" : "hi");
|
||||
str_hi_lo((data_in ^ in_pol) & msk),
|
||||
str_lo_hi(in_pol & msk));
|
||||
if (!((edg_msk | lvl_msk) & msk)) {
|
||||
seq_puts(s, " disabled\n");
|
||||
continue;
|
||||
|
||||
@@ -541,7 +541,7 @@ static int __init xen_late_init(void)
|
||||
if (!xen_domain())
|
||||
return -ENODEV;
|
||||
|
||||
pm_power_off = xen_power_off;
|
||||
register_platform_power_off(xen_power_off);
|
||||
register_restart_handler(&xen_restart_nb);
|
||||
if (!xen_initial_domain()) {
|
||||
struct timespec64 ts;
|
||||
|
||||
@@ -147,11 +147,7 @@ config ARCH_SPARX5
|
||||
|
||||
config ARCH_K3
|
||||
bool "Texas Instruments Inc. K3 multicore SoC architecture"
|
||||
select PM_GENERIC_DOMAINS if PM
|
||||
select MAILBOX
|
||||
select SOC_TI
|
||||
select TI_MESSAGE_MANAGER
|
||||
select TI_SCI_PROTOCOL
|
||||
select TI_K3_SOCINFO
|
||||
help
|
||||
This enables support for Texas Instruments' K3 multicore SoC
|
||||
|
||||
Reference in New Issue
Block a user