From svn at openfirmware.info Mon Dec 8 01:10:53 2014 From: svn at openfirmware.info (repository service) Date: Mon, 08 Dec 2014 01:10:53 +0100 Subject: [openfirmware] [commit] r3750 - dev/usb2/device/net Message-ID: Author: quozl Date: Mon Dec 8 01:10:53 2014 New Revision: 3750 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3750 Log: OLPC - add another ASIX AX88772B based USB ethernet adaptor 0b95.772b to be used in factory, the device uses previously reserved bits in receive buffer, fix is to reconfigure the device for the default format. Tested also with 0b95.7720 ZoWii Zoltan Tech ZU-80. #12844. Modified: dev/usb2/device/net/ax8817x.fth dev/usb2/device/net/vendor.fth Modified: dev/usb2/device/net/ax8817x.fth ============================================================================== --- dev/usb2/device/net/ax8817x.fth Mon Nov 24 23:53:00 2014 (r3749) +++ dev/usb2/device/net/ax8817x.fth Mon Dec 8 01:10:53 2014 (r3750) @@ -10,13 +10,15 @@ h# 0013.0103 value ax-gpio \ GPIO toggle values -\ This may need to optimized at some point -: ax88772? ( -- flag ) +0 value ax88772? \ is an AX88772 based device + +: is-ax88772? ( -- flag ) pid vid wljoin case ( vid.pid ) + h# 0b95.772b of true exit endof \ ZHN ASIX AX88772BLF h# 13b1.0018 of true exit endof \ ID for Linksys USB200M rev 2 h# 2001.3c05 of true exit endof \ ID for D-Link DUB-E100 rev B h# 07d1.3c05 of true exit endof \ Alternate ID for D-Link DUB-E100 rev B - h# 0b95.7720 of true exit endof \ Another 88772 device, possibly ST Labs + h# 0b95.7720 of true exit endof \ ST Labs, ZoWii Zoltan Tech ZU-80 h# 0b95.772a of true exit endof \ Chip on VIA demo board h# 05ac.1402 of true exit endof \ Apple endcase @@ -231,6 +233,7 @@ else use-multicast? if 2 or then then + ax88772? if h# 100 or then \ RH1M: rx header format type 1 to def-rx-ctl def-rx-ctl rx-ctl! ; @@ -312,6 +315,7 @@ ; : init-ax ( -- ) + is-ax88772? to ax88772? ['] ax-init-nic to init-nic ['] ax-link-up? to link-up? ['] ax-start-mac to start-mac Modified: dev/usb2/device/net/vendor.fth ============================================================================== --- dev/usb2/device/net/vendor.fth Mon Nov 24 23:53:00 2014 (r3749) +++ dev/usb2/device/net/vendor.fth Mon Dec 8 01:10:53 2014 (r3750) @@ -4,10 +4,11 @@ hex create net-ax8817x-list here + 0b95 w, 772b w, \ ZHN ASIX AX88772BLF 2001 w, 3c05 w, \ D-Link DUBE100 Rev B1 ax88772 07d1 w, 3c05 w, \ D-Link DUBE100 Rev B1 ax88772 2001 w, 1a00 w, \ D-Link DUBE100 Rev A ax88772 - 0b95 w, 7720 w, \ ST Lab + 0b95 w, 7720 w, \ ST Lab, ZoWii Zoltan Tech ZU-80 0b95 w, 772a w, \ Chip on VIA demo board 13b1 w, 0018 w, \ Linksys USB200M ax88772 077b w, 2226 w, \ Linksys USB200M From svn at openfirmware.info Mon Dec 8 01:24:07 2014 From: svn at openfirmware.info (repository service) Date: Mon, 08 Dec 2014 01:24:07 +0100 Subject: [openfirmware] [commit] r3751 - cpu/arm/olpc/4.0 Message-ID: Author: quozl Date: Mon Dec 8 01:24:07 2014 New Revision: 3751 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3751 Log: Q7B43 Modified: cpu/arm/olpc/4.0/fw-version.fth Modified: cpu/arm/olpc/4.0/fw-version.fth ============================================================================== --- cpu/arm/olpc/4.0/fw-version.fth Mon Dec 8 01:10:53 2014 (r3750) +++ cpu/arm/olpc/4.0/fw-version.fth Mon Dec 8 01:24:07 2014 (r3751) @@ -1,7 +1,7 @@ \ The overall firmware revision macro: FW_PREFIX Q7 macro: FW_MAJOR B -macro: FW_MINOR 42 +macro: FW_MINOR 43 \ Create a 2-character build/fw-suffix file to personalize your test builds " fw-suffix" $file-exists? [if] From svn at openfirmware.info Tue Dec 30 01:53:51 2014 From: svn at openfirmware.info (repository service) Date: Tue, 30 Dec 2014 01:53:51 +0100 Subject: [openfirmware] [commit] r3752 - in cpu: arm arm/mmp3 arm/olpc arm/olpc/4.0 x86/pc x86/pc/olpc Message-ID: Author: quozl Date: Tue Dec 30 01:53:50 2014 New Revision: 3752 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3752 Log: OLPC XO-4 - spin second core ready for new kernel, hack in a device tree change for the generic interrupt controller, but keep mmcore powered down. #12297. Added: cpu/arm/mmp3/gic.fth Modified: cpu/arm/linux.fth cpu/arm/mmp3/dramrecal.fth cpu/arm/olpc/4.0/fw-version.fth cpu/arm/olpc/4.0/olpc.bth cpu/arm/olpc/build-fw.fth cpu/x86/pc/cpunode.fth cpu/x86/pc/olpc/gui.fth Modified: cpu/arm/linux.fth ============================================================================== --- cpu/arm/linux.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/arm/linux.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -107,6 +107,7 @@ \ args-buf cscount set-parameters ( ) \ then disable-interrupts +[ifdef] mmp3-gic mmp3-gic [then] linux-base linux-base (init-program) \ Starting address, SP 0 to r0 Modified: cpu/arm/mmp3/dramrecal.fth ============================================================================== --- cpu/arm/mmp3/dramrecal.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/arm/mmp3/dramrecal.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -125,7 +125,12 @@ : idle-cfg-clr ( mask -- ) h# 18 pmua-clr ; : idle-cfg-set ( mask -- ) h# 18 pmua-set ; -: cc4-set ( mask -- ) h# 248 pmua-set ; +: cc2-set ( mask -- ) h# 150 pmua-set ; \ PMUA_CC2_PJ +: cc2-clr ( mask -- ) h# 150 pmua-clr ; + +: cc3-set ( mask -- ) h# 188 pmua-set ; \ PMUA_CC3_PJ + +: cc4-set ( mask -- ) h# 248 pmua-set ; \ PMUA_PJ_C0_CC4 : cc4-clr ( mask -- ) h# 248 pmua-clr ; \ PXA2128_Registers_Manual_revF.pdf says to always write 0 to bits [14:0] @@ -281,11 +286,69 @@ alias do-wfi wfi -: unused-cores-off ( -- ) +\ a reset handler for second core +code spin + mrs r0, cpsr + bic r0, r0, #0x1f + orr r0, r0, #0xd3 + msr cpsr,r0 + + mov r0, #0 \ set up for MCR + mcr p15, 0, r0, cr8, cr7, 0 \ invalidate TLBs + mcr p15, 0, r0, cr7, cr5, 0 \ invalidate icache + mcr p15, 0, r0, cr7, cr5, 6 \ invalidate BP array + mcr p15, 0, r0, cr7, cr10, 4 \ DSB + mcr p15, 0, r0, cr7, cr5, 4 \ ISB + + mrc p15, 0, r0, cr1, cr0, 0 + bic r0, r0, #0x00002000 \ clear bits 13 (--V-) + bic r0, r0, #0x00000007 \ clear bits 2:0 (-CAM) + orr r0, r0, #0x00000002 \ set bit 1 (--A-) Align + orr r0, r0, #0x00000800 \ set bit 11 (Z---) BTB + bic r0, r0, #0x00001000 \ set bit 12 (I) I-cache + mcr p15, 0, r0, cr1, cr0, 0 + + set r1,#0xd4019018 \ physical address of gpio set register + mov r0,#0x400 \ mask for port bit, storage led + str r0,[r1] + + set r1,#0xd4282c24 \ address of __sw_branch register + mov r0,#0x0 + str r0,[r1] \ clear register + begin + mov r3, #0x4000 \ delay loop constant + begin + subs r3, r3, #1 \ delay loop + = until + ldr r0, [r1] \ read __sw_branch register + cmp r0, #0x0 \ contains an address? + movne pc, r0 \ yes, then branch + again \ infinite loop +c; + +: enable-smp ( -- ) + ['] spin >physical 0 hw-install-handler 0 d# 4096 sync-cache + + h# 8 cc3-set \ moltres timerclk domain software reset, release + + \ moltres peripheral space configuration register + h# e000.0000 h# 94 ciu! \ set periphbase_addr + h# ffff.e001 h# 9c ciu! \ set periphbase_size, set periphbase_enable + + \ enable all clocks + h# ffff.ffff h# 0024 mpmu! \ MPMU_CGR_SP + h# ffff.ffff h# 1024 mpmu! \ MPMU_CGR_PJ + h# 3.ffff h# dc pmua! \ PMUA_GLB_CLK_CTRL + + h# 2000.0000 h# 200 pmua! \ PMUA_PJ_IDLE_CFG2, stay powered on WFI + 0 h# d428.2c24 l! \ clear __sw_branch register + h# 0200.0000 cc2-clr d# 1 ms h# 0200.0000 cc2-set \ reset mpcore2 +; + +: unused-core-off ( -- ) \ mmcore h# e320f003 0 instruction! \ Put WFI instruction in reset vector - h# 2000.0062 h# 200 pmua! \ PMUA_PJ_IDLE_CFG2 - mpcore2 deep sleep on WFI - h# 2000.0062 h# 204 pmua! \ PMUA_PJ_IDLE_CFG3 - mmcore deep sleep on WFI - h# 150 pmua@ h# 0600.0000 or h# 150 pmua! \ PMUA_CC2_PJ - unreset mpcore2 & mmcore + h# 2000.0062 h# 204 pmua! \ PMUA_PJ_IDLE_CFG3, power down on WFI + h# 0400.0000 cc2-set \ release reset ; \ LICENSE_BEGIN Added: cpu/arm/mmp3/gic.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/mmp3/gic.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -0,0 +1,133 @@ +purpose: Generic Interrupt Controller node for Marvell MMP3 + +0 0 " e0001000" " /" begin-package + " interrupt-controller" device-name + " arm,arm11mp-gic" +compatible + 0 0 " interrupt-controller" property + 1 " #address-cells" integer-property + 1 " #size-cells" integer-property + 3 " #interrupt-cells" integer-property + h# e0001000 encode-int h# 1000 encode-int encode+ + h# e0000100 encode-int encode+ h# 100 encode-int encode+ " reg" property + + : encode-unit ( phys -- adr len ) push-hex (u.) pop-base ; + : decode-unit ( adr len -- phys ) push-hex $number if 0 then pop-base ; + + : make-gmux-node ( statreg maskreg irq# #irqs ) + new-device + " interrupt-controller" name ( maskreg statreg irq# #irqs ) + " mrvl,intc-nr-irqs" integer-property ( maskreg statreg irq# ) + 0 encode-int rot encode-int encode+ + 1 encode-int encode+ + " interrupts" property ( maskreg statreg ) + >r 4 encode-reg r> 4 encode-reg encode+ " reg" property ( ) + " mrvl,mmp3-mux-intc" +compatible + 0 0 " interrupt-controller" property + 1 " #interrupt-cells" integer-property + " mux status" encode-string " mux mask" encode-string encode+ " reg-names" property + finish-device + ; + + \ create mux nodes + h# 150 h# 168 4 4 make-gmux-node \ intcmux4 - USB_CHARGER, PMIC, SPMI, CHRG_DTC_OUT + h# 154 h# 16c 5 2 make-gmux-node \ intcmux5 - RTC_ALARM, RTC + h# 1bc h# 1a4 6 3 make-gmux-node \ intcmux6 - ETHERNET, res, HSI_INT_3 + h# 1c0 h# 1a8 8 4 make-gmux-node \ intcmux8 - GC2000, res, GC300, MOLTRES_NGIC_2 + h# 158 h# 170 d# 17 5 make-gmux-node \ intcmux17 - TWSI2,3,4,5,6 + h# 1c4 h# 1ac d# 18 3 make-gmux-node \ intcmux18 - Res, HSI_INT_2, MOLTRES_NGIC_1 + h# 1c8 h# 1b0 d# 30 2 make-gmux-node \ intcmux30 - ISP_DMA, DXO_ISP + h# 15c h# 174 d# 35 d# 31 make-gmux-node \ intcmux35 - MOLTRES_(various) (different from MMP2) + h# 1cc h# 1b4 d# 42 2 make-gmux-node \ intcmux42 - CCIC2, CCIC1 + h# 160 h# 178 d# 51 2 make-gmux-node \ intcmux51 - SSP1_SRDY, SSP3_SRDY + h# 184 h# 17c d# 55 4 make-gmux-node \ intcmux55 - MMC5, res, res, HSI_INT_1 + h# 188 h# 180 d# 57 d# 20 make-gmux-node \ intcmux57 - (various) + h# 1d0 h# 1b8 d# 58 5 make-gmux-node \ intcmux58 - MSP_CARD, KERMIT_INT_0, KERMIT_INT_1, res, HSI_INT_0 + h# 128 h# 11c d# 48 d# 24 make-gmux-node \ DMA mux - 16 PDMA, 4 ADMA, 2 VDMA channels +end-package + +dev / + " /interrupt-controller at e0001000" encode-phandle " interrupt-parent" property +dend + +: irqdef ( irq# -- ) + 0 encode-int + rot encode-int encode+ + 1 encode-int encode+ + " interrupts" property +; + +: irqdef2 ( irq# irq# -- ) + swap + 0 encode-int + rot encode-int encode+ + 1 encode-int encode+ + 0 encode-int encode+ + rot encode-int encode+ + 1 encode-int encode+ + " interrupts" property +; + +\ modify all irqs to use 3 cells instead of 1 +dev /timer d irqdef dend +\ dev /wakeup-rtc 1 0 irqdef2 dend +\ dev /thermal b irqdef dend +\ dev /audio 2 irqdef dend +dev /sspa 3 irqdef dend +\ dev /adma at c0ffd800 12 13 irqdef2 dend +\ dev /adma at c0ffd900 14 15 irqdef2 dend +\ dev /camera 1 irqdef dend +dev /ap-sp 28 irqdef dend +dev /usb 2c irqdef dend +dev /ec-spi 14 irqdef dend +\ dev /sd/sdhci at d4217000 0 irqdef dend +dev /sd/sdhci at d4280000 27 irqdef dend +dev /sd/sdhci at d4281000 35 irqdef dend +dev /sd/sdhci at d4280800 34 irqdef dend +\ dev /gpu 0 2 irqdef2 dend +dev /display 29 irqdef dend +dev /vmeta 1a irqdef dend +dev /flash 0 irqdef dend +dev /uart at d4016000 2e irqdef dend +dev /uart at d4030000 1b irqdef dend +dev /uart at d4017000 1c irqdef dend +dev /uart at d4018000 18 irqdef dend +dev /i2c at d4034000 4 irqdef dend +dev /i2c at d4033000 2 irqdef dend +dev /i2c at d4031000 0 irqdef dend +dev /i2c at d4011000 7 irqdef dend +dev /dma 30 irqdef dend +dev /gpio 31 irqdef dend + +\ modify all mux irq users to not point to ICU node +dev /sd/sdhci at d4217000 + " /interrupt-controller at e0001000/interrupt-controller at 184" encode-phandle " interrupt-parent" property +dend +dev /camera at d420a000 + " /interrupt-controller at e0001000/interrupt-controller at 1cc" encode-phandle " interrupt-parent" property +dend +dev /adma at c0ffd800 + " /interrupt-controller at e0001000/interrupt-controller at 128" encode-phandle " interrupt-parent" property +dend +dev /adma at c0ffd900 + " /interrupt-controller at e0001000/interrupt-controller at 128" encode-phandle " interrupt-parent" property +dend +dev /thermal + " /interrupt-controller at e0001000/interrupt-controller at 188" encode-phandle " interrupt-parent" property +dend +dev /wakeup-rtc + " /interrupt-controller at e0001000/interrupt-controller at 154" encode-phandle " interrupt-parent" property +dend +dev /gpu + " /interrupt-controller at e0001000/interrupt-controller at 1c0" encode-phandle " interrupt-parent" property +dend +dev /i2c at d4034000 + " /interrupt-controller at e0001000/interrupt-controller at 158" encode-phandle " interrupt-parent" property +dend +dev /i2c at d4033000 + " /interrupt-controller at e0001000/interrupt-controller at 158" encode-phandle " interrupt-parent" property +dend +dev /i2c at d4031000 + " /interrupt-controller at e0001000/interrupt-controller at 158" encode-phandle " interrupt-parent" property +dend + +: mmp3-gic ." mmp3-gic" cr ; \ 92ms Modified: cpu/arm/olpc/4.0/fw-version.fth ============================================================================== --- cpu/arm/olpc/4.0/fw-version.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/arm/olpc/4.0/fw-version.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -1,7 +1,7 @@ \ The overall firmware revision macro: FW_PREFIX Q7 -macro: FW_MAJOR B -macro: FW_MINOR 43 +macro: FW_MAJOR C +macro: FW_MINOR 00 \ Create a 2-character build/fw-suffix file to personalize your test builds " fw-suffix" $file-exists? [if] Modified: cpu/arm/olpc/4.0/olpc.bth ============================================================================== --- cpu/arm/olpc/4.0/olpc.bth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/arm/olpc/4.0/olpc.bth Tue Dec 30 01:53:50 2014 (r3752) @@ -75,6 +75,7 @@ \ " fw.img" " firmware" $add-dropin " resetvec.img" " reset" $add-dropin + " ${BP}/cpu/arm/mmp3/gic.fth" " mmp3-gic-" $add-dropin \ " ${BP}/dev/usb2/hcd/ehci/build/ehci.fc" " class0c0320" $add-deflated-dropin " ${BP}/dev/usb2/device/hub/build/hub.fc" " usb,class9" $add-deflated-dropin " ${BP}/dev/usb2/device/generic/build/generic.fc" " usbdevice" $add-deflated-dropin Modified: cpu/arm/olpc/build-fw.fth ============================================================================== --- cpu/arm/olpc/build-fw.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/arm/olpc/build-fw.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -254,6 +254,7 @@ : wlan-reset ( -- ) wlan-reset-gpio# gpio-clr d# 20 ms wlan-reset-gpio# gpio-set ; fload ${BP}/ofw/core/fdt.fth +[ifdef] mmp3 autoload: mmp3-gic- defines: mmp3-gic [then] fload ${BP}/cpu/arm/linux.fth \ Create the alias unless it already exists @@ -617,6 +618,11 @@ [ifdef] mmp3 fload ${BP}/cpu/arm/mmp3/dramrecal.fth +: linux-hook-smp ( -- ) + [ ' linux-hook behavior compile, ] \ Chain to old behavior + enable-smp +; +' linux-hook-smp to linux-hook [then] [ifdef] mmp2 fload ${BP}/cpu/arm/mmp2/dramrecal.fth @@ -889,7 +895,7 @@ " probe-" do-drop-in - [ifdef] unused-cores-off unused-cores-off [then] + [ifdef] unused-core-off unused-core-off [then] show-child update-ec-flash? if Modified: cpu/x86/pc/cpunode.fth ============================================================================== --- cpu/x86/pc/cpunode.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/x86/pc/cpunode.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -29,6 +29,16 @@ finish-device +[ifdef] olpc-cl4 +new-device + " cpu" device-name + " cpu" device-type + 1 " reg" integer-property + : open true ; + : close ; +finish-device +[then] + end-package stand-init: CPU nodes Modified: cpu/x86/pc/olpc/gui.fth ============================================================================== --- cpu/x86/pc/olpc/gui.fth Mon Dec 8 01:24:07 2014 (r3751) +++ cpu/x86/pc/olpc/gui.fth Tue Dec 30 01:53:50 2014 (r3752) @@ -498,15 +498,16 @@ " bigx" $show-centered ; -: linux-hook-unfreeze - [ ' linux-hook behavior compile, ] -; -: linux-hook-freeze +defer show-going-hook ' noop to show-going-hook + +: linux-hook-gui [ ' linux-hook behavior compile, ] - show-going + show-going-hook ; -: freeze ( -- ) ['] linux-hook-freeze to linux-hook ; -: unfreeze ( -- ) ['] linux-hook-unfreeze to linux-hook ; +' linux-hook-gui to linux-hook + +: freeze ( -- ) ['] show-going to show-going-hook ; +: unfreeze ( -- ) ['] noop to show-going-hook ; \ LICENSE_BEGIN