msf2-soc.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Microsemi Smartfusion2 SoC
  3. *
  4. * Copyright (c) 2017 Subbaraya Sundeep <sundeep.lkml@gmail.com>
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining a copy
  7. * of this software and associated documentation files (the "Software"), to deal
  8. * in the Software without restriction, including without limitation the rights
  9. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. * copies of the Software, and to permit persons to whom the Software is
  11. * furnished to do so, subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be included in
  14. * all copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  19. * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22. * THE SOFTWARE.
  23. */
  24. #ifndef HW_ARM_MSF2_SOC_H
  25. #define HW_ARM_MSF2_SOC_H
  26. #include "hw/arm/armv7m.h"
  27. #include "hw/timer/mss-timer.h"
  28. #include "hw/misc/msf2-sysreg.h"
  29. #include "hw/ssi/mss-spi.h"
  30. #include "hw/net/msf2-emac.h"
  31. #include "hw/clock.h"
  32. #include "qom/object.h"
  33. #define TYPE_MSF2_SOC "msf2-soc"
  34. OBJECT_DECLARE_SIMPLE_TYPE(MSF2State, MSF2_SOC)
  35. #define MSF2_NUM_SPIS 2
  36. #define MSF2_NUM_UARTS 2
  37. /*
  38. * System timer consists of two programmable 32-bit
  39. * decrementing counters that generate individual interrupts to
  40. * the Cortex-M3 processor
  41. */
  42. #define MSF2_NUM_TIMERS 2
  43. struct MSF2State {
  44. SysBusDevice parent_obj;
  45. ARMv7MState armv7m;
  46. char *part_name;
  47. uint64_t envm_size;
  48. uint64_t esram_size;
  49. Clock *m3clk;
  50. Clock *refclk;
  51. uint8_t apb0div;
  52. uint8_t apb1div;
  53. MSF2SysregState sysreg;
  54. MSSTimerState timer;
  55. MSSSpiState spi[MSF2_NUM_SPIS];
  56. MSF2EmacState emac;
  57. MemoryRegion nvm;
  58. MemoryRegion nvm_alias;
  59. MemoryRegion sram;
  60. };
  61. #endif