aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/gpmc.c20
-rw-r--r--arch/arm/plat-omap/include/plat/gpmc.h18
2 files changed, 38 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index b2b5759ab0fe..5cce9b00c13e 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -682,6 +682,26 @@ int gpmc_prefetch_reset(int cs)
682} 682}
683EXPORT_SYMBOL(gpmc_prefetch_reset); 683EXPORT_SYMBOL(gpmc_prefetch_reset);
684 684
685void gpmc_update_nand_reg(struct gpmc_nand_regs *reg, int cs)
686{
687 reg->gpmc_status = gpmc_base + GPMC_STATUS;
688 reg->gpmc_nand_command = gpmc_base + GPMC_CS0_OFFSET +
689 GPMC_CS_NAND_COMMAND + GPMC_CS_SIZE * cs;
690 reg->gpmc_nand_address = gpmc_base + GPMC_CS0_OFFSET +
691 GPMC_CS_NAND_ADDRESS + GPMC_CS_SIZE * cs;
692 reg->gpmc_nand_data = gpmc_base + GPMC_CS0_OFFSET +
693 GPMC_CS_NAND_DATA + GPMC_CS_SIZE * cs;
694 reg->gpmc_prefetch_config1 = gpmc_base + GPMC_PREFETCH_CONFIG1;
695 reg->gpmc_prefetch_config2 = gpmc_base + GPMC_PREFETCH_CONFIG2;
696 reg->gpmc_prefetch_control = gpmc_base + GPMC_PREFETCH_CONTROL;
697 reg->gpmc_prefetch_status = gpmc_base + GPMC_PREFETCH_STATUS;
698 reg->gpmc_ecc_config = gpmc_base + GPMC_ECC_CONFIG;
699 reg->gpmc_ecc_control = gpmc_base + GPMC_ECC_CONTROL;
700 reg->gpmc_ecc_size_config = gpmc_base + GPMC_ECC_SIZE_CONFIG;
701 reg->gpmc_ecc1_result = gpmc_base + GPMC_ECC1_RESULT;
702 reg->gpmc_bch_result0 = gpmc_base + GPMC_ECC_BCH_RESULT_0;
703}
704
685static void __init gpmc_mem_init(void) 705static void __init gpmc_mem_init(void)
686{ 706{
687 int cs; 707 int cs;
diff --git a/arch/arm/plat-omap/include/plat/gpmc.h b/arch/arm/plat-omap/include/plat/gpmc.h
index f37764a36072..06198a51c4f0 100644
--- a/arch/arm/plat-omap/include/plat/gpmc.h
+++ b/arch/arm/plat-omap/include/plat/gpmc.h
@@ -133,6 +133,24 @@ struct gpmc_timings {
133 u16 wr_data_mux_bus; /* WRDATAONADMUXBUS */ 133 u16 wr_data_mux_bus; /* WRDATAONADMUXBUS */
134}; 134};
135 135
136struct gpmc_nand_regs {
137 void __iomem *gpmc_status;
138 void __iomem *gpmc_nand_command;
139 void __iomem *gpmc_nand_address;
140 void __iomem *gpmc_nand_data;
141 void __iomem *gpmc_prefetch_config1;
142 void __iomem *gpmc_prefetch_config2;
143 void __iomem *gpmc_prefetch_control;
144 void __iomem *gpmc_prefetch_status;
145 void __iomem *gpmc_ecc_config;
146 void __iomem *gpmc_ecc_control;
147 void __iomem *gpmc_ecc_size_config;
148 void __iomem *gpmc_ecc1_result;
149 void __iomem *gpmc_bch_result0;
150};
151
152extern void gpmc_update_nand_reg(struct gpmc_nand_regs *reg, int cs);
153
136extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns); 154extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns);
137extern unsigned int gpmc_ps_to_ticks(unsigned int time_ps); 155extern unsigned int gpmc_ps_to_ticks(unsigned int time_ps);
138extern unsigned int gpmc_ticks_to_ns(unsigned int ticks); 156extern unsigned int gpmc_ticks_to_ns(unsigned int ticks);