Date: Mon, 11 Aug 2014 18:43:56 +0100 From: Andrew Turner <andrew@fubar.geek.nz> To: Nathan Whitehorn <nwhitehorn@freebsd.org> Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r269818 - projects/arm64/sys/dev/fdt Message-ID: <20140811184356.52954d03@bender.lan> In-Reply-To: <53E8FC5B.9070605@freebsd.org> References: <53e8f606.23db.c1d4a@svn.freebsd.org> <53E8FC5B.9070605@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 11 Aug 2014 10:24:43 -0700 Nathan Whitehorn <nwhitehorn@freebsd.org> wrote: > > On 08/11/14 09:57, Andrew Turner wrote: > > Author: andrew > > Date: Mon Aug 11 16:57:42 2014 > > New Revision: 269818 > > URL: http://svnweb.freebsd.org/changeset/base/269818 > > > > Log: > > Hack to get the correct value for the interrupt from the vendor > > supplied device tree. The GIC used the format <type irq flags> > > where the type is 0 for Shared Peripheral Interrupts (SPI), and 1 > > for Private Peripheral Interrupts. The SPIs start at 32 in the GIc > > so we need to adjust their values to match this. > > > > Modified: > > projects/arm64/sys/dev/fdt/simplebus.c > > > > Modified: projects/arm64/sys/dev/fdt/simplebus.c > > ============================================================================== > > --- projects/arm64/sys/dev/fdt/simplebus.c Mon Aug 11 > > 16:44:06 2014 (r269817) +++ > > projects/arm64/sys/dev/fdt/simplebus.c Mon Aug 11 16:57:42 > > 2014 (r269818) @@ -310,10 +310,18 @@ > > simplebus_setup_dinfo(device_t dev, phan icells = 1; } > > for (i = 0, k = 0; i < nintr; i += icells, k++) { > > + u_int irq; > > + > > + if (icells == 3) { > > + irq = intr[i + 1]; > > + if (intr[i] == 0) > > + irq += 32; > > + } else > > + irq = intr[i]; > > intr[i] = ofw_bus_map_intr(dev, iparent, > > icells, &intr[i]); > > - resource_list_add(&ndi->rl, SYS_RES_IRQ, > > k, intr[i], > > - intr[i], 1); > > + resource_list_add(&ndi->rl, SYS_RES_IRQ, > > k, irq, > > + irq, 1); > > } > > free(intr, M_OFWPROP); > > } > > > > The much better place to do this kind of hack is in the ARM > nexus_ofw_map_intr() routine. Ian's intrng branch will push this into > the PIC driver, where it actually belongs, but putting it in nexus > isn't so bad for now and will apply to all buses, not just simplebus. > -Nathan I know, this is a hack to get interrupts working. It will be fixed before merging into head. Andrew
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140811184356.52954d03>