All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 02/06] Sram Driver Support for 3430
       [not found] <F6FE727D1D69E340844C253265136D5D0421FFB5@dbde01.ent.ti.com>
@ 2008-03-13 11:28 ` Tony Lindgren
  0 siblings, 0 replies; only message in thread
From: Tony Lindgren @ 2008-03-13 11:28 UTC (permalink / raw)
  To: Dasu, Karthik P; +Cc: linux-omap

* Dasu, Karthik P <karthik-dp@ti.com> [080303 23:54]:
> Sram Driver support for 3430

I've pushed the 34xx SRAM init part of this.

Tony

> Signed-off-by: Karthik Dasu<karthik-dp@ti.com>
> Acked-by: Richard Woodruff <r-woodruff2@ti.com>
> Acked-by: Vikram Pandita <vikram.pandita@ti.com>
> ---
>  arch/arm/plat-omap/sram.c        |  105 +++++++++++++++++++++++++++++++++++----
>  include/asm-arm/arch-omap/sram.h |    8 ++
>  2 files changed, 103 insertions(+), 10 deletions(-)
> 
> Index: git-latest5/arch/arm/plat-omap/sram.c
> ===================================================================
> --- git-latest5.orig/arch/arm/plat-omap/sram.c	2008-02-29 21:54:22.276024670 +0530
> +++ git-latest5/arch/arm/plat-omap/sram.c	2008-02-29 21:55:31.614787643 +0530
> @@ -39,6 +39,10 @@
>  #define OMAP2_SRAM_PUB_PA	0x4020f800
>  #define OMAP2_SRAM_VA		VMALLOC_END
>  #define OMAP2_SRAM_PUB_VA	(VMALLOC_END + 0x800)
> +#define OMAP3_SRAM_PA           0x40200000
> +#define OMAP3_SRAM_VA           0xd7000000
> +#define OMAP3_SRAM_PUB_PA       0x40208000
> +#define OMAP3_SRAM_PUB_VA       0xd7008000
>  
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  #define SRAM_BOOTLOADER_SZ	0x00
> @@ -46,9 +50,19 @@
>  #define SRAM_BOOTLOADER_SZ	0x80
>  #endif
>  
> +#if defined(CONFIG_ARCH_OMAP34XX)
> +#define VA_REQINFOPERM0         IO_ADDRESS(0x68012848)
> +#define VA_READPERM0            IO_ADDRESS(0x68012850)
> 	+#define VA_WRITEPERM0           IO_ADDRESS(0x68012858)
> +#else
>  #define VA_REQINFOPERM0		IO_ADDRESS(0x68005048)
>  #define VA_READPERM0		IO_ADDRESS(0x68005050)
>  #define VA_WRITEPERM0		IO_ADDRESS(0x68005058)
> +#endif
> +#define VA_ADDR_MATCH2          IO_ADDRESS(0x68012880)
> +#define VA_SMS_RG_ATT0          IO_ADDRESS(0x6C000048)
> +#define VA_CONTROL_STAT         IO_ADDRESS(0x480022F0)
> +
>  #define GP_DEVICE		0x300
>  
>  #define ROUND_DOWN(value,boundary)	((value) & (~((boundary)-1)))
> @@ -102,6 +116,13 @@
>  			__raw_writel(0xCFDE, VA_READPERM0);  /* all i-read */
>  			__raw_writel(0xCFDE, VA_WRITEPERM0); /* all i-write */
>  		}
> +		if (cpu_is_omap34xx()) {
> +			__raw_writel(0xFFFF, VA_REQINFOPERM0); /* all q-vects */
> +			__raw_writel(0xFFFF, VA_READPERM0);  /* all i-read */
> +			__raw_writel(0xFFFF, VA_WRITEPERM0); /* all i-write */
> +			__raw_writel(0x0, VA_ADDR_MATCH2);
> +			__raw_writel(0xFFFFFFFF, VA_SMS_RG_ATT0);
> +		}
>  		return 0;
>  	} else
>  		return 1; /* assume locked with no PPA or security driver */
> @@ -119,16 +140,28 @@
>  
>  	if (cpu_class_is_omap2()) {
>  		if (is_sram_locked()) {
> -			omap_sram_base = OMAP2_SRAM_PUB_VA;
> -			omap_sram_start = OMAP2_SRAM_PUB_PA;
> -			omap_sram_size = 0x800; /* 2K */
> +			if (cpu_is_omap34xx()) {
> +				omap_sram_base = OMAP3_SRAM_PUB_VA;
> +				omap_sram_start = OMAP3_SRAM_PUB_PA;
> +				omap_sram_size = 0x8000; /* 32K */
> +			} else {
> +				omap_sram_base = OMAP2_SRAM_PUB_VA;
> +				omap_sram_start = OMAP2_SRAM_PUB_PA;
> +				omap_sram_size = 0x800; /* 2K */
> +			}
>  		} else {
> -			omap_sram_base = OMAP2_SRAM_VA;
> -			omap_sram_start = OMAP2_SRAM_PA;
> -			if (cpu_is_omap242x())
> -				omap_sram_size = 0xa0000; /* 640K */
> -			else if (cpu_is_omap243x() || cpu_is_omap34xx())
> +			if (cpu_is_omap34xx()) {
> +				omap_sram_base = OMAP3_SRAM_VA;
> +				omap_sram_start = OMAP3_SRAM_PA;
>  				omap_sram_size = 0x10000; /* 64K */
> +			} else {
> +				omap_sram_base = OMAP2_SRAM_VA;
> +				omap_sram_start = OMAP2_SRAM_PA;
> +				if (cpu_is_omap242x())
> +					omap_sram_size = 0xa0000; /* 640K */
> +				else if (cpu_is_omap243x())
> +					omap_sram_size = 0x10000; /* 64K */
> +			}
>  		}
>  	} else {
>  		omap_sram_base = OMAP1_SRAM_VA;
> @@ -174,7 +207,7 @@
>  	if (omap_sram_size == 0)
>  		return;
>  
> -	if (cpu_class_is_omap2()) {
> +	if (cpu_is_omap24xx()) {
>  		omap_sram_io_desc[0].virtual = OMAP2_SRAM_VA;
>  
>  		base = OMAP2_SRAM_PA;
> @@ -182,6 +215,13 @@
>  		omap_sram_io_desc[0].pfn = __phys_to_pfn(base);
>  	}
>  
> +	if (cpu_is_omap34xx()) {
> +		omap_sram_io_desc[0].virtual = OMAP3_SRAM_VA;
> +		base = OMAP3_SRAM_PA;
> +		base = ROUND_DOWN(base, PAGE_SIZE);
> +		omap_sram_io_desc[0].pfn = __phys_to_pfn(base);
> +	}
> +
>  	omap_sram_io_desc[0].length = 1024 * 1024;	/* Use section desc */
>  	iotable_init(omap_sram_io_desc, ARRAY_SIZE(omap_sram_io_desc));
>  
> @@ -336,6 +376,9 @@
>  	return _omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type);
>  }
>  
> +#endif
> +
> +#if !defined(CONFIG_OMAP3_PM)
>  static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
>  
>  u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass)
> @@ -346,8 +389,38 @@
>  	return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass);
>  }
>  
> +#endif
> +
> +#if defined(CONFIG_OMAP3_PM)
> +static u32 (*_omap3_configure_core_dpll)(u32 m, u32 n, u32 freqsel, u32 m2);
> +
> +u32 omap3_configure_core_dpll(u32 m, u32 n, u32 freqsel, u32 m2)
> +{
> +	if (!_omap3_configure_core_dpll)
> +		omap_sram_error();
> +	return _omap3_configure_core_dpll(m, n, freqsel, m2);
> +}
> +
> +static u32 (*_omap3_sram_reprogram_gpmc)(u32 perf_level);
> +
> +u32 omap3_sram_reprogram_gpmc(u32 perf_level)
> +{
> +	if (!_omap3_sram_reprogram_gpmc)
> +		omap_sram_error();
> +
> +	return _omap3_sram_reprogram_gpmc(perf_level);
> +}
> +#endif
> +
> +#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
>  int __init omap2_sram_init(void)
>  {
> +#if defined(CONFIG_OMAP3_PM)
> +	_omap3_configure_core_dpll = omap_sram_push(sram_configure_core_dpll,
> +			sram_configure_core_dpll_sz);
> +	_omap3_sram_reprogram_gpmc = omap_sram_push(sram_reprogram_gpmc,
> +			sram_reprogram_gpmc_sz);
> +#else
>  	_omap2_sram_ddr_init = omap_sram_push(sram_ddr_init, sram_ddr_init_sz);
>  
>  	/* Patch in the correct register addresses for multiboot */
> @@ -403,7 +476,7 @@
>  	omap_sram_patch_va(sram_set_prcm, &omap2_ssp_dlla_ctrl,
>  			   _omap2_set_prcm,
>  			   OMAP_SDRC_REGADDR(SDRC_DLLA_CTRL));
> -
> +#endif
>  	return 0;
>  }
>  #else
> @@ -422,3 +495,15 @@
>  
>  	return 0;
>  }
> +
> +#if defined(CONFIG_OMAP3_PM)
> +void restore_sram_functions(void)
> +{
> +	omap_sram_ceil = omap_sram_base + omap_sram_size;
> +	_omap3_configure_core_dpll =
> +		omap_sram_push(sram_configure_core_dpll,
> +		sram_configure_core_dpll_sz);
> +	_omap3_sram_reprogram_gpmc = omap_sram_push(sram_reprogram_gpmc,
> +		sram_reprogram_gpmc_sz);
> +}
> +#endif
> Index: git-latest5/include/asm-arm/arch-omap/sram.h
> ===================================================================
> --- git-latest5.orig/include/asm-arm/arch-omap/sram.h	2008-02-29 21:54:22.276024670 +0530
> +++ git-latest5/include/asm-arm/arch-omap/sram.h	2008-02-29 21:55:31.615787611 +0530
> @@ -37,4 +37,12 @@
>  extern void sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type);
>  extern unsigned long sram_reprogram_sdrc_sz;
>  
> +#if defined(CONFIG_ARCH_OMAP34XX)
> +extern u32 sram_reprogram_gpmc(u32 perf_level);
> +extern unsigned long sram_reprogram_gpmc_sz;
> +
> +extern u32 sram_configure_core_dpll(u32 m, u32 n, u32 freqsel, u32 m2);
> +extern unsigned long sram_configure_core_dpll_sz;
> +#endif
> +
>  #endif
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-03-13 11:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <F6FE727D1D69E340844C253265136D5D0421FFB5@dbde01.ent.ti.com>
2008-03-13 11:28 ` [PATCH 02/06] Sram Driver Support for 3430 Tony Lindgren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.