alt_flash_dev.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #ifndef __ALT_FLASH_DEV_H__
  2. /******************************************************************************
  3. * *
  4. * License Agreement *
  5. * *
  6. * Copyright (c) 2015 Altera Corporation, San Jose, California, USA. *
  7. * All rights reserved. *
  8. * *
  9. * Permission is hereby granted, free of charge, to any person obtaining a *
  10. * copy of this software and associated documentation files (the "Software"), *
  11. * to deal in the Software without restriction, including without limitation *
  12. * the rights to use, copy, modify, merge, publish, distribute, sublicense, *
  13. * and/or sell copies of the Software, and to permit persons to whom the *
  14. * Software is furnished to do so, subject to the following conditions: *
  15. * *
  16. * The above copyright notice and this permission notice shall be included in *
  17. * all copies or substantial portions of the Software. *
  18. * *
  19. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
  20. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
  21. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
  22. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
  23. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *
  24. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *
  25. * DEALINGS IN THE SOFTWARE. *
  26. * *
  27. * This agreement shall be governed in all respects by the laws of the State *
  28. * of California and by the laws of the United States of America. *
  29. * *
  30. * Altera does not recommend, suggest or require that this reference design *
  31. * file be used in conjunction or combination with any other product. *
  32. ******************************************************************************/
  33. /******************************************************************************
  34. * *
  35. * THIS IS A LIBRARY READ-ONLY SOURCE FILE. DO NOT EDIT. *
  36. * *
  37. ******************************************************************************/
  38. /******************************************************************************
  39. * *
  40. * Alt_flash_dev.h - Generic Flash device interfaces *
  41. * *
  42. * Author PRR *
  43. * *
  44. ******************************************************************************/
  45. #define __ALT_FLASH_DEV_H__
  46. #include "alt_flash_types.h"
  47. #include "sys/alt_llist.h"
  48. #include "priv/alt_dev_llist.h"
  49. #include "alt_types.h"
  50. typedef struct alt_flash_dev alt_flash_dev;
  51. typedef alt_flash_dev alt_flash_fd;
  52. static ALT_INLINE int alt_flash_device_register( alt_flash_fd* fd)
  53. {
  54. extern alt_llist alt_flash_dev_list;
  55. return alt_dev_llist_insert ((alt_dev_llist*) fd, &alt_flash_dev_list);
  56. }
  57. typedef alt_flash_dev* (*alt_flash_open)(alt_flash_dev* flash,
  58. const char* name );
  59. typedef int (*alt_flash_close)(alt_flash_dev* flash_info);
  60. typedef int (*alt_flash_write)( alt_flash_dev* flash, int offset,
  61. const void* src_addr, int length );
  62. typedef int (*alt_flash_get_flash_info)( alt_flash_dev* flash, flash_region** info,
  63. int* number_of_regions);
  64. typedef int (*alt_flash_write_block)( alt_flash_dev* flash, int block_offset,
  65. int data_offset, const void* data,
  66. int length);
  67. typedef int (*alt_flash_erase_block)( alt_flash_dev* flash, int offset);
  68. typedef int (*alt_flash_read)(alt_flash_dev* flash, int offset,
  69. void* dest_addr, int length );
  70. typedef int (*alt_flash_lock)(alt_flash_dev* flash, alt_u32 sectors_to_lock);
  71. struct alt_flash_dev
  72. {
  73. alt_llist llist;
  74. const char* name;
  75. alt_flash_open open;
  76. alt_flash_close close;
  77. alt_flash_write write;
  78. alt_flash_read read;
  79. alt_flash_get_flash_info get_info;
  80. alt_flash_erase_block erase_block;
  81. alt_flash_write_block write_block;
  82. void* base_addr;
  83. int length;
  84. int number_of_regions;
  85. flash_region region_info[ALT_MAX_NUMBER_OF_FLASH_REGIONS];
  86. alt_flash_lock lock;
  87. };
  88. #endif /* __ALT_FLASH_DEV_H__ */