1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * QEMU Loongson 7A1000 I/O interrupt controller. 4 * Copyright (C) 2024 Loongson Technology Corporation Limited 5 */ 6 7 static void loongarch_pic_common_realize(DeviceState *dev, Error **errp) 8 { 9 LoongArchPICCommonState *s = LOONGARCH_PCH_PIC(dev); 10 11 if (!s->irq_num || s->irq_num > VIRT_PCH_PIC_IRQ_NUM) { 12 error_setg(errp, "Invalid 'pic_irq_num'"); 13 return; 14 } 15 } 16 17 static const Property loongarch_pic_common_properties[] = { 18 DEFINE_PROP_UINT32("pch_pic_irq_num", LoongArchPICCommonState, irq_num, 0), 19 DEFINE_PROP_END_OF_LIST(), 20 }; 21 22 static const VMStateDescription vmstate_loongarch_pic_common = { 23 .name = "loongarch_pch_pic", 24 .version_id = 1, 25 .minimum_version_id = 1, 26 .fields = (const VMStateField[]) { 27 VMSTATE_UINT64(int_mask, LoongArchPICCommonState), 28 VMSTATE_UINT64(htmsi_en, LoongArchPICCommonState), 29 VMSTATE_UINT64(intedge, LoongArchPICCommonState), 30 VMSTATE_UINT64(intclr, LoongArchPICCommonState), 31 VMSTATE_UINT64(auto_crtl0, LoongArchPICCommonState), 32 VMSTATE_UINT64(auto_crtl1, LoongArchPICCommonState), 33 VMSTATE_UINT8_ARRAY(route_entry, LoongArchPICCommonState, 64), 34 VMSTATE_UINT8_ARRAY(htmsi_vector, LoongArchPICCommonState, 64), 35 VMSTATE_UINT64(last_intirr, LoongArchPICCommonState), 36 VMSTATE_UINT64(intirr, LoongArchPICCommonState), 37 VMSTATE_UINT64(intisr, LoongArchPICCommonState), 38 VMSTATE_UINT64(int_polarity, LoongArchPICCommonState), 39 VMSTATE_END_OF_LIST() 40 } 41 }; 42