Re: [RFC][PATCH 01/26] MIPS: Add base support for Ingenic JZ4740 System-on-a-Chip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Lars,

On Wednesday 02 June 2010 21:02:52 Lars-Peter Clausen wrote:
> This patch adds a new cpu type for the JZ4740 to the Linux MIPS
> architecture code. It also adds the iomem addresses for the different
> components found on a JZ4740 SoC.
> 
> Signed-off-by: Lars-Peter Clausen <lars@xxxxxxxxxx>
> ---
[snip]

>  	 * MIPS64 class processors
> diff --git a/arch/mips/include/asm/mach-jz4740/base.h
> b/arch/mips/include/asm/mach-jz4740/base.h new file mode 100644
> index 0000000..cba3aae
> --- /dev/null
> +++ b/arch/mips/include/asm/mach-jz4740/base.h
> @@ -0,0 +1,28 @@
> +#ifndef __ASM_MACH_JZ4740_BASE_H__
> +#define __ASM_MACH_JZ4740_BASE_H__
> +
> +#define JZ4740_CPM_BASE_ADDR	0xb0000000
> +#define JZ4740_INTC_BASE_ADDR	0xb0001000
> +#define JZ4740_TCU_BASE_ADDR	0xb0002000
> +#define JZ4740_WDT_BASE_ADDR	0xb0002000
> +#define JZ4740_RTC_BASE_ADDR	0xb0003000
> +#define JZ4740_GPIO_BASE_ADDR	0xb0010000
> +#define JZ4740_AIC_BASE_ADDR	0xb0020000
> +#define JZ4740_ICDC_BASE_ADDR	0xb0020000
> +#define JZ4740_MSC_BASE_ADDR	0xb0021000
> +#define JZ4740_UART0_BASE_ADDR	0xb0030000
> +#define JZ4740_UART1_BASE_ADDR	0xb0031000
> +#define JZ4740_I2C_BASE_ADDR	0xb0042000
> +#define JZ4740_SSI_BASE_ADDR	0xb0043000
> +#define JZ4740_SADC_BASE_ADDR	0xb0070000
> +#define JZ4740_EMC_BASE_ADDR	0xb3010000
> +#define JZ4740_DMAC_BASE_ADDR	0xb3020000
> +#define JZ4740_UHC_BASE_ADDR	0xb3030000
> +#define JZ4740_UDC_BASE_ADDR	0xb3040000
> +#define JZ4740_LCD_BASE_ADDR	0xb3050000
> +#define JZ4740_SLCD_BASE_ADDR	0xb3050000
> +#define JZ4740_CIM_BASE_ADDR	0xb3060000
> +#define JZ4740_IPU_BASE_ADDR	0xb3080000
> +#define JZ4740_ETH_BASE_ADDR	0xb3100000

Any reasons why you prefered virtual addresses here instead of physical ones?
You might also want to define a "true" base address and compute the registers
offset relatively to this base address for better clarity.

> +
> +#endif
> diff --git a/arch/mips/include/asm/mach-jz4740/war.h
> b/arch/mips/include/asm/mach-jz4740/war.h new file mode 100644
> index 0000000..3a5bc17
> --- /dev/null
> +++ b/arch/mips/include/asm/mach-jz4740/war.h
> @@ -0,0 +1,25 @@
> +/*
> + * This file is subject to the terms and conditions of the GNU General
> Public + * License.  See the file "COPYING" in the main directory of this
> archive + * for more details.
> + *
> + * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@xxxxxxxxxxxxxx>
> + */
> +#ifndef __ASM_MIPS_MACH_JZ4740_WAR_H
> +#define __ASM_MIPS_MACH_JZ4740_WAR_H
> +
> +#define R4600_V1_INDEX_ICACHEOP_WAR	0
> +#define R4600_V1_HIT_CACHEOP_WAR	0
> +#define R4600_V2_HIT_CACHEOP_WAR	0
> +#define R5432_CP0_INTERRUPT_WAR		0
> +#define BCM1250_M3_WAR			0
> +#define SIBYTE_1956_WAR			0
> +#define MIPS4K_ICACHE_REFILL_WAR	0
> +#define MIPS_CACHE_SYNC_WAR		0
> +#define TX49XX_ICACHE_INDEX_INV_WAR	0
> +#define RM9000_CDEX_SMP_WAR		0
> +#define ICACHE_REFILLS_WORKAROUND_WAR	0
> +#define R10000_LLSC_WAR			0
> +#define MIPS34K_MISSED_ITLB_WAR		0
> +
> +#endif /* __ASM_MIPS_MACH_JZ4740_WAR_H */
> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
> index 3562b85..9b66331 100644
> --- a/arch/mips/kernel/cpu-probe.c
> +++ b/arch/mips/kernel/cpu-probe.c
> @@ -187,6 +187,7 @@ void __init check_wait(void)
>  	case CPU_BCM6358:
>  	case CPU_CAVIUM_OCTEON:
>  	case CPU_CAVIUM_OCTEON_PLUS:
> +	case CPU_JZRISC:
>  		cpu_wait = r4k_wait;
>  		break;
> 
> @@ -956,6 +957,22 @@ platform:
>  	}
>  }
> 
> +static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int
> cpu) +{
> +	decode_configs(c);
> +	/* JZRISC does not implement the CP0 counter. */
> +	c->options &= ~MIPS_CPU_COUNTER;
> +	switch (c->processor_id & 0xff00) {
> +	case PRID_IMP_JZRISC:
> +		c->cputype = CPU_JZRISC;
> +		__cpu_name[cpu] = "Ingenic JZRISC";
> +		break;
> +	default:
> +		panic("Unknown Ingenic Processor ID!");
> +		break;
> +	}
> +}
> +
>  const char *__cpu_name[NR_CPUS];
>  const char *__elf_platform;
> 
> @@ -994,6 +1011,9 @@ __cpuinit void cpu_probe(void)
>  	case PRID_COMP_CAVIUM:
>  		cpu_probe_cavium(c, cpu);
>  		break;
> +	case PRID_COMP_INGENIC:
> +		cpu_probe_ingenic(c, cpu);
> +		break;
>  	}
> 
>  	BUG_ON(!__cpu_name[cpu]);
> diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
> index 86f004d..4510e61 100644
> --- a/arch/mips/mm/tlbex.c
> +++ b/arch/mips/mm/tlbex.c
> @@ -409,6 +409,11 @@ static void __cpuinit build_tlb_write_entry(u32 **p,
> struct uasm_label **l, tlbw(p);
>  		break;
> 
> +	case CPU_JZRISC:
> +		tlbw(p);
> +		uasm_i_nop(p);
> +		break;
> +
>  	default:
>  		panic("No TLB refill handler yet (CPU type: %d)",
>  		      current_cpu_data.cputype);



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux