From 32f507ce5f66dd9c89a45854688f46bde33c5e3d Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 10 Nov 2010 09:20:50 +0100 Subject: Initial import of nios2sim (http://nios2sim.googlecode.com/svn/trunk/ r16) --- nor_flash.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 nor_flash.c (limited to 'nor_flash.c') diff --git a/nor_flash.c b/nor_flash.c new file mode 100644 index 0000000..3083735 --- /dev/null +++ b/nor_flash.c @@ -0,0 +1,108 @@ +/* + Nios-sim - one simple NIOSII simulator only for personal interest and fun. + Copyright (C) 2010 chysun2000@gmail.com + + 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; either version 2 of the License, or + (at your option) any later version. + + 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "public.h" +#include "niosii.h" +#include "io_device.h" +#include "nor_flash.h" + +static struct nor_flash_core_hw hw; + +static void flash_init(struct io_device * self) +{ + memset(&hw, 0x00, sizeof(struct nor_flash_core_hw)); + self->priv_data = &hw; + + hw.phys_base_addr = NOR_FLASH_BASE_ADDR; + hw.size = NOR_FLASH_SIZE; + hw.status = STATUS_READ; + hw.mem_base_addr = (unsigned char *)malloc(hw.size); + + printf("NOR Flash Module: PHYS:0x%08X at %p size:0x%08X\n", + hw.phys_base_addr, hw.mem_base_addr, hw.size); +} + +static int32_t flash_is_belong(uint32_t address) +{ + int32_t ret_val = ADDR_IS_NOT_DEV; + + if (address >= hw.phys_base_addr && address <(hw.phys_base_addr + hw.size)){ + ret_val = ADDR_IS_DEV; + } + return ret_val; +} + +/* only support 8bit access */ +static uint32_t flash_read(struct io_device * self, uint32_t addr, uint32_t data_len) +{ + uint32_t ret_val = 0; + uint8_t * data = (uint8_t *)hw.mem_base_addr; + + if(data_len == (hw.bus_width / 8)){ + ret_val = (uint32_t)(data[addr - hw.phys_base_addr]); + printf("%s->%x:%x\n",__func__,addr,ret_val); + } + return ret_val; +} + +static int32_t judge_special_addr(uint32_t addr) +{ + int32_t ret_val = SIM_TRUE; + return ret_val; +} + +static void handle_special_operation(uint32_t addr, uint32_t data) +{ + +} + +static void flash_write(struct io_device * self, uint32_t addr, uint32_t data, + uint32_t data_len) +{ + uint8_t * data_buf = (uint8_t *)hw.mem_base_addr; + + /* judge whether the address is the special address */ + if (judge_special_addr(addr) == SIM_TRUE){ + handle_special_operation(addr, data); + } else { + if (hw.status == STATUS_CHIP_ERASE || hw.status == STATUS_SECTION_ERASE){ + if (data_len == (hw.bus_width/8)){ + data_buf[(addr - hw.phys_base_addr)] = (uint8_t)(data & 0xFF); + } + } + } +} + +struct io_device nor_flash_core = { + .name = "NOR Flash Core", + .init = flash_init, + .is_belong = flash_is_belong, + .read_data = flash_read, + .write_data = flash_write, + .has_irq = NULL, + .simulate = NULL, + .irq_enable_mask = 0, +}; + +uint8_t * nor_flash_mem_addr(void) +{ + return hw.mem_base_addr; +} + + -- cgit v1.2.3-54-g00ecf /td>space:mode:
authorKamlakant Patel <kamlakant.patel@broadcom.com>2016-03-22 18:38:14 +0530
committerMark Brown <broonie@kernel.org>2016-03-23 13:37:10 +0000
commitbf23d1917d551487e85378c4f4a7a0efcfe77f4e (patch)
treeed19a96e7ccb441c984df0635d246d8945a752ca /Documentation/devicetree/bindings
parentc508709bcffb644afbf5e5016fc7c90bf80c30ff (diff)
spi: xlp: Enable SPI driver for Broadcom Vulcan ARM64
- Vulcan spi controller is compatible with netlogic,xlp832-spi. - Add depends on ARCH_VULCAN to Kconfig to enable spi controller driver for Broadcom Vulcan ARM64 SoCs. Signed-off-by: Kamlakant Patel <kamlakant.patel@broadcom.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'Documentation/devicetree/bindings')