aspeed_adc.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Aspeed ADC
  3. *
  4. * Copyright 2017-2021 IBM Corp.
  5. *
  6. * Andrew Jeffery <andrew@aj.id.au>
  7. *
  8. * SPDX-License-Identifier: GPL-2.0-or-later
  9. */
  10. #ifndef HW_ADC_ASPEED_ADC_H
  11. #define HW_ADC_ASPEED_ADC_H
  12. #include "hw/sysbus.h"
  13. #define TYPE_ASPEED_ADC "aspeed.adc"
  14. #define TYPE_ASPEED_2400_ADC TYPE_ASPEED_ADC "-ast2400"
  15. #define TYPE_ASPEED_2500_ADC TYPE_ASPEED_ADC "-ast2500"
  16. #define TYPE_ASPEED_2600_ADC TYPE_ASPEED_ADC "-ast2600"
  17. #define TYPE_ASPEED_1030_ADC TYPE_ASPEED_ADC "-ast1030"
  18. #define TYPE_ASPEED_2700_ADC TYPE_ASPEED_ADC "-ast2700"
  19. OBJECT_DECLARE_TYPE(AspeedADCState, AspeedADCClass, ASPEED_ADC)
  20. #define TYPE_ASPEED_ADC_ENGINE "aspeed.adc.engine"
  21. OBJECT_DECLARE_SIMPLE_TYPE(AspeedADCEngineState, ASPEED_ADC_ENGINE)
  22. #define ASPEED_ADC_NR_CHANNELS 16
  23. #define ASPEED_ADC_NR_REGS (0xD0 >> 2)
  24. struct AspeedADCEngineState {
  25. /* <private> */
  26. SysBusDevice parent;
  27. MemoryRegion mmio;
  28. qemu_irq irq;
  29. uint32_t engine_id;
  30. uint32_t nr_channels;
  31. uint32_t regs[ASPEED_ADC_NR_REGS];
  32. };
  33. struct AspeedADCState {
  34. /* <private> */
  35. SysBusDevice parent;
  36. MemoryRegion mmio;
  37. qemu_irq irq;
  38. AspeedADCEngineState engines[2];
  39. };
  40. struct AspeedADCClass {
  41. SysBusDeviceClass parent_class;
  42. uint32_t nr_engines;
  43. };
  44. #endif /* HW_ADC_ASPEED_ADC_H */