mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
hw/arm/smmu-common: smmu base device and datatypes
The patch introduces the smmu base device and class for the ARM smmu. Devices for specific versions will be derived from this base device. We also introduce some important datatypes. Signed-off-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Prem Mallappa <prem.mallappa@broadcom.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1524665762-31355-2-git-send-email-eric.auger@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
b1e5336a98
commit
527773eeef
4 changed files with 206 additions and 0 deletions
81
hw/arm/smmu-common.c
Normal file
81
hw/arm/smmu-common.c
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2016 Broadcom Corporation
|
||||
* Copyright (c) 2017 Red Hat, Inc.
|
||||
* Written by Prem Mallappa, Eric Auger
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Author: Prem Mallappa <pmallapp@broadcom.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "trace.h"
|
||||
#include "exec/target_page.h"
|
||||
#include "qom/cpu.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
#include "qemu/error-report.h"
|
||||
#include "hw/arm/smmu-common.h"
|
||||
|
||||
static void smmu_base_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
SMMUBaseClass *sbc = ARM_SMMU_GET_CLASS(dev);
|
||||
Error *local_err = NULL;
|
||||
|
||||
sbc->parent_realize(dev, &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void smmu_base_reset(DeviceState *dev)
|
||||
{
|
||||
/* will be filled later on */
|
||||
}
|
||||
|
||||
static Property smmu_dev_properties[] = {
|
||||
DEFINE_PROP_UINT8("bus_num", SMMUState, bus_num, 0),
|
||||
DEFINE_PROP_LINK("primary-bus", SMMUState, primary_bus, "PCI", PCIBus *),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
static void smmu_base_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
SMMUBaseClass *sbc = ARM_SMMU_CLASS(klass);
|
||||
|
||||
dc->props = smmu_dev_properties;
|
||||
device_class_set_parent_realize(dc, smmu_base_realize,
|
||||
&sbc->parent_realize);
|
||||
dc->reset = smmu_base_reset;
|
||||
}
|
||||
|
||||
static const TypeInfo smmu_base_info = {
|
||||
.name = TYPE_ARM_SMMU,
|
||||
.parent = TYPE_SYS_BUS_DEVICE,
|
||||
.instance_size = sizeof(SMMUState),
|
||||
.class_data = NULL,
|
||||
.class_size = sizeof(SMMUBaseClass),
|
||||
.class_init = smmu_base_class_init,
|
||||
.abstract = true,
|
||||
};
|
||||
|
||||
static void smmu_base_register_types(void)
|
||||
{
|
||||
type_register_static(&smmu_base_info);
|
||||
}
|
||||
|
||||
type_init(smmu_base_register_types)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue