From owner-freebsd-arm@FreeBSD.ORG Tue Jul 31 19:37:12 2012 Return-Path: Delivered-To: arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C6BBB106566C for ; Tue, 31 Jul 2012 19:37:12 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from mail-gh0-f182.google.com (mail-gh0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id CC20C8FC0A for ; Tue, 31 Jul 2012 19:37:11 +0000 (UTC) Received: by ghbz22 with SMTP id z22so7513285ghb.13 for ; Tue, 31 Jul 2012 12:37:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to:x-mailer :x-gm-message-state; bh=2qdrefToJ0VL/AV7bAS+A6pUC91ark0fxsdlfGGMI8w=; b=HMQLBPMVT+ss3f87F9ZIE6K3VpCJEg1DxEIlPcvMPnuNCN8fNRNVtT3BdHI1PXkQYP opEMz1Vo09DG7aZgDoZiG4AxpVyN8effTRCYqpXRloS4PG0VDrprrU+7MsYJ0fEOhFQq dr5ZjumVYZU9CBR/La1J+bPt06TAjTQ4Z7hRulXep0i9H4KXqFlt5mcon+cBtUmNN01l gnuNGFHBosR0GNCf38xGPg777MLloiiT3JP76kScs5F6BTMOco6L0m9m4aU4bXi/XDeh DgRzaAjCMxakky4hVCDgijG2pfo6gXhnL7zt77rnNH7N8e7SqLMcTDqlMC6PRCxH0736 ma8w== Received: by 10.60.31.165 with SMTP id b5mr24916814oei.58.1343763429475; Tue, 31 Jul 2012 12:37:09 -0700 (PDT) Received: from [10.30.101.53] ([209.117.142.2]) by mx.google.com with ESMTPS id qd7sm758909obc.5.2012.07.31.12.37.08 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 31 Jul 2012 12:37:08 -0700 (PDT) Sender: Warner Losh Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: <201207310028.12533.Daan@vitsch.nl> Date: Tue, 31 Jul 2012 13:37:04 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <8A50DD5A-4329-4CAB-949D-22606527B7E4@bsdimp.com> References: <201206290418.q5T4IqpX018099@svn.freebsd.org> <201207310028.12533.Daan@vitsch.nl> To: Daan Vreeken X-Mailer: Apple Mail (2.1084) X-Gm-Message-State: ALoCoQlrR5u9OI0gYoY5OHELrV4eo1YaNugqNDJQ6G7Y2ZG9r4TNRDzt9bcj7/JC9Ly9mgfHlH7n Cc: "arm@freebsd.org" Subject: Re: svn commit: r237742 - in head/sys/arm: at91 conf X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jul 2012 19:37:12 -0000 Hi Daan, thanks for your feedback. Comments inline below. I've also redirected = this to the ARM list. On Jul 30, 2012, at 4:28 PM, Daan Vreeken wrote: > Hi Warner, >=20 >=20 > On Friday 29 June 2012 06:18:52 Warner Losh wrote: >> Author: imp >> Date: Fri Jun 29 04:18:52 2012 >> New Revision: 237742 >> URL: http://svn.freebsd.org/changeset/base/237742 >>=20 >> Log: >> Initital support for AT91SAM9X25 SoC and the SAM9X25-EK evaluation >> board. Much work remains. > ... >> Added: head/sys/arm/at91/at91sam9x25.c >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= >> =3D=3D=3D --- /dev/null 00:00:00 1970 (empty, because file is = newly added) >> +++ head/sys/arm/at91/at91sam9x25.c Fri Jun 29 04:18:52 2012 = (r237742) >> @@ -0,0 +1,343 @@ > ... >> +static uint32_t >> +at91_pll_outa(int freq) >> +{ >> + >> + switch (freq / 10000000) { >=20 > You seem to be dividing freq into multiples of 10MHz instead of 1MHz = here. I=20 > think dividing by 1e6 was the intention. You're right. That was wrong in the 9g20 code too. I'll correct it = there as well. >> + case 747 ... 801: return ((1 << 29) | (0 << 14)); >> + case 697 ... 746: return ((1 << 29) | (1 << 14)); >> + case 647 ... 696: return ((1 << 29) | (2 << 14)); >> + case 597 ... 646: return ((1 << 29) | (3 << 14)); >> + case 547 ... 596: return ((1 << 29) | (1 << 14)); >> + case 497 ... 546: return ((1 << 29) | (2 << 14)); >> + case 447 ... 496: return ((1 << 29) | (3 << 14)); >=20 >> + case 397 ... 446: return ((1 << 29) | (4 << 14)); >=20 > The (4 << 14) looks a bit strange here, as OUTA only occupies bit 14 = and 15 of=20 > CKGR_PLLAR. (See Atmel doc11054, page 201 and 1103.) Yes. I've never liked this code, and had an item on my todo list to go = dig into it. Thanks for doing the digging for me :) > Maybe this entire routine could be written as something like: > uint8_t outa; >=20 > freq /=3D 1000000; > // optional: > //freq +=3D 3; > // see doc11054, page 1103 > outa =3D 3 - ((freq / 50) & 3); >=20 > return ((1 << 29) | (outa << 14)); I like this code a lot. In fact, it looks like all the other PLLA OUTA = calculations are wrong for all the other chips. > Just glancing at the code, setting ICPLLA in PMC_PLLICPR for = frequencies <=3D=20 > 600MHz seems to be missing at this moment (or I'm just not seeing it). > (see page 212 and 1103) You're right. But it doesn't matter since we never seem to actually set = PLLA on startup. I've gone through and fixed things, and put better labels on the = references to the data sheets. See http://people.freebsd.org/~imp/clocks.diff for my fix. Does that = look good to you? How about to the arm@ peanut gallery? Warner=