cvmx-flash.h revision 210284
1210284Sjmallett/***********************license start*************** 2210284Sjmallett * Copyright (c) 2003-2008 Cavium Networks (support@cavium.com). All rights 3210284Sjmallett * reserved. 4210284Sjmallett * 5210284Sjmallett * 6210284Sjmallett * Redistribution and use in source and binary forms, with or without 7210284Sjmallett * modification, are permitted provided that the following conditions are 8210284Sjmallett * met: 9210284Sjmallett * 10210284Sjmallett * * Redistributions of source code must retain the above copyright 11210284Sjmallett * notice, this list of conditions and the following disclaimer. 12210284Sjmallett * 13210284Sjmallett * * Redistributions in binary form must reproduce the above 14210284Sjmallett * copyright notice, this list of conditions and the following 15210284Sjmallett * disclaimer in the documentation and/or other materials provided 16210284Sjmallett * with the distribution. 17210284Sjmallett * 18210284Sjmallett * * Neither the name of Cavium Networks nor the names of 19210284Sjmallett * its contributors may be used to endorse or promote products 20210284Sjmallett * derived from this software without specific prior written 21210284Sjmallett * permission. 22210284Sjmallett * 23210284Sjmallett * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 24210284Sjmallett * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS 25210284Sjmallett * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH 26210284Sjmallett * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY 27210284Sjmallett * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT 28210284Sjmallett * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES 29210284Sjmallett * OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR 30210284Sjmallett * PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET 31210284Sjmallett * POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT 32210284Sjmallett * OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 33210284Sjmallett * 34210284Sjmallett * 35210284Sjmallett * For any questions regarding licensing please contact marketing@caviumnetworks.com 36210284Sjmallett * 37210284Sjmallett ***********************license end**************************************/ 38210284Sjmallett 39210284Sjmallett 40210284Sjmallett 41210284Sjmallett 42210284Sjmallett 43210284Sjmallett 44210284Sjmallett/** 45210284Sjmallett * @file 46210284Sjmallett * 47210284Sjmallett * This file provides bootbus flash operations 48210284Sjmallett * 49210284Sjmallett * <hr>$Revision: 41586 $<hr> 50210284Sjmallett * 51210284Sjmallett * 52210284Sjmallett */ 53210284Sjmallett 54210284Sjmallett 55210284Sjmallett#ifndef __CVMX_FLASH_H__ 56210284Sjmallett#define __CVMX_FLASH_H__ 57210284Sjmallett 58210284Sjmallett#ifdef __cplusplus 59210284Sjmallettextern "C" { 60210284Sjmallett#endif 61210284Sjmallett 62210284Sjmalletttypedef struct 63210284Sjmallett{ 64210284Sjmallett int start_offset; 65210284Sjmallett int block_size; 66210284Sjmallett int num_blocks; 67210284Sjmallett} cvmx_flash_region_t; 68210284Sjmallett 69210284Sjmallett/** 70210284Sjmallett * Initialize the flash access library 71210284Sjmallett */ 72210284Sjmallettvoid cvmx_flash_initialize(void); 73210284Sjmallett 74210284Sjmallett/** 75210284Sjmallett * Return a pointer to the flash chip 76210284Sjmallett * 77210284Sjmallett * @param chip_id Chip ID to return 78210284Sjmallett * @return NULL if the chip doesn't exist 79210284Sjmallett */ 80210284Sjmallettvoid *cvmx_flash_get_base(int chip_id); 81210284Sjmallett 82210284Sjmallett/** 83210284Sjmallett * Return the number of erasable regions on the chip 84210284Sjmallett * 85210284Sjmallett * @param chip_id Chip to return info for 86210284Sjmallett * @return Number of regions 87210284Sjmallett */ 88210284Sjmallettint cvmx_flash_get_num_regions(int chip_id); 89210284Sjmallett 90210284Sjmallett/** 91210284Sjmallett * Return information about a flash chips region 92210284Sjmallett * 93210284Sjmallett * @param chip_id Chip to get info for 94210284Sjmallett * @param region Region to get info for 95210284Sjmallett * @return Region information 96210284Sjmallett */ 97210284Sjmallettconst cvmx_flash_region_t *cvmx_flash_get_region_info(int chip_id, int region); 98210284Sjmallett 99210284Sjmallett/** 100210284Sjmallett * Erase a block on the flash chip 101210284Sjmallett * 102210284Sjmallett * @param chip_id Chip to erase a block on 103210284Sjmallett * @param region Region to erase a block in 104210284Sjmallett * @param block Block number to erase 105210284Sjmallett * @return Zero on success. Negative on failure 106210284Sjmallett */ 107210284Sjmallettint cvmx_flash_erase_block(int chip_id, int region, int block); 108210284Sjmallett 109210284Sjmallett/** 110210284Sjmallett * Write a block on the flash chip 111210284Sjmallett * 112210284Sjmallett * @param chip_id Chip to write a block on 113210284Sjmallett * @param region Region to write a block in 114210284Sjmallett * @param block Block number to write 115210284Sjmallett * @param data Data to write 116210284Sjmallett * @return Zero on success. Negative on failure 117210284Sjmallett */ 118210284Sjmallettint cvmx_flash_write_block(int chip_id, int region, int block, const void *data); 119210284Sjmallett 120210284Sjmallett/** 121210284Sjmallett * Erase and write data to a flash 122210284Sjmallett * 123210284Sjmallett * @param address Memory address to write to 124210284Sjmallett * @param data Data to write 125210284Sjmallett * @param len Length of the data 126210284Sjmallett * @return Zero on success. Negative on failure 127210284Sjmallett */ 128210284Sjmallettint cvmx_flash_write(void *address, const void *data, int len); 129210284Sjmallett 130210284Sjmallett#ifdef __cplusplus 131210284Sjmallett} 132210284Sjmallett#endif 133210284Sjmallett 134210284Sjmallett#endif /* __CVMX_FLASH_H__ */ 135