From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKb86-0006cy-7j for qemu-devel@nongnu.org; Mon, 03 Mar 2014 17:14:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WKb7z-0001ks-9f for qemu-devel@nongnu.org; Mon, 03 Mar 2014 17:14:34 -0500 Received: from mail-ea0-x22f.google.com ([2a00:1450:4013:c01::22f]:36486) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKb7z-0001kn-25 for qemu-devel@nongnu.org; Mon, 03 Mar 2014 17:14:27 -0500 Received: by mail-ea0-f175.google.com with SMTP id d10so1649147eaj.6 for ; Mon, 03 Mar 2014 14:14:26 -0800 (PST) Date: Mon, 3 Mar 2014 23:14:03 +0100 From: Beniamino Galvani Message-ID: <20140303221403.GB7506@gmail.com> References: <1393769202-4551-1-git-send-email-b.galvani@gmail.com> <1393769202-4551-2-git-send-email-b.galvani@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH v2 1/7] allwinner-a10-pic: set vector address when an interrupt is pending List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Crosthwaite Cc: Peter Maydell , "qemu-devel@nongnu.org Developers" , Li Guang On Mon, Mar 03, 2014 at 09:16:13PM +1000, Peter Crosthwaite wrote: > On Mon, Mar 3, 2014 at 12:06 AM, Beniamino Galvani wrote: > > This patch implements proper updating of the vector register which > > should hold, according to the A10 user manual, the vector address for > > the interrupt currently active on the CPU IRQ input. > > > > Interrupt priority is not implemented at the moment and thus the first > > pending interrupt is returned. > > > > With all these allwinner cores do we have docs for any of them? Ive > seen contributor claims that both enet and intc are undocumented but I > saw a passing reference to a document for the timer. Is there anything > useful resembling register specs for any of these patches? (not that > that stops us from contributing - it just makes accurate review > easier!). > > > Signed-off-by: Beniamino Galvani > > Reviewed-by: Peter Crosthwaite > AFAIK, this is the most complete datasheet available: http://dl.linux-sunxi.org/A10/A10%20User%20Manual%20-%20v1.20%20%282012-04-09,%20DECRYPTED%29.pdf Interrupt controller and timer are documented, EMAC is not. Beniamino > > --- > > hw/intc/allwinner-a10-pic.c | 14 ++++++++++---- > > 1 file changed, 10 insertions(+), 4 deletions(-) > > > > diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c > > index 407d563..00f3c11 100644 > > --- a/hw/intc/allwinner-a10-pic.c > > +++ b/hw/intc/allwinner-a10-pic.c > > @@ -23,11 +23,20 @@ > > static void aw_a10_pic_update(AwA10PICState *s) > > { > > uint8_t i; > > - int irq = 0, fiq = 0; > > + int irq = 0, fiq = 0, pending; > > + > > + s->vector = 0; > > > > for (i = 0; i < AW_A10_PIC_REG_NUM; i++) { > > irq |= s->irq_pending[i] & ~s->mask[i]; > > fiq |= s->select[i] & s->irq_pending[i] & ~s->mask[i]; > > + > > + if (!s->vector) { > > + pending = ffs(s->irq_pending[i] & ~s->mask[i]); > > + if (pending) { > > + s->vector = (i * 32 + pending - 1) * 4; > > + } > > + } > > } > > > > qemu_set_irq(s->parent_irq, !!irq); > > @@ -84,9 +93,6 @@ static void aw_a10_pic_write(void *opaque, hwaddr offset, uint64_t value, > > uint8_t index = (offset & 0xc) / 4; > > > > switch (offset) { > > - case AW_A10_PIC_VECTOR: > > - s->vector = value & ~0x3; > > - break; > > case AW_A10_PIC_BASE_ADDR: > > s->base_addr = value & ~0x3; > > case AW_A10_PIC_PROTECT: > > -- > > 1.7.10.4 > > > >