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