cvmx-flash.h revision 215990
1155852Sgallatin/***********************license start*************** 2155852Sgallatin * Copyright (c) 2003-2010 Cavium Networks (support@cavium.com). All rights 3188736Sgallatin * reserved. 4155852Sgallatin * 5155852Sgallatin * 6155852Sgallatin * Redistribution and use in source and binary forms, with or without 7155852Sgallatin * modification, are permitted provided that the following conditions are 8155852Sgallatin * met: 9155852Sgallatin * 10155852Sgallatin * * Redistributions of source code must retain the above copyright 11155852Sgallatin * notice, this list of conditions and the following disclaimer. 12171405Sgallatin * 13155852Sgallatin * * Redistributions in binary form must reproduce the above 14155852Sgallatin * copyright notice, this list of conditions and the following 15155852Sgallatin * disclaimer in the documentation and/or other materials provided 16155852Sgallatin * with the distribution. 17155852Sgallatin 18155852Sgallatin * * Neither the name of Cavium Networks nor the names of 19155852Sgallatin * its contributors may be used to endorse or promote products 20155852Sgallatin * derived from this software without specific prior written 21155852Sgallatin * permission. 22155852Sgallatin 23155852Sgallatin * This Software, including technical data, may be subject to U.S. export control 24155852Sgallatin * laws, including the U.S. Export Administration Act and its associated 25155852Sgallatin * regulations, and may be subject to export or import regulations in other 26155852Sgallatin * countries. 27155852Sgallatin 28155852Sgallatin * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 29155852Sgallatin * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR 30155852Sgallatin * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO 31159612Sgallatin * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR 32159612Sgallatin * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM 33155852Sgallatin * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE, 34159612Sgallatin * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF 35159612Sgallatin * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR 36159612Sgallatin * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR 37188736Sgallatin * PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 38155852Sgallatin ***********************license end**************************************/ 39155852Sgallatin 40155852Sgallatin 41155852Sgallatin 42155852Sgallatin 43155852Sgallatin 44155852Sgallatin 45155852Sgallatin 46155852Sgallatin/** 47155852Sgallatin * @file 48155852Sgallatin * 49159612Sgallatin * This file provides bootbus flash operations 50155852Sgallatin * 51155852Sgallatin * <hr>$Revision: 49448 $<hr> 52159612Sgallatin * 53159612Sgallatin * 54155852Sgallatin */ 55175365Sgallatin 56159612Sgallatin 57175365Sgallatin#ifndef __CVMX_FLASH_H__ 58175365Sgallatin#define __CVMX_FLASH_H__ 59175365Sgallatin 60175365Sgallatin#ifdef __cplusplus 61175365Sgallatinextern "C" { 62171917Sgallatin#endif 63175365Sgallatin 64175365Sgallatintypedef struct 65175365Sgallatin{ 66171917Sgallatin int start_offset; 67171917Sgallatin int block_size; 68171917Sgallatin int num_blocks; 69159612Sgallatin} cvmx_flash_region_t; 70159612Sgallatin 71159612Sgallatin/** 72175365Sgallatin * Initialize the flash access library 73155852Sgallatin */ 74171917Sgallatinvoid cvmx_flash_initialize(void); 75171917Sgallatin 76171917Sgallatin/** 77171917Sgallatin * Return a pointer to the flash chip 78171917Sgallatin * 79171917Sgallatin * @param chip_id Chip ID to return 80171917Sgallatin * @return NULL if the chip doesn't exist 81155852Sgallatin */ 82159612Sgallatinvoid *cvmx_flash_get_base(int chip_id); 83155852Sgallatin 84155852Sgallatin/** 85155852Sgallatin * Return the number of erasable regions on the chip 86155852Sgallatin * 87155852Sgallatin * @param chip_id Chip to return info for 88155852Sgallatin * @return Number of regions 89159612Sgallatin */ 90155852Sgallatinint cvmx_flash_get_num_regions(int chip_id); 91155852Sgallatin 92159612Sgallatin/** 93159612Sgallatin * Return information about a flash chips region 94155852Sgallatin * 95155852Sgallatin * @param chip_id Chip to get info for 96159612Sgallatin * @param region Region to get info for 97155852Sgallatin * @return Region information 98155852Sgallatin */ 99159612Sgallatinconst cvmx_flash_region_t *cvmx_flash_get_region_info(int chip_id, int region); 100159612Sgallatin 101155852Sgallatin/** 102155852Sgallatin * Erase a block on the flash chip 103155852Sgallatin * 104155852Sgallatin * @param chip_id Chip to erase a block on 105155852Sgallatin * @param region Region to erase a block in 106155852Sgallatin * @param block Block number to erase 107155852Sgallatin * @return Zero on success. Negative on failure 108155852Sgallatin */ 109155852Sgallatinint cvmx_flash_erase_block(int chip_id, int region, int block); 110155852Sgallatin 111155852Sgallatin/** 112155852Sgallatin * Write a block on the flash chip 113155852Sgallatin * 114155852Sgallatin * @param chip_id Chip to write a block on 115159612Sgallatin * @param region Region to write a block in 116155852Sgallatin * @param block Block number to write 117155852Sgallatin * @param data Data to write 118155852Sgallatin * @return Zero on success. Negative on failure 119155852Sgallatin */ 120159612Sgallatinint cvmx_flash_write_block(int chip_id, int region, int block, const void *data); 121159612Sgallatin 122159612Sgallatin/** 123159612Sgallatin * Erase and write data to a flash 124159612Sgallatin * 125159612Sgallatin * @param address Memory address to write to 126159612Sgallatin * @param data Data to write 127159612Sgallatin * @param len Length of the data 128159612Sgallatin * @return Zero on success. Negative on failure 129155852Sgallatin */ 130159612Sgallatinint cvmx_flash_write(void *address, const void *data, int len); 131159612Sgallatin 132155852Sgallatin#ifdef __cplusplus 133159612Sgallatin} 134155852Sgallatin#endif 135155852Sgallatin 136159612Sgallatin#endif /* __CVMX_FLASH_H__ */ 137159612Sgallatin