 fc5d46222f
			
		
	
	
	fc5d46222f
	
	
	
		
			
			From Simon Horman: Renesas ARM based SoC updates for v3.12 * Setup arch timer based on MD pins on r8a7790 SoC * Thermal driver support for r8a7790 SoC * Make arch timer optional for r8a7790 and r8a73a4 SoCs * CMT10 clock event for r8a7790 and r8a73a4 SoCs * Increased clock coverage for r8a73a4 SoC * MMCIF DMA definitions for r8a7740 SoC * Disconnect SMP code from clocks on emev2 SoC * tag 'renesas-soc-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: (49 commits) ARM: shmobile: Setup r8a7790 arch timer based on MD pins ARM: shmobile: Introduce r8a7790_read_mode_pins() ARM: shmobile: r8a7740: add MMCIF DMA definitions ARM: shmobile: Disconnect EMEV2 SMP code from clocks ARM: shmobile: Make r8a73a4 Arch timer optional ARM: shmobile: Add r8a73a4 CMT10 clock event ARM: shmobile: Make r8a7790 Arch timer optional ARM: shmobile: Add r8a7790 CMT00 clock event ARM: shmobile: Sort r8a7790 MSTP entries ARM: shmobile: r8a73a4: add clocks for I2C controllers ARM: shmobile: r8a73a4: add Z2 clock support ARM: shmobile: r8a73a4: safeguard against wrong clk_set_rate() uses ARM: shmobile: r8a73a4: implement CPU clock scaling for CPUFreq ARM: shmobile: r8a73a4: wait for completion when kicking the clock ARM: shmobile: r8a7790: add thermal driver support ARM: shmobile: r8a7790: add clocks for thermal ARM: shmobile: Add SMSC ethernet chip to KZM9D DT reference ARM: shmobile: KZM9D DT reference implementation ARM: shmobile: r8a7790: add MMCIF and SDHI DT templates ARM: shmobile: r8a73a4: add MMCIF and SDHI DT templates ... Signed-off-by: Olof Johansson <olof@lixom.net>
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * SMP support for Emma Mobile EV2
 | |
|  *
 | |
|  * Copyright (C) 2012  Renesas Solutions Corp.
 | |
|  * Copyright (C) 2012  Magnus Damm
 | |
|  *
 | |
|  * 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.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software
 | |
|  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  */
 | |
| #include <linux/kernel.h>
 | |
| #include <linux/init.h>
 | |
| #include <linux/smp.h>
 | |
| #include <linux/spinlock.h>
 | |
| #include <linux/io.h>
 | |
| #include <linux/delay.h>
 | |
| #include <mach/common.h>
 | |
| #include <mach/emev2.h>
 | |
| #include <asm/smp_plat.h>
 | |
| #include <asm/smp_scu.h>
 | |
| 
 | |
| #define EMEV2_SCU_BASE 0x1e000000
 | |
| #define EMEV2_SMU_BASE 0xe0110000
 | |
| #define SMU_GENERAL_REG0 0x7c0
 | |
| 
 | |
| static int emev2_boot_secondary(unsigned int cpu, struct task_struct *idle)
 | |
| {
 | |
| 	arch_send_wakeup_ipi_mask(cpumask_of(cpu_logical_map(cpu)));
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
 | |
| {
 | |
| 	void __iomem *smu;
 | |
| 
 | |
| 	/* setup EMEV2 specific SCU base, enable */
 | |
| 	shmobile_scu_base = ioremap(EMEV2_SCU_BASE, PAGE_SIZE);
 | |
| 	scu_enable(shmobile_scu_base);
 | |
| 
 | |
| 	/* Tell ROM loader about our vector (in headsmp-scu.S, headsmp.S) */
 | |
| 	smu = ioremap(EMEV2_SMU_BASE, PAGE_SIZE);
 | |
| 	if (smu) {
 | |
| 		iowrite32(__pa(shmobile_boot_vector), smu + SMU_GENERAL_REG0);
 | |
| 		iounmap(smu);
 | |
| 	}
 | |
| 	shmobile_boot_fn = virt_to_phys(shmobile_boot_scu);
 | |
| 	shmobile_boot_arg = (unsigned long)shmobile_scu_base;
 | |
| 
 | |
| 	/* enable cache coherency on booting CPU */
 | |
| 	scu_power_mode(shmobile_scu_base, SCU_PM_NORMAL);
 | |
| }
 | |
| 
 | |
| struct smp_operations emev2_smp_ops __initdata = {
 | |
| 	.smp_prepare_cpus	= emev2_smp_prepare_cpus,
 | |
| 	.smp_boot_secondary	= emev2_boot_secondary,
 | |
| };
 |