From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26464C433DF for ; Thu, 6 Aug 2020 12:37:48 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 088DC22E01 for ; Thu, 6 Aug 2020 12:37:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="kC7yRUjm"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="YdOifq+Y" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 088DC22E01 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:To:From: Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=emp/rnw7GJeCF6JWdX2lur/hkNOgt39MGKD/COJKbiI=; b=kC7yRUjm6DEr1htyKRVQLXkeN stOYOg3XeCqDAQAduFRoL7PIkca+QJnuQsduXVGHTVPhV5z0AgIJvcSEbkN2+7rG0rmJqI+J5Ui70 yL+GvBwIq8rmpwFikhHX7Qj1qveKvTwk/ljzjI0aMldVzjaQcDSkndpHh1Uc7bpIwU0VEyXojOXH2 RMw5U0HkoZfSn7tEkppxw++5CS+25i5zZfGvxRW/XmdGxIxXftP0CG5seQuecoz6ubXI0pS7yEr2Q 29jbQFIEUFQCwgTrau8/PWq72a+VatdIn3IS1mD5DW4IZz+6ySuRjEiDUNySqEfD/OjKiz+RvtOht T+kvVCKpA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k3f87-0007Rj-C9; Thu, 06 Aug 2020 12:36:19 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k3f84-0007R0-LB for linux-arm-kernel@lists.infradead.org; Thu, 06 Aug 2020 12:36:17 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AAE6A22DA9; Thu, 6 Aug 2020 12:36:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596717375; bh=V1PSRo4eX8swYDgWsq71j+ws4CVRQUFXtfzrKm6Cs7g=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=YdOifq+YBdCEaRBYC/2UMY89UncYsccDHOtl9ip82PBoV1QXbyBcyhdkRqstYBDmg 92q4c79+Ym+cezlho5R9ZueuW9+3ku53CLnyxnaK6Hmfo/4TjYbuwT7zj4nE4Jg1Eh 2QRQZeKN1Hs73+lNjjbMFygLq9kJDYH7ZujeajtM= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1k3f82-000H6F-3e; Thu, 06 Aug 2020 13:36:14 +0100 MIME-Version: 1.0 Date: Thu, 06 Aug 2020 13:36:14 +0100 From: Marc Zyngier To: Daniel Palmer Subject: Re: [PATCH 2/3] irqchip: mstar: msc313-intc interrupt controller driver In-Reply-To: References: <20200805110052.2655487-1-daniel@0x0f.com> <20200805110052.2655487-3-daniel@0x0f.com> User-Agent: Roundcube Webmail/1.4.5 Message-ID: <3e177112a804b54589464853ff8ac8ad@kernel.org> X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: daniel@0x0f.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tglx@linutronix.de, jason@lakedaemon.net, robh+dt@kernel.org, arnd@arndb.de, w@1wt.eu, mark-pk.tsai@mediatek.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200806_083616_864197_E802BC5C X-CRM114-Status: GOOD ( 27.76 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: DTML , jason@lakedaemon.net, Arnd Bergmann , linux-kernel@vger.kernel.org, Rob Herring , mark-pk.tsai@mediatek.com, tglx@linutronix.de, Willy Tarreau , linux-arm-kernel Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMC0wOC0wNiAxMTowMywgRGFuaWVsIFBhbG1lciB3cm90ZToKPiBIaSBNYXJjLAo+IAo+ IE9uIFRodSwgNiBBdWcgMjAyMCBhdCAwMToyNiwgTWFyYyBaeW5naWVyIDxtYXpAa2VybmVsLm9y Zz4gd3JvdGU6Cj4+ID4gK3N0cnVjdCBtc2MzMTNfaW50YyB7Cj4+ID4gKyAgICAgc3RydWN0IGly cV9kb21haW4gKmRvbWFpbjsKPj4gPiArICAgICB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+ID4gKyAg ICAgc3RydWN0IGlycV9jaGlwIGlycWNoaXA7Cj4+IAo+PiBXaHkgZG8geW91IG5lZWQgdG8gZW1i ZWQgdGhlIGlycV9jaGlwIG9uIGEgcGVyLWNvbnRyb2xsZXIgYmFzaXM/Cj4gCj4gQ3VycmVudCBj aGlwcyBoYXZlIDEgaW5zdGFuY2Ugb2YgZWFjaCB0eXBlIG9mIGNvbnRyb2xsZXIgYnV0IHNvbWUg b2YgCj4gdGhlCj4gbmV3ZXIgb25lcyBzZWVtIHRvIGhhdmUgYW4gZXh0cmEgY29weSBvZiB0aGUg bm9uLUZJUSB2ZXJzaW9uIHdpdGggCj4gZGlmZmVyZW50Cj4gb2Zmc2V0IHRvIHRoZSBHSUMuCgpJ dCBpcyBtdWNoIGJldHRlciB0byBoYXZlIGFuIGlycWNoaXAgc3RydWN0dXJlIHBlciBpcnFjaGlw IHR5cGUsCnJhdGhlciB0aGFuIG9uZSBwZXIgaW5zdGFuY2UsIGFzIHlvdSBjYW4gdGhlbiBtYWtl IHRoZSBpcnFjaGlwIGNvbnN0LgpJdCBhbHNvIHNhdmVzIG1lbW9yeSB3aGVuIHlvdSBoYXZlIG1v cmUgdGhhbiBhIHNpbmdsZSBpbnN0YW5jZS4KClRoZSBvbmx5IGNhc2Ugd2hlcmUgaXQgZG9lc24n dCB3b3JrIGlzIHdoZW4gUE0gZ2V0cyBpbnZvbHZlZCwgYXMgdGhlCnBhcmVudF9kZXZpY2UgcG9p bnRlciBpcyBzdHVwaWRseSBzdG9yZWQgaW4gdGhlIGlycWNoaXAgZGV2aWNlLgoKPiAKPj4gPiAr fTsKPj4gPiArCj4+ID4gK3N0YXRpYyB2b2lkIG1zYzMxM19pbnRjX21hc2t1bm1hc2soc3RydWN0 IG1zYzMxM19pbnRjICppbnRjLCBpbnQKPj4gPiBod2lycSwgYm9vbCBtYXNrKQo+PiA+ICt7Cj4+ ID4gKyAgICAgaW50IHJlZ29mZiA9IFJFR09GRihod2lycSk7Cj4+ID4gKyAgICAgdm9pZCBfX2lv bWVtICphZGRyID0gaW50Yy0+YmFzZSArIFJFR09GRl9NQVNLICsgcmVnb2ZmOwo+PiA+ICsgICAg IHUxNiBiaXQgPSBJUlFCSVQoaHdpcnEpOwo+PiA+ICsgICAgIHUxNiByZWcgPSByZWFkd19yZWxh eGVkKGFkZHIpOwo+PiA+ICsKPj4gPiArICAgICBpZiAobWFzaykKPj4gPiArICAgICAgICAgICAg IHJlZyB8PSBiaXQ7Cj4+ID4gKyAgICAgZWxzZQo+PiA+ICsgICAgICAgICAgICAgcmVnICY9IH5i aXQ7Cj4+ID4gKwo+PiA+ICsgICAgIHdyaXRld19yZWxheGVkKHJlZywgYWRkcik7Cj4+IAo+PiBS TVcgb24gYSBzaGFyZWQgTU1JTyByZWdpc3Rlci4gTm90IGdvaW5nIHRvIGVuZCB3ZWxsLiBUaGlz IGlzIHZhbGlkCj4+IGZvciBhbGwgdGhlIGNhbGxiYWNrcywgSSBiZWxpZXZlLgo+IAo+IERvIHlv dSBoYXZlIGFueSBzdWdnZXN0aW9ucyBvbiBob3cgdG8gcmVzb2x2ZSB0aGF0PyBJdCBzZWVtcyB1 c3VhbGx5Cj4gYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIgaGFzIHNldCBhbmQgY2xlYXIgcmVnaXN0 ZXJzIHRvIGdldCBhcm91bmQgdGhpcy4KPiBXb3VsZCBkZWZpbmluZyBhIHNwaW5sb2NrIGF0IHRo ZSB0b3Agb2YgdGhlIGRyaXZlciBhbmQgdXNpbmcgdGhhdCAKPiBhcm91bmQKPiB0aGUgcmVhZCBh bmQgbW9kaWZ5IHNlcXVlbmNlcyBiZSBnb29kIGVub3VnaD8KClllcywgYSBzcGlubG9jayBpcyB0 aGUgY29udmVudGlvbmFsIHdheSB0byBzb2x2ZSBpdC4gTWFrZSBzdXJlCnlvdSB1c2UgdGhlIGly cXNhdmUvaXJxcmVzdG9yZSB2ZXJzaW9ucywgYXMgbWFzay91bm1hc2sgY2FuCmFsc28gb2NjdXIg d2hpbHN0IGluIGludGVycnVwdCBjb250ZXh0LgoKPiAKPj4gPiArCj4+ID4gKyAgICAgaWYgKGZs b3dfdHlwZSAmIChJUlFfVFlQRV9FREdFX0ZBTExJTkcgfCBJUlFfVFlQRV9MRVZFTF9ISUdIKSkK Pj4gPiArICAgICAgICAgICAgIHJlZyAmPSB+Yml0Owo+PiA+ICsgICAgIGVsc2UKPj4gPiArICAg ICAgICAgICAgIHJlZyB8PSBiaXQ7Cj4+IAo+PiBJIGRvbid0IGZvbGxvdyBncmFzcCB0aGUgbG9n aWMgaGVyZS4gV2hhdCBoYXBwZW5zIG9uIEVER0VfQk9USCwgZm9yCj4+IGV4YW1wbGU/Cj4gCj4g VG8gYmUgaG9uZXN0IEkgZG9uJ3QgcXVpdGUgcmVtZW1iZXIuIEknbGwgY2hlY2sgYW5kIHJld3Jp dGUgdGhpcy4KPiAKPj4gVGhpcyBkcml2ZXIgaGFzIGEgbWFzc2l2ZSBmZWVsaW5nIG9mIGTDqWph LXZ1LiBJdCBpcyBhbG1vc3QKPj4gYSBjb3B5IG9mIHRoZSBvbmUgcG9zdGVkIGF0IFsxXSwgd2hp Y2ggSSByZXZpZXdlZCBlYXJseQo+PiB0aGlzIHdlZWsuIFRoZSBpc3N1ZXMgYXJlIHRoZSBleGFj dCBzYW1lLCBhbmQgSSdtIDk4JQo+PiBzdXJlIHRoaXMgaXMgdGhlIHNhbWUgSVAgYmxvY2sgdXNl ZCBieSB0d28gU29DIHZlbmRvcnMuCj4gCj4gVGhpcyB3b3VsZCBtYWtlIGEgbG90IG9mIHNlbnNl IGNvbnNpZGVyaW5nIE1lZGlhVGVrIGJvdWdodCBNU3Rhcgo+IGZvciB0aGVpciBUViBTb0NzLiBU aGUgd2VpcmRuZXNzIHdpdGggb25seSB1c2luZyAxNiBiaXRzIGluIGEgcmVnaXN0ZXIKPiBzdWdn ZXN0cyB0aGV5J3ZlIGluaGVyaXRlZCB0aGUgc2hhcmVkIEFSTS84MDUxIGJ1cyB0aGF0IHRoZSBN U3Rhcgo+IGNoaXBzIGhhdmUuIFRoYW5rcyBmb3IgdGhlIHRpcCBvZmYuCgpJdCBpcyBpbmRlZWQg dGhlIDE2Yml0IGFjY2Vzc2VzIHRoYXQgcmVtaW5kZWQgbWUgb2YgdGhlIE1USwpjb2RlLCBhcyB0 aGF0J3MgdmVyeSB1bnVzdWFsLgoKSG9wZWZ1bGx5IHlvdSBjYW4gd29yayB3aXRoIHRoZSBNVEsg Z3V5cyB0byByZXNvbHZlIHRoaXMgcXVpY2tseS4KCiAgICAgICAgIE0uCi0tIApKYXp6IGlzIG5v dCBkZWFkLiBJdCBqdXN0IHNtZWxscyBmdW5ueS4uLgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4B84C433E1 for ; Thu, 6 Aug 2020 17:33:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 06CAA206B2 for ; Thu, 6 Aug 2020 17:33:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596735214; bh=V1PSRo4eX8swYDgWsq71j+ws4CVRQUFXtfzrKm6Cs7g=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=Knf0A0GLIXnlf6jfUfeczPgLYhxQV6/g4mzZyB4e7QZVI+Ru6B26coAi4f9JxsAc0 tTnLsNd1sfQQjGOIMBj88uetopNxfLeheCf1ssiunVWJPz6ZcY8etnKZG2rMxefDEf ImjGIalFZjmITEOqoN0Y6vHUnVmOTSGnIIAiPZGc= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728675AbgHFRcc (ORCPT ); Thu, 6 Aug 2020 13:32:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:55152 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730000AbgHFRcF (ORCPT ); Thu, 6 Aug 2020 13:32:05 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AAE6A22DA9; Thu, 6 Aug 2020 12:36:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596717375; bh=V1PSRo4eX8swYDgWsq71j+ws4CVRQUFXtfzrKm6Cs7g=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=YdOifq+YBdCEaRBYC/2UMY89UncYsccDHOtl9ip82PBoV1QXbyBcyhdkRqstYBDmg 92q4c79+Ym+cezlho5R9ZueuW9+3ku53CLnyxnaK6Hmfo/4TjYbuwT7zj4nE4Jg1Eh 2QRQZeKN1Hs73+lNjjbMFygLq9kJDYH7ZujeajtM= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1k3f82-000H6F-3e; Thu, 06 Aug 2020 13:36:14 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Thu, 06 Aug 2020 13:36:14 +0100 From: Marc Zyngier To: Daniel Palmer Cc: linux-arm-kernel , linux-kernel@vger.kernel.org, DTML , tglx@linutronix.de, jason@lakedaemon.net, Rob Herring , Arnd Bergmann , Willy Tarreau , mark-pk.tsai@mediatek.com Subject: Re: [PATCH 2/3] irqchip: mstar: msc313-intc interrupt controller driver In-Reply-To: References: <20200805110052.2655487-1-daniel@0x0f.com> <20200805110052.2655487-3-daniel@0x0f.com> User-Agent: Roundcube Webmail/1.4.5 Message-ID: <3e177112a804b54589464853ff8ac8ad@kernel.org> X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: daniel@0x0f.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tglx@linutronix.de, jason@lakedaemon.net, robh+dt@kernel.org, arnd@arndb.de, w@1wt.eu, mark-pk.tsai@mediatek.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 2020-08-06 11:03, Daniel Palmer wrote: > Hi Marc, > > On Thu, 6 Aug 2020 at 01:26, Marc Zyngier wrote: >> > +struct msc313_intc { >> > + struct irq_domain *domain; >> > + void __iomem *base; >> > + struct irq_chip irqchip; >> >> Why do you need to embed the irq_chip on a per-controller basis? > > Current chips have 1 instance of each type of controller but some of > the > newer ones seem to have an extra copy of the non-FIQ version with > different > offset to the GIC. It is much better to have an irqchip structure per irqchip type, rather than one per instance, as you can then make the irqchip const. It also saves memory when you have more than a single instance. The only case where it doesn't work is when PM gets involved, as the parent_device pointer is stupidly stored in the irqchip device. > >> > +}; >> > + >> > +static void msc313_intc_maskunmask(struct msc313_intc *intc, int >> > hwirq, bool mask) >> > +{ >> > + int regoff = REGOFF(hwirq); >> > + void __iomem *addr = intc->base + REGOFF_MASK + regoff; >> > + u16 bit = IRQBIT(hwirq); >> > + u16 reg = readw_relaxed(addr); >> > + >> > + if (mask) >> > + reg |= bit; >> > + else >> > + reg &= ~bit; >> > + >> > + writew_relaxed(reg, addr); >> >> RMW on a shared MMIO register. Not going to end well. This is valid >> for all the callbacks, I believe. > > Do you have any suggestions on how to resolve that? It seems usually > an interrupt controller has set and clear registers to get around this. > Would defining a spinlock at the top of the driver and using that > around > the read and modify sequences be good enough? Yes, a spinlock is the conventional way to solve it. Make sure you use the irqsave/irqrestore versions, as mask/unmask can also occur whilst in interrupt context. > >> > + >> > + if (flow_type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_LEVEL_HIGH)) >> > + reg &= ~bit; >> > + else >> > + reg |= bit; >> >> I don't follow grasp the logic here. What happens on EDGE_BOTH, for >> example? > > To be honest I don't quite remember. I'll check and rewrite this. > >> This driver has a massive feeling of déja-vu. It is almost >> a copy of the one posted at [1], which I reviewed early >> this week. The issues are the exact same, and I'm 98% >> sure this is the same IP block used by two SoC vendors. > > This would make a lot of sense considering MediaTek bought MStar > for their TV SoCs. The weirdness with only using 16 bits in a register > suggests they've inherited the shared ARM/8051 bus that the MStar > chips have. Thanks for the tip off. It is indeed the 16bit accesses that reminded me of the MTK code, as that's very unusual. Hopefully you can work with the MTK guys to resolve this quickly. M. -- Jazz is not dead. It just smells funny...