You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
ARM: at91: make sdram/ddr register base soc independent
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
This commit is contained in:
committed by
Nicolas Ferre
parent
1a269ade22
commit
f363c407b4
@@ -320,6 +320,7 @@ static void __init at91rm9200_map_io(void)
|
||||
static void __init at91rm9200_ioremap_registers(void)
|
||||
{
|
||||
at91rm9200_ioremap_st(AT91RM9200_BASE_ST);
|
||||
at91_ioremap_ramc(0, AT91RM9200_BASE_MC, 256);
|
||||
}
|
||||
|
||||
static void __init at91rm9200_initialize(void)
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
@@ -241,15 +242,15 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
|
||||
data->chipselect = 4; /* can only use EBI ChipSelect 4 */
|
||||
|
||||
/* CF takes over CS4, CS5, CS6 */
|
||||
csa = at91_sys_read(AT91_EBI_CSA);
|
||||
at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH);
|
||||
csa = at91_ramc_read(0, AT91_EBI_CSA);
|
||||
at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH);
|
||||
|
||||
/*
|
||||
* Static memory controller timing adjustments.
|
||||
* REVISIT: these timings are in terms of MCK cycles, so
|
||||
* when MCK changes (cpufreq etc) so must these values...
|
||||
*/
|
||||
at91_sys_write(AT91_SMC_CSR(4),
|
||||
at91_ramc_write(0, AT91_SMC_CSR(4),
|
||||
AT91_SMC_ACSS_STD
|
||||
| AT91_SMC_DBW_16
|
||||
| AT91_SMC_BAT
|
||||
@@ -407,11 +408,11 @@ void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||
return;
|
||||
|
||||
/* enable the address range of CS3 */
|
||||
csa = at91_sys_read(AT91_EBI_CSA);
|
||||
at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA);
|
||||
csa = at91_ramc_read(0, AT91_EBI_CSA);
|
||||
at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA);
|
||||
|
||||
/* set the bus interface characteristics */
|
||||
at91_sys_write(AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN
|
||||
at91_ramc_write(0, AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN
|
||||
| AT91_SMC_NWS_(5)
|
||||
| AT91_SMC_TDF_(1)
|
||||
| AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */
|
||||
|
||||
@@ -325,6 +325,7 @@ static void __init at91sam9260_ioremap_registers(void)
|
||||
{
|
||||
at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC);
|
||||
at91_ioremap_rstc(AT91SAM9260_BASE_RSTC);
|
||||
at91_ioremap_ramc(0, AT91SAM9260_BASE_SDRAMC, 512);
|
||||
at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT);
|
||||
at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC);
|
||||
at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX);
|
||||
|
||||
@@ -283,6 +283,7 @@ static void __init at91sam9261_ioremap_registers(void)
|
||||
{
|
||||
at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC);
|
||||
at91_ioremap_rstc(AT91SAM9261_BASE_RSTC);
|
||||
at91_ioremap_ramc(0, AT91SAM9261_BASE_SDRAMC, 512);
|
||||
at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT);
|
||||
at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC);
|
||||
at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX);
|
||||
|
||||
@@ -303,6 +303,8 @@ static void __init at91sam9263_ioremap_registers(void)
|
||||
{
|
||||
at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC);
|
||||
at91_ioremap_rstc(AT91SAM9263_BASE_RSTC);
|
||||
at91_ioremap_ramc(0, AT91SAM9263_BASE_SDRAMC0, 512);
|
||||
at91_ioremap_ramc(1, AT91SAM9263_BASE_SDRAMC1, 512);
|
||||
at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT);
|
||||
at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0);
|
||||
at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1);
|
||||
|
||||
@@ -15,16 +15,17 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/at91sam9_sdramc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
#include <mach/at91_rstc.h>
|
||||
|
||||
.arm
|
||||
|
||||
.globl at91sam9_alt_restart
|
||||
|
||||
at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants
|
||||
ldr r1, =at91_rstc_base
|
||||
ldr r1, [r1]
|
||||
at91sam9_alt_restart: ldr r0, =at91_ramc_base @ preload constants
|
||||
ldr r0, [r0]
|
||||
ldr r4, =at91_rstc_base
|
||||
ldr r1, [r4]
|
||||
|
||||
mov r2, #1
|
||||
mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN
|
||||
@@ -37,6 +38,3 @@ at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants
|
||||
str r4, [r1, #AT91_RSTC_CR] @ reset processor
|
||||
|
||||
b .
|
||||
|
||||
.at91_va_base_sdramc:
|
||||
.word AT91_VA_BASE_SYS + AT91_SDRAMC0
|
||||
|
||||
@@ -331,6 +331,8 @@ static void __init at91sam9g45_ioremap_registers(void)
|
||||
{
|
||||
at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC);
|
||||
at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC);
|
||||
at91_ioremap_ramc(0, AT91SAM9G45_BASE_DDRSDRC1, 512);
|
||||
at91_ioremap_ramc(1, AT91SAM9G45_BASE_DDRSDRC0, 512);
|
||||
at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT);
|
||||
at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC);
|
||||
at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/at91sam9_ddrsdr.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
#include <mach/at91_rstc.h>
|
||||
|
||||
.arm
|
||||
@@ -20,9 +20,10 @@
|
||||
.globl at91sam9g45_restart
|
||||
|
||||
at91sam9g45_restart:
|
||||
ldr r0, .at91_va_base_sdramc0 @ preload constants
|
||||
ldr r1, =at91_rstc_base
|
||||
ldr r1, [r1]
|
||||
ldr r5, =at91_ramc_base @ preload constants
|
||||
ldr r0, [r5]
|
||||
ldr r4, =at91_rstc_base
|
||||
ldr r1, [r4]
|
||||
|
||||
mov r2, #1
|
||||
mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN
|
||||
@@ -35,6 +36,3 @@ at91sam9g45_restart:
|
||||
str r4, [r1, #AT91_RSTC_CR] @ reset processor
|
||||
|
||||
b .
|
||||
|
||||
.at91_va_base_sdramc0:
|
||||
.word AT91_VA_BASE_SYS + AT91_DDRSDRC0
|
||||
|
||||
@@ -288,6 +288,7 @@ static void __init at91sam9rl_ioremap_registers(void)
|
||||
{
|
||||
at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC);
|
||||
at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC);
|
||||
at91_ioremap_ramc(0, AT91SAM9RL_BASE_SDRAMC, 512);
|
||||
at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT);
|
||||
at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC);
|
||||
at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX);
|
||||
|
||||
@@ -303,6 +303,7 @@ static void __init at91sam9x5_ioremap_registers(void)
|
||||
{
|
||||
if (of_at91sam926x_pit_init() < 0)
|
||||
panic("Impossible to find PIT\n");
|
||||
at91_ioremap_ramc(0, AT91SAM9X5_BASE_DDRSDRC0, 512);
|
||||
}
|
||||
|
||||
void __init at91sam9x5_initialize(void)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
#include <mach/cpu.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
#include <mach/cpu.h>
|
||||
|
||||
#include "generic.h"
|
||||
@@ -110,7 +111,7 @@ static void __init eco920_board_init(void)
|
||||
at91_add_device_mmc(0, &eco920_mmc_data);
|
||||
platform_device_register(&eco920_flash);
|
||||
|
||||
at91_sys_write(AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1)
|
||||
at91_ramc_write(0, AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1)
|
||||
| AT91_SMC_RWSETUP_(1)
|
||||
| AT91_SMC_DBW_8
|
||||
| AT91_SMC_WSEN
|
||||
@@ -122,7 +123,7 @@ static void __init eco920_board_init(void)
|
||||
at91_set_deglitch(AT91_PIN_PA23, 1);
|
||||
|
||||
/* Initialization of the Static Memory Controller for Chip Select 3 */
|
||||
at91_sys_write(AT91_SMC_CSR(3),
|
||||
at91_ramc_write(0, AT91_SMC_CSR(3),
|
||||
AT91_SMC_DBW_16 | /* 16 bit */
|
||||
AT91_SMC_WSEN |
|
||||
AT91_SMC_NWS_(5) | /* wait states */
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <mach/board.h>
|
||||
#include <mach/cpu.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/board.h>
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#include <mach/at91_ramc.h>
|
||||
#include <mach/cpu.h>
|
||||
|
||||
#include "generic.h"
|
||||
@@ -393,7 +394,7 @@ static void yl9200_init_video(void)
|
||||
at91_set_A_periph(AT91_PIN_PC6, 0);
|
||||
|
||||
/* Initialization of the Static Memory Controller for Chip Select 2 */
|
||||
at91_sys_write(AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */
|
||||
at91_ramc_write(0, AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */
|
||||
| AT91_SMC_WSEN | AT91_SMC_NWS_(0x4) /* wait states */
|
||||
| AT91_SMC_TDF_(0x100) /* float time */
|
||||
);
|
||||
|
||||
@@ -71,6 +71,9 @@ extern void at91_ioremap_shdwc(u32 base_addr);
|
||||
/* Matrix */
|
||||
extern void at91_ioremap_matrix(u32 base_addr);
|
||||
|
||||
/* Ram Controler */
|
||||
extern void at91_ioremap_ramc(int id, u32 addr, u32 size);
|
||||
|
||||
/* GPIO */
|
||||
#define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */
|
||||
#define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Header file for the Atmel RAM Controller
|
||||
*
|
||||
* Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
|
||||
*
|
||||
* Under GPLv2 only
|
||||
*/
|
||||
|
||||
#ifndef __AT91_RAMC_H__
|
||||
#define __AT91_RAMC_H__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
extern void __iomem *at91_ramc_base[];
|
||||
|
||||
#define at91_ramc_read(id, field) \
|
||||
__raw_readl(at91_ramc_base[id] + field)
|
||||
|
||||
#define at91_ramc_write(id, field, value) \
|
||||
__raw_writel(value, at91_ramc_base[id] + field)
|
||||
#else
|
||||
.extern at91_ramc_base
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_AT91RM9200
|
||||
#include <mach/at91rm9200_mc.h>
|
||||
#else
|
||||
#include <mach/at91sam9_ddrsdr.h>
|
||||
#include <mach/at91sam9_sdramc.h>
|
||||
#endif
|
||||
|
||||
#endif /* __AT91_RAMC_H__ */
|
||||
@@ -80,7 +80,6 @@
|
||||
* System Peripherals (offset from AT91_BASE_SYS)
|
||||
*/
|
||||
#define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */
|
||||
#define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */
|
||||
|
||||
#define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */
|
||||
#define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */
|
||||
@@ -89,6 +88,7 @@
|
||||
#define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */
|
||||
#define AT91RM9200_BASE_ST 0xfffffd00 /* System Timer */
|
||||
#define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */
|
||||
#define AT91RM9200_BASE_MC 0xffffff00 /* Memory Controllers */
|
||||
|
||||
#define AT91_USART0 AT91RM9200_BASE_US0
|
||||
#define AT91_USART1 AT91RM9200_BASE_US1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user