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