qemu/include/hw/arm/bcm2836.h
<<
>>
Prefs
   1/*
   2 * Raspberry Pi emulation (c) 2012 Gregory Estrade
   3 * Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous
   4 *
   5 * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft
   6 * Written by Andrew Baumann
   7 *
   8 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   9 * See the COPYING file in the top-level directory.
  10 */
  11
  12#ifndef BCM2836_H
  13#define BCM2836_H
  14
  15#include "hw/arm/bcm2835_peripherals.h"
  16#include "hw/intc/bcm2836_control.h"
  17#include "target/arm/cpu.h"
  18#include "qom/object.h"
  19
  20#define TYPE_BCM283X "bcm283x"
  21OBJECT_DECLARE_TYPE(BCM283XState, BCM283XClass, BCM283X)
  22
  23#define BCM283X_NCPUS 4
  24
  25/* These type names are for specific SoCs; other than instantiating
  26 * them, code using these devices should always handle them via the
  27 * BCM283x base class, so they have no BCM2836(obj) etc macros.
  28 */
  29#define TYPE_BCM2835 "bcm2835"
  30#define TYPE_BCM2836 "bcm2836"
  31#define TYPE_BCM2837 "bcm2837"
  32
  33struct BCM283XState {
  34    /*< private >*/
  35    DeviceState parent_obj;
  36    /*< public >*/
  37
  38    uint32_t enabled_cpus;
  39
  40    struct {
  41        ARMCPU core;
  42    } cpu[BCM283X_NCPUS];
  43    BCM2836ControlState control;
  44    BCM2835PeripheralState peripherals;
  45};
  46
  47#endif /* BCM2836_H */
  48