LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: dts file for MPC8343EA
From: Scott Wood @ 2009-12-11 18:46 UTC (permalink / raw)
  To: Junita Ajith; +Cc: Linuxppc-dev
In-Reply-To: <72d214170912101634l1fab97fewc849a819f767415c@mail.gmail.com>

Junita Ajith wrote:
> Hi Scott:
> 
> I am still stuck at Linux kernel booting in MPC8343EA based board.
> 
> I have disabled "Ethernet, PCI, USB, dma engines " in the *.dts file and 
> also in the kernel config.
> I am using MPC8349emitxgp.dts  ; enabled MPC8349ITX support in kernel 
> config also. In fact, I tried building MPC8349emITX; MPC8349MDS also. 
> Same behaviour!
> 
> With this, the kernel boots up (explicitly passing the DTB file and 
> cuImage NEVER worked) and hangs after
> 
> I am using Linux-V-2.6.27.18 and using powerpc-e300c3-gnu  toolchain  - 
> gcc-4.1.69-eglibc-2.5.69-1 to build u-boot-1.3.2 & linux.
> 
> With this, the kernel boots up (explicitly passing the DTB file and 
> cuImage NEVER worked) and hangs after printing
> "Calibrating delay loop... 133.12 BogoMIPS (lpj=266240)"
> 
> With a few debug printks looks like the kernel hangs in
> "cpu_idle" in --main/init.c

Try to find out what threads are blocked where.

There may also have been a problem transitioning to the normal serial 
driver.  Do you have an external debugger than can extract the log buffer?

-Scott

^ permalink raw reply

* Re: dts file for MPC8343EA
From: Junita Ajith @ 2009-12-11 19:39 UTC (permalink / raw)
  To: Scott Wood; +Cc: Linuxppc-dev
In-Reply-To: <4B22939B.7060101@freescale.com>

[-- Attachment #1: Type: text/plain, Size: 6150 bytes --]

Hi Scott:

After enabling debugging option from kernel (2.6.29) , here is the log.

We do have an external debugger(BDI). But soon after the crash happens,
looks like the core freezes and hence reading from any location in memeory
gives "SAP: Read access failed" error.

I have disabled PCI.

--Thanks,
Junita

Screen-dump :
===========
Bytes transferred = 12288 (3000 hex)
SC3000> bootm 0x00600000 - 0x00900000
## Booting image at 00600000 ...
   Image Name:   Linux-2.6.29
   Created:      2009-12-11   2:59:37 UTC
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    2177151 Bytes =  2.1 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
   Booting using the fdt at 0x900000
   Loading Device Tree to 007fc000, end 007fefff ... OK
Using MPC834x ITX machine description
Linux version 2.6.29 (root@localhost.localdomain) (gcc version 4.1.2) #1 Thu
De9console [udbg0] enabled
setup_arch: bootmem
mpc834x_itx_setup_arch()
Found FSL PCI host bridge at 0x00000000e0008600. Firmware bus number: 1->1
PCI host bridge /pci@e0008600  ranges:
 MEM 0x00000000a0000000..0x00000000afffffff -> 0x00000000a0000000 Prefetch
 MEM 0x00000000b0000000..0x00000000bfffffff -> 0x00000000b0000000
  IO 0x00000000e3000000..0x00000000e3ffffff -> 0x0000000000000000
arch: exit
Zone PFN ranges:
  DMA      0x00000000 -> 0x00008000
  Normal   0x00008000 -> 0x00008000
  HighMem  0x00008000 -> 0x00008000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0: 0x00000000 -> 0x00008000
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: root=/dev/ram rw console=ttyS0,115200 mem=128M
IPIC (128 IRQ sources) at fe7fc700
BUG: spinlock bad magic on CPU#0, swapper/0
 lock: c041c3b8, .magic: dead4ead, .owner: <none>/-1, .owner_cpu: -1
Call Trace:
[c0449db0] [c0008990] show_stack+0x3c/0x160 (unreliable)
[c0449de0] [c01fced8] spin_bug+0x8c/0xd0
[c0449e00] [c01fd0e0] _raw_spin_lock+0x94/0x16c
[c0449e30] [c02bcef0] _spin_lock_irqsave+0x20/0x38
[c0449e50] [c004ea4c] down_trylock+0x18/0x4c
[c0449e60] [c0032650] try_acquire_console_sem+0x20/0x7c
[c0449e70] [c0032de0] vprintk+0x148/0x3a4
[c0449f20] [c003308c] printk+0x50/0x60
[c0449f60] [c03f4e98] ipic_init+0x17c/0x180
[c0449fa0] [c03fa7dc] mpc834x_itx_init_IRQ+0x2c/0x40
[c0449fb0] [c03ebee8] init_IRQ+0x24/0x34
[c0449fc0] [c03e570c] start_kernel+0x158/0x2b4
[c0449ff0] [00003438] 0x3438
PID hash table entries: 512 (order: 9, 2048 bytes)
time_init: decrementer frequency = 66.666666 MHz
time_init: processor frequency   = 399.999996 MHz
clocksource: timebase mult[3c00001] shift[22] registered
clockevent: decrementer mult[1111] shift[16] cpu[0]
Console: colour dummy device 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
High memory: 0k
Memory: 124912k/131072k available (4188k kernel code, 6008k reserved, 192k
data)SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop... 133.12 BogoMIPS (lpj=266240)
Mount-cache hash table entries: 512
khelper used greatest stack depth: 7656 bytes left
         Unable to handle kernel paging request for data at address
0xffff3f60
Faulting instruction address: 0xc005e984
Oops: Kernel access of bad area, sig: 11 [#1]
MPC834x ITX
NIP: c005e984 LR: c005eae8 CTR: c005eb48
REGS: c781dd00 TRAP: 0300   Not tainted  (2.6.29)
MSR: 00009032 <EE,ME,IR,DR>  CR: 22000088  XER: 00000000
DAR: ffff3f60, DSISR: 20000000
TASK = c7818000[1] 'swapper' THREAD: c781c000
GPR00: c005eae8 c781ddb0 c7818000 ffff3f60 c03c1300 fffedb2b 00000100
00000000
GPR08: c0427c84 ffff3f60 00000001 c0440000 42000084 ffffffff 0fff7000
00800000
GPR16: ffffffff 00000000 007fff00 00000000 00000001 c0470000 c0478d1c
c03a0000
GPR24: 00000001 c0470000 0000000a c781c000 00009032 00000000 c0478ce0
c0427c64
NIP [c005e984] __rcu_process_callbacks+0x12c/0x2f0
LR [c005eae8] __rcu_process_callbacks+0x290/0x2f0
Call Trace:
[c781ddb0] [c005eae8] __rcu_process_callbacks+0x290/0x2f0 (unreliable)
[c781ddd0] [c005eb68] rcu_process_callbacks+0x20/0x44
[c781dde0] [c0038244] __do_softirq+0x90/0x140
[c781de20] [c0006534] do_softirq+0x58/0x5c
[c781de30] [c00380a0] irq_exit+0x48/0x58
[c781de40] [c0010e64] timer_interrupt+0x12c/0x188
[c781de60] [c0014484] ret_from_except+0x0/0x14
--- Exception: 901 at udbg_550_putc+0x1c/0x58
    LR = udbg_puts+0x48/0x6c
[c781df20] [00000000] (null) (unreliable)
[c781df30] [c03ee80c] udbg_progress+0x14/0x30
[c781df40] [c03ee8f8] ppc_init+0x3c/0x68
[c781df50] [c0003884] do_one_initcall+0x34/0x1a8
[c781dfd0] [c03e516c] kernel_init+0x94/0xf8
[c781dff0] [c0013c10] kernel_thread+0x4c/0x68
Instruction dump:
39200000 901e0008 913e0004 801f0000 901e0000 807e0024 2f830000 419e0090
7c691b78 3ba00000 48000008 41920038 <83e90000> 2e1f0000 41920008 7c00fa2c
Kernel panic - not syncing: Fatal exception in interrupt





On 12/11/09, Scott Wood <scottwood@freescale.com> wrote:
>
> Junita Ajith wrote:
>
>> Hi Scott:
>>
>> I am still stuck at Linux kernel booting in MPC8343EA based board.
>>
>> I have disabled "Ethernet, PCI, USB, dma engines " in the *.dts file and
>> also in the kernel config.
>> I am using MPC8349emitxgp.dts  ; enabled MPC8349ITX support in kernel
>> config also. In fact, I tried building MPC8349emITX; MPC8349MDS also. Same
>> behaviour!
>>
>> With this, the kernel boots up (explicitly passing the DTB file and
>> cuImage NEVER worked) and hangs after
>>
>> I am using Linux-V-2.6.27.18 and using powerpc-e300c3-gnu  toolchain  -
>> gcc-4.1.69-eglibc-2.5.69-1 to build u-boot-1.3.2 & linux.
>>
>> With this, the kernel boots up (explicitly passing the DTB file and
>> cuImage NEVER worked) and hangs after printing
>> "Calibrating delay loop... 133.12 BogoMIPS (lpj=266240)"
>>
>> With a few debug printks looks like the kernel hangs in
>> "cpu_idle" in --main/init.c
>>
>
> Try to find out what threads are blocked where.
>
> There may also have been a problem transitioning to the normal serial
> driver.  Do you have an external debugger than can extract the log buffer?
>
> -Scott
>

[-- Attachment #2: Type: text/html, Size: 7331 bytes --]

^ permalink raw reply

* Re: [RFC:PATCH 00/03] powerpc: Expose BookE debug registers through extended ptrace interface
From: Thiago Jung Bauermann @ 2009-12-11 20:07 UTC (permalink / raw)
  To: Dave Kleikamp
  Cc: linuxppc-dev list, Sergio Durigan Junior, Torez Smith,
	David Gibson
In-Reply-To: <1260498456.4329.8.camel@norville.austin.ibm.com>

On Fri 11 Dec 2009 00:27:36 Dave Kleikamp wrote:
> On Thu, 2009-12-10 at 20:23 -0600, Kumar Gala wrote:
> > On Dec 10, 2009, at 9:57 AM, Dave Kleikamp wrote:
> > > #define PPC_DEBUG_FEATURE_INSN_BP_RANGE		0x1
> > > #define PPC_DEBUG_FEATURE_INSN_BP_MASK		0x2
> > > #define PPC_DEBUG_FEATURE_DATA_BP_RANGE		0x4
> > > #define PPC_DEBUG_FEATURE_DATA_BP_MASK		0x8
> >
> > Is GDB smart enough to deal w/no condition_regs?  On some Book-E
> > devices we have 2 IACs, 2 DACs, and 0 DVCs.  Does it need to be in the
> > features?
> 
> I had discussed it with the gdb team.  I could easily add a feature
> flag, but it would be equivalent to num_condition_regs > 0.  I don't
> have a strong opinion either way.

The current GDB code we have here uses num_condition_regs > 0 to discover if 
DVCs are supported, so a PPC_DEBUG_FEATURE constant for that is redundant 
IMHO.
-- 
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center

^ permalink raw reply

* Re: [RFC:PATCH 00/03] powerpc: Expose BookE debug registers through extended ptrace interface
From: Kumar Gala @ 2009-12-11 20:51 UTC (permalink / raw)
  To: Thiago Jung Bauermann
  Cc: linuxppc-dev list, David Gibson, Sergio Durigan Junior,
	Dave Kleikamp, Torez Smith
In-Reply-To: <200912111807.56262.bauerman@br.ibm.com>


On Dec 11, 2009, at 2:07 PM, Thiago Jung Bauermann wrote:

> On Fri 11 Dec 2009 00:27:36 Dave Kleikamp wrote:
>> On Thu, 2009-12-10 at 20:23 -0600, Kumar Gala wrote:
>>> On Dec 10, 2009, at 9:57 AM, Dave Kleikamp wrote:
>>>> #define PPC_DEBUG_FEATURE_INSN_BP_RANGE		0x1
>>>> #define PPC_DEBUG_FEATURE_INSN_BP_MASK		0x2
>>>> #define PPC_DEBUG_FEATURE_DATA_BP_RANGE		0x4
>>>> #define PPC_DEBUG_FEATURE_DATA_BP_MASK		0x8
>>>=20
>>> Is GDB smart enough to deal w/no condition_regs?  On some Book-E
>>> devices we have 2 IACs, 2 DACs, and 0 DVCs.  Does it need to be in =
the
>>> features?
>>=20
>> I had discussed it with the gdb team.  I could easily add a feature
>> flag, but it would be equivalent to num_condition_regs > 0.  I don't
>> have a strong opinion either way.
>=20
> The current GDB code we have here uses num_condition_regs > 0 to =
discover if=20
> DVCs are supported, so a PPC_DEBUG_FEATURE constant for that is =
redundant=20
> IMHO.

That's fine, just want to make sure we are ok w/num_condition_regs =3D=3D =
0.

- k=

^ permalink raw reply

* Re: Deprecating of_platform, the path from here...
From: Arnd Bergmann @ 2009-12-11 21:17 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: linuxppc-dev, devicetree-discuss, David Miller, jk
In-Reply-To: <fa686aa40912110844l5990d6fbh7c9c0928513b055d@mail.gmail.com>

On Friday 11 December 2009 16:44:32 Grant Likely wrote:

> platform users far outnumber of_platform users.  I actually don't care
> which becomes the 'preferred' bus, just as long as one is chosen.  It
> is easy to migrate features between them.  When I look at the work
> required though, I think it is far more feasible to fold of_platform
> features into platform bus than it is to ask current platform users to
> migrate over to of_platform.

Yes, I think you have convinced me. For me the key argument is that
we can extend platform_bus to do everything that of_platform_bus
does today. 

If we can automatically turn "reg" and "interrupt" properties into
resources for the platform_devices created from a device tree,
and add interfaces to platform_device to operate directly on properties
of the underlying device, I'm happy.

DMA address translation is something that will require some care
to get right with platform_device, and it's important that we come
up with a nice syntax to define properties for regular
platform_devices that do not come from a device tree.

> Now, if consensus can be reached among architecture maintainers to
> make of_platform the preferred approach, and to deprecate platform
> bus, then I'm all for it and I'll work towards it  However, I
> personally don't think it will fly and so I'm not spending any effort
> on that direction.

Right.

	Arnd <><

^ permalink raw reply

* Re: [RFC PATCH v2 1/6] powerpc: wii: device tree
From: Benjamin Herrenschmidt @ 2009-12-11 21:59 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-2-git-send-email-albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote:
> Add a device tree source file for the Nintendo Wii video game console.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
> v1 -> v2
> - Document new bindings in Documentation/powerpc/dts-bindings.
>   Suggestion by Grant Likely.
> - Use same form for model property and compatible properties on the root
>   node.  Suggestion by Grant Likely.
> - Drop the model property in the soc node.  Suggestion by Grant Likely.
> - Move interrupt-parent to the soc node instead of explicitly adding it to
>   each child node.  Suggestion by Grant Likely.
> - Declare all available memory and deal with the hole and fb area in the
>   platform code. Suggestion by Segher Boessenkool.
> - Rename the "soc" node to "hollywood". Suggestion by Benjamin Herrenschmidt.
> - Remove the usbgecko node from the device tree and autodetect it in
>   platform code. Suggestion by Segher Boessenkool.
> - Don't use #cpus in cpus node. Suggestion by Segher Boessenkool.
> - Remove clock-frequency property from the soc node.
>   Suggestion by Segher Boessenkool.
> - Create a processor-interface node and place flipper-pic into it.
>   Suggestion by Segher Boessenkool.
> - Remove #interrupt-cells from the hollywood node.
>   Suggestion by Segher Boessenkool.
> - Remove the mini header pointer from the device tree and deal with it
>   in platform code. Suggestion by Segher Boessenkool.
> - Add "usb-ohci" to the compatible property of ohci nodes.
>   Suggestion by Segher Boessenkool.
> - Add "usb-ehci" to the compatible property of ehci nodes.
>   Suggestion by Segher Boessenkool.
> - Don't use a different name if the unit address is different.
>   Suggestion by Benjamin Herrenschmidt.
> - Don't use "nobats", do a workaround in mmu_mapin_ram instead.
>   Suggestion by Benjamin Herrenschmidt.
> - Rename "mini" node to "ipc" and set it compatible with
>   "nintendo,hollywood-ipc".
> - Massive cleanups. Suggestions by Segher Boessenkool.
> - Comment out i2c over gpio bindings until a standard is agreed.
> - Use a single gpio controller node. It's just one controller with two
>  "views".
> 
>  .../powerpc/dts-bindings/nintendo/wii.txt          |  184 +++++++++++++++++
>  arch/powerpc/boot/dts/wii.dts                      |  218 ++++++++++++++++++++
>  2 files changed, 402 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/powerpc/dts-bindings/nintendo/wii.txt
>  create mode 100644 arch/powerpc/boot/dts/wii.dts
> 
> diff --git a/Documentation/powerpc/dts-bindings/nintendo/wii.txt b/Documentation/powerpc/dts-bindings/nintendo/wii.txt
> new file mode 100644
> index 0000000..a7e155a
> --- /dev/null
> +++ b/Documentation/powerpc/dts-bindings/nintendo/wii.txt
> @@ -0,0 +1,184 @@
> +
> +Nintendo Wii device tree
> +========================
> +
> +0) The root node
> +
> +  This node represents the Nintendo Wii video game console.
> +
> +  Required properties:
> +
> +   - model : Should be "nintendo,wii"
> +   - compatible : Should be "nintendo,wii"
> +
> +1) The "hollywood" node
> +
> +  This node represents the multi-function "Hollywood" chip, which packages
> +  many of the devices found in the Nintendo Wii.
> +
> +  Required properties:
> +
> +   - compatible : Should be "nintendo,hollywood"
> +
> +1.a) The Video Interface (VI) node
> +
> +  Represents the interface between the graphics processor and a external
> +  video encoder.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-vi","nintendo,flipper-vi"
> +   - reg : should contain the VI registers location and length
> +   - interrupts : should contain the VI interrupt
> +
> +1.b) The Processor Interface (PI) node
> +
> +  Represents the data and control interface between the main processor
> +  and graphics and audio processor.
> +
> +  Required properties:
> +
> +  - compatible : should be "nintendo,hollywood-pi","nintendo,flipper-pi"
> +  - reg : should contain the PI registers location and length
> +
> +1.b.i) The "Flipper" interrupt controller node
> +
> +  Represents the "Flipper" interrupt controller within the "Hollywood" chip.
> +  The node for the "Flipper" interrupt controller must be placed under
> +  the PI node.
> +
> +  Required properties:
> +
> +  - #interrupt-cells : <1>
> +  - compatible : should be "nintendo,flipper-pic"
> +  - interrupt-controller
> +
> +1.c) The Digital Signal Procesor (DSP) node
> +
> +  Represents the digital signal processor interface, designed to offload
> +  audio related tasks.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-dsp","nintendo,flipper-dsp"
> +   - reg : should contain the DSP registers location and length
> +   - interrupts : should contain the DSP interrupt
> +
> +1.d) The Serial Interface (SI) node
> +
> +  Represents the interface to the four single bit serial interfaces.
> +  The SI is a proprietary serial interface used normally to control gamepads.
> +  It's NOT a RS232-type interface.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-si","nintendo,flipper-si"
> +   - reg : should contain the SI registers location and length
> +   - interrupts : should contain the SI interrupt
> +
> +1.e) The Audio Interface (AI) node
> +
> +  Represents the interface to the external 16-bit stereo digital-to-analog
> +  converter.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-ai","nintendo,flipper-ai"
> +   - reg : should contain the AI registers location and length
> +   - interrupts : should contain the AI interrupt
> +
> +1.f) The External Interface (EXI) node
> +
> +  Represents the multi-channel SPI-like interface.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-exi","nintendo,flipper-exi"
> +   - reg : should contain the EXI registers location and length
> +   - interrupts : should contain the EXI interrupt
> +
> +1.g) The Open Host Controller Interface (OHCI) nodes
> +
> +  Represent the USB 1.x Open Host Controller Interfaces.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-usb-ohci","usb-ohci"
> +   - reg : should contain the OHCI registers location and length
> +   - interrupts : should contain the OHCI interrupt
> +
> +1.h) The Enhanced Host Controller Interface (EHCI) node
> +
> +  Represents the USB 2.0 Enhanced Host Controller Interface.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-usb-ehci","usb-ehci"
> +   - reg : should contain the EHCI registers location and length
> +   - interrupts : should contain the EHCI interrupt
> +
> +1.i) The Secure Digital Host Controller Interface (SDHCI) nodes
> +
> +  Represent the Secure Digital Host Controller Interfaces.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-sdhci","sdhci"
> +   - reg : should contain the SDHCI registers location and length
> +   - interrupts : should contain the SDHCI interrupt
> +
> +1.j) The Inter-Processsor Communication (IPC) node
> +
> +  Represent the Inter-Processor Communication interface. This interface
> +  enables communications between the Broadway and the Starlet processors.
> +
> +   - compatible : should be "nintendo,hollywood-ipc"
> +   - reg : should contain the IPC registers location and length
> +   - interrupts : should contain the IPC interrupt
> +
> +1.k) The "Hollywood" interrupt controller node
> +
> +  Represents the "Hollywood" interrupt controller within the
> +  "Hollywood" chip.
> +
> +  Required properties:
> +
> +  - #interrupt-cells : <1>
> +  - compatible : should be "nintendo,hollywood-pic"
> +  - reg : should contain the controller registers location and length
> +  - interrupt-controller
> +  - interrupts : should contain the cascade interrupt of the "flipper" pic
> +  - interrupt-parent: should contain the phandle of the "flipper" pic
> +
> +1.l) The General Purpose I/O (GPIO) controller node
> +
> +  Represents the dual access 32 GPIO controller interface.
> +
> +  Required properties:
> +
> +  - #gpio-cells : <2>
> +  - compatible : should be "nintendo,hollywood-gpio"
> +  - reg : should contain the IPC registers location and length
> +  - gpio-controller
> +
> +1.m) The control node
> +
> +  Represents the control interface used to setup several miscellaneous
> +  settings of the "Hollywood" chip like boot memory mappings, resets,
> +  disk interface mode, etc.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-control"
> +   - reg : should contain the control registers location and length
> +
> +1.n) The Disk Interface (DI) node
> +
> +  Represents the interface used to communicate with mass storage devices.
> +
> +  Required properties:
> +
> +   - compatible : should be "nintendo,hollywood-di"
> +   - reg : should contain the DI registers location and length
> +   - interrupts : should contain the DI interrupt
> +
> diff --git a/arch/powerpc/boot/dts/wii.dts b/arch/powerpc/boot/dts/wii.dts
> new file mode 100644
> index 0000000..77528c9
> --- /dev/null
> +++ b/arch/powerpc/boot/dts/wii.dts
> @@ -0,0 +1,218 @@
> +/*
> + * arch/powerpc/boot/dts/wii.dts
> + *
> + * Nintendo Wii platform device tree source
> + * Copyright (C) 2008-2009 The GameCube Linux Team
> + * Copyright (C) 2008,2009 Albert Herranz
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version.
> + *
> + */
> +
> +/dts-v1/;
> +
> +/*
> + * This is commented-out for now.
> + * Until a later patch is merged, the kernel can use only the first
> + * contiguous RAM range and will BUG() if the memreserve is outside
> + * that range.
> + */
> +/*/memreserve/ 0x10000000 0x0004000;*/	/* DSP RAM */
> +
> +/ {
> +	model = "nintendo,wii";
> +	compatible = "nintendo,wii";
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +
> +	chosen {
> +		bootargs = "root=/dev/mmcblk0p2 rootwait udbg-immortal";
> +	};
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x01800000	/* MEM1 24MB 1T-SRAM */
> +		       0x10000000 0x04000000>;	/* MEM2 64MB GDDR3 */
> +	};
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		PowerPC,broadway@0 {
> +			device_type = "cpu";
> +			reg = <0>;
> +			clock-frequency = <729000000>; /* 729MHz */
> +			bus-frequency = <243000000>; /* 243MHz core-to-bus 3x */
> +			timebase-frequency = <60750000>; /* 243MHz / 4 */
> +			i-cache-line-size = <32>;
> +			d-cache-line-size = <32>;
> +			i-cache-size = <32768>;
> +			d-cache-size = <32768>;
> +		};
> +	};
> +
> +	/* devices contained in the hollywood chipset */
> +	hollywood {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "nintendo,hollywood";
> +                ranges = <0x0c000000 0x0c000000 0x01000000
> +			  0x0d000000 0x0d000000 0x00800000
> +			  0x0d800000 0x0d800000 0x00800000>;
> +		interrupt-parent = <&PIC0>;
> +
> +		video@0c002000 {
> +			compatible = "nintendo,hollywood-vi",
> +					"nintendo,flipper-vi";
> +			reg = <0x0c002000 0x100>;
> +			interrupts = <8>;
> +		};
> +
> +		processor-interface@0c003000 {
> +			compatible = "nintendo,hollywood-pi",
> +					"nintendo,flipper-pi";
> +			reg = <0x0c003000 0x100>;
> +
> +			PIC0: pic0 {
> +				#interrupt-cells = <1>;
> +				compatible = "nintendo,flipper-pic";
> +				interrupt-controller;
> +			};
> +		};
> +
> +		dsp@0c005000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			compatible = "nintendo,hollywood-dsp",
> +					"nintendo,flipper-dsp";
> +			reg = <0x0c005000 0x200>;
> +			interrupts = <6>;
> +		};
> +
> +		gamepad-controller@0d006400 {
> +			compatible = "nintendo,hollywood-si",
> +					"nintendo,flipper-si";
> +			reg = <0x0d006400 0x100>;
> +			interrupts = <3>;
> +		};
> +
> +		audio@0c006c00 {
> +			compatible = "nintendo,hollywood-ai",
> +					"nintendo,flipper-ai";
> +			reg = <0x0d006c00 0x20>;
> +			interrupts = <6>;
> +		};
> +
> +		/* External Interface bus */
> +		exi@0d006800 {
> +			compatible = "nintendo,hollywood-exi",
> +					"nintendo,flipper-exi";
> +			reg = <0x0d006800 0x40>;
> +			virtual-reg = <0x0d006800>;
> +			interrupts = <4>;
> +		};
> +
> +		usb@0d040000 {
> +			compatible = "nintendo,hollywood-usb-ehci",
> +					"usb-ehci";
> +			reg = <0x0d040000 0x100>;
> +			interrupts = <4>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		usb@0d050000 {
> +			compatible = "nintendo,hollywood-usb-ohci",
> +					"usb-ohci";
> +			reg = <0x0d050000 0x100>;
> +			interrupts = <5>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		usb@0d060000 {
> +			compatible = "nintendo,hollywood-usb-ohci",
> +					"usb-ohci";
> +			reg = <0x0d060000 0x100>;
> +			interrupts = <6>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		sd@0d070000 {
> +			compatible = "nintendo,hollywood-sdhci",
> +					"sdhci";
> +			reg = <0x0d070000 0x200>;
> +			interrupts = <7>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		sdio@0d080000 {
> +			compatible = "nintendo,hollywood-sdhci",
> +					"sdhci";
> +			reg = <0x0d080000 0x200>;
> +			interrupts = <8>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		ipc@0d000000 {
> +			compatible = "nintendo,hollywood-ipc";
> +			reg = <0x0d000000 0x10>;
> +			interrupts = <30>;
> +			interrupt-parent = <&PIC1>;
> +		};
> +
> +		PIC1: pic1@0d800030 {
> +			#interrupt-cells = <1>;
> +			compatible = "nintendo,hollywood-pic";
> +			reg = <0x0d800030 0x10>;
> +			interrupt-controller;
> +			interrupts = <14>;
> +		};
> +
> +		GPIO: gpio@0d8000c0 {
> +			#gpio-cells = <2>;
> +			compatible = "nintendo,hollywood-gpio";
> +			reg = <0x0d8000c0 0x40>;
> +			gpio-controller;
> +
> +			/*
> +			 * This is commented out while a standard binding
> +			 * for i2c over gpio is defined.
> +			 */
> +			/*
> +			i2c-video {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +			        compatible = "i2c-gpio";
> +
> +			        gpios = <&GPIO 15 0
> +			                 &GPIO 14 0>;
> +			        clock-frequency = <250000>;
> +				no-clock-stretching;
> +			        scl-is-open-drain;
> +			        sda-is-open-drain;
> +			        sda-enforce-dir;
> +
> +			        AVE: audio-video-encoder@70 {
> +			                compatible = "nintendo,wii-audio-video-encoder";
> +			                reg = <0x70>;
> +			        };
> +			};
> +			*/
> +		};
> +
> +		control@0d800100 {
> +			compatible = "nintendo,hollywood-control";
> +			reg = <0x0d800100 0x300>;
> +		};
> +
> +		disk@0d806000 {
> +			compatible = "nintendo,hollywood-di";
> +			reg = <0x0d806000 0x40>;
> +			interrupts = <2>;
> +		};
> +	};
> +};
> +

^ permalink raw reply

* Re: [RFC PATCH v2 2/6] powerpc: wii: bootwrapper bits
From: Benjamin Herrenschmidt @ 2009-12-11 21:59 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-3-git-send-email-albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote:
> Add support for the Nintendo Wii video game console to the powerpc
> bootwrapper.
> 
> dtbImage.wii is a wrapped image that contains a flat device tree,
> an entry point compatible with the Homebrew Channel and BootMii,
> and an optional initrd.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
> v1 -> v2
> - Save one asm instruction in a non-critical path.
>   Suggestion by Segher Boessenkool.
> - Use easier to read mtsrr0 and mtsrr1 mnemonics.
>   Suggestion by Segher Boessenkool.
> - Get rid of sync before rfi.
>   Suggestion by Segher Boessenkool.
> - Zero a BAT by simply zeroing the upper BAT instead of both lower
>   and upper BATs. Suggestion by Segher Boessenkool.
> - Get rid of unneeded isync. Suggestion by Segher Boessenkool.
> - Write first the lower BAT then the upper BAT.
>   Suggestion by Segher Boessenkool.
> - Get rid of unneeded "sync; isync". Suggestion by Segher Boessenkool.
> - Use read/modify/write to update HID4 instead of setting it to a known
>   value. Suggestion by Segher Boessenkool.
> - Add an isync after modifying HID4. Suggestion by Segher Boessenkool.
> - Invalidate caches before enabling them. Suggestion by Segher Boessenkool.
> - Enable caches only if not enabled already.
> - Make sure EXI is enabled before probing for a USB Gecko.
> 
>  arch/powerpc/boot/Makefile   |    3 +-
>  arch/powerpc/boot/wii-head.S |  142 ++++++++++++++++++++++++++++++++++++++++++
>  arch/powerpc/boot/wii.c      |   46 ++++++++++++++
>  arch/powerpc/boot/wrapper    |    2 +-
>  4 files changed, 191 insertions(+), 2 deletions(-)
>  create mode 100644 arch/powerpc/boot/wii-head.S
>  create mode 100644 arch/powerpc/boot/wii.c
> 
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index 3e70aab..bb2465b 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -77,7 +77,7 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
>  		cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \
>  		virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \
>  		cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \
> -		gamecube-head.S gamecube.c
> +		gamecube-head.S gamecube.c wii-head.S wii.c
>  src-boot := $(src-wlib) $(src-plat) empty.c
>  
>  src-boot := $(addprefix $(obj)/, $(src-boot))
> @@ -256,6 +256,7 @@ image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
>  image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
>  image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
>  image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
> +image-$(CONFIG_WII)			+= dtbImage.wii
>  
>  # Board port in arch/powerpc/platform/amigaone/Kconfig
>  image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone
> diff --git a/arch/powerpc/boot/wii-head.S b/arch/powerpc/boot/wii-head.S
> new file mode 100644
> index 0000000..edd79b8
> --- /dev/null
> +++ b/arch/powerpc/boot/wii-head.S
> @@ -0,0 +1,142 @@
> +/*
> + * arch/powerpc/boot/wii-head.S
> + *
> + * Nintendo Wii bootwrapper entry.
> + * Copyright (C) 2008-2009 The GameCube Linux Team
> + * Copyright (C) 2008,2009 Albert Herranz
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version.
> + *
> + */
> +
> +#include "ppc_asm.h"
> +
> +/*
> + * The entry code does no assumptions regarding:
> + * - if the data and instruction caches are enabled or not
> + * - if the MMU is enabled or not
> + * - if the high BATs are enabled or not
> + *
> + * We enable the high BATs, enable the caches if not already enabled,
> + * enable the MMU with an identity mapping scheme and jump to the start code.
> + */
> +
> +	.text
> +
> +	.globl _zimage_start
> +_zimage_start:
> +
> +	/* turn the MMU off */
> +	mfmsr	9
> +	rlwinm	9, 9, 0, ~((1<<4)|(1<<5)) /* MSR_DR|MSR_IR */
> +	bcl	20, 31, 1f
> +1:
> +	mflr	8
> +	clrlwi	8, 8, 3		/* convert to a real address */
> +	addi	8, 8, _mmu_off - 1b
> +	mtsrr0	8
> +	mtsrr1	9
> +	rfi
> +_mmu_off:
> +	/* MMU disabled */
> +
> +	/* setup BATs */
> +	isync
> +	li      8, 0
> +	mtspr	0x210, 8	/* IBAT0U */
> +	mtspr	0x212, 8	/* IBAT1U */
> +	mtspr	0x214, 8	/* IBAT2U */
> +	mtspr	0x216, 8	/* IBAT3U */
> +	mtspr	0x218, 8	/* DBAT0U */
> +	mtspr	0x21a, 8	/* DBAT1U */
> +	mtspr	0x21c, 8	/* DBAT2U */
> +	mtspr	0x21e, 8	/* DBAT3U */
> +
> +	mtspr	0x230, 8	/* IBAT4U */
> +	mtspr	0x232, 8	/* IBAT5U */
> +	mtspr	0x234, 8	/* IBAT6U */
> +	mtspr	0x236, 8	/* IBAT7U */
> +	mtspr	0x238, 8	/* DBAT4U */
> +	mtspr	0x23a, 8	/* DBAT5U */
> +	mtspr	0x23c, 8	/* DBAT6U */
> +	mtspr	0x23e, 8	/* DBAT7U */
> +
> +	li	8, 0x01ff	/* first 16MiB */
> +	li	9, 0x0002	/* rw */
> +	mtspr	0x211, 9	/* IBAT0L */
> +	mtspr	0x210, 8	/* IBAT0U */
> +	mtspr	0x219, 9	/* DBAT0L */
> +	mtspr	0x218, 8	/* DBAT0U */
> +
> +	lis	8, 0x0c00	/* I/O mem */
> +	ori	8, 8, 0x3ff	/* 32MiB */
> +	lis	9, 0x0c00
> +	ori	9, 9, 0x002a	/* uncached, guarded, rw */
> +	mtspr	0x21b, 9	/* DBAT1L */
> +	mtspr	0x21a, 8	/* DBAT1U */
> +
> +	lis	8, 0x0100	/* next 8MiB */
> +	ori	8, 8, 0x00ff	/* 8MiB */
> +	lis	9, 0x0100
> +	ori	9, 9, 0x0002	/* rw */
> +	mtspr	0x215, 9	/* IBAT2L */
> +	mtspr	0x214, 8	/* IBAT2U */
> +	mtspr	0x21d, 9	/* DBAT2L */
> +	mtspr	0x21c, 8	/* DBAT2U */
> +
> +	lis	8, 0x1000	/* MEM2 */
> +	ori	8, 8, 0x07ff	/* 64MiB */
> +	lis	9, 0x1000
> +	ori	9, 9, 0x0002	/* rw */
> +	mtspr	0x216, 8	/* IBAT3U */
> +	mtspr	0x217, 9	/* IBAT3L */
> +	mtspr	0x21e, 8	/* DBAT3U */
> +	mtspr	0x21f, 9	/* DBAT3L */
> +
> +	/* enable the high BATs */
> +	mfspr	8, 0x3f3	/* HID4 */
> +	oris	8, 8, 0x0200
> +	mtspr	0x3f3, 8	/* HID4 */
> +
> +	/* enable and invalidate the caches if not already enabled */
> +	mfspr	8, 0x3f0	/* HID0 */
> +	andi.	0, 8, (1<<15)		/* HID0_ICE */
> +	bne	1f
> +	ori	8, 8, (1<<15)|(1<<11)	/* HID0_ICE|HID0_ICFI*/
> +1:
> +	andi.	0, 8, (1<<14)		/* HID0_DCE */
> +	bne	1f
> +	ori	8, 8, (1<<14)|(1<<10)	/* HID0_DCE|HID0_DCFI*/
> +1:
> +	mtspr	0x3f0, 8	/* HID0 */
> +	isync
> +
> +	/* initialize arguments */
> +	li	3, 0
> +	li	4, 0
> +	li	5, 0
> +
> +	/* turn the MMU on */
> +	bcl	20, 31, 1f
> +1:
> +	mflr	8
> +	addi	8, 8, _mmu_on - 1b
> +	mfmsr	9
> +	ori	9, 9, (1<<4)|(1<<5) /* MSR_DR|MSR_IR */
> +	mtsrr0	8
> +	mtsrr1	9
> +	sync
> +	rfi
> +_mmu_on:
> +	/* turn on the front blue led (aka: yay! we got here!) */
> +	lis	8, 0x0d00
> +	ori	8, 8, 0x00c0
> +	lwz	9, 0(8)
> +	ori	9, 9, 0x20
> +	stw	9, 0(8)
> +
> +	b _zimage_start_lib
> +
> diff --git a/arch/powerpc/boot/wii.c b/arch/powerpc/boot/wii.c
> new file mode 100644
> index 0000000..d0e2625
> --- /dev/null
> +++ b/arch/powerpc/boot/wii.c
> @@ -0,0 +1,46 @@
> +/*
> + * arch/powerpc/boot/wii.c
> + *
> + * Nintendo Wii bootwrapper support
> + * Copyright (C) 2008-2009 The GameCube Linux Team
> + * Copyright (C) 2008,2009 Albert Herranz
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version.
> + *
> + */
> +
> +#include <stddef.h>
> +#include "stdio.h"
> +#include "types.h"
> +#include "io.h"
> +#include "ops.h"
> +
> +#include "ugecon.h"
> +
> +BSS_STACK(8192);
> +
> +#define HW_REG(x)	((void *)(x))
> +
> +#define EXI_CTRL	HW_REG(0x0d800070)
> +#define EXI_CTRL_ENABLE	(1<<0)
> +
> +void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
> +{
> +	u32 heapsize = 24*1024*1024 - (u32)_end;
> +
> +	simple_alloc_init(_end, heapsize, 32, 64);
> +	fdt_init(_dtb_start);
> +
> +	/*
> +	 * 'mini' boots the Broadway processor with EXI disabled.
> +	 * We need it enabled before probing for the USB Gecko.
> +	 */
> +	out_be32(EXI_CTRL, in_be32(EXI_CTRL) | EXI_CTRL_ENABLE);
> +
> +	if (ug_probe())
> +		console_ops.write = ug_console_write;
> +}
> +
> diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
> index 5b9206f..390512a 100755
> --- a/arch/powerpc/boot/wrapper
> +++ b/arch/powerpc/boot/wrapper
> @@ -230,7 +230,7 @@ xpedite52*)
>      link_address='0x1400000'
>      platformo=$object/cuboot-85xx.o
>      ;;
> -gamecube)
> +gamecube|wii)
>      link_address='0x600000'
>      platformo="$object/$platform-head.o $object/$platform.o"
>      ;;

^ permalink raw reply

* Re: [RFC PATCH v2 3/6] powerpc: broadway processor support
From: Benjamin Herrenschmidt @ 2009-12-11 21:59 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-4-git-send-email-albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote:
> This patch extends the cputable entry of the 750CL to also match
> the 750CL-based "Broadway" cpu found on the Nintendo Wii.
> 
> As of this patch, the following "Broadway" design revision levels have
> been seen in the wild:
> - DD1.2 (87102)
> - DD2.0 (87200)
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>


> ---
> v1 -> v2
> - Don't reorder the table. Suggestion by Grant Likely.
> 
>  arch/powerpc/kernel/cputable.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
> index 03c862b..2fc82ba 100644
> --- a/arch/powerpc/kernel/cputable.c
> +++ b/arch/powerpc/kernel/cputable.c
> @@ -697,9 +697,9 @@ static struct cpu_spec __initdata cpu_specs[] = {
>  		.machine_check		= machine_check_generic,
>  		.platform		= "ppc750",
>  	},
> -	{	/* 750CL */
> -		.pvr_mask		= 0xfffff0f0,
> -		.pvr_value		= 0x00087010,
> +	{	/* 750CL (and "Broadway") */
> +		.pvr_mask		= 0xfffff0e0,
> +		.pvr_value		= 0x00087000,
>  		.cpu_name		= "750CL",
>  		.cpu_features		= CPU_FTRS_750CL,
>  		.cpu_user_features	= COMMON_USER | PPC_FEATURE_PPC_LE,

^ permalink raw reply

* Re: [RFC PATCH v2 4/6] powerpc: wii: hollywood interrupt controller support
From: Benjamin Herrenschmidt @ 2009-12-11 22:01 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-5-git-send-email-albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote:

> +static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
> +				      struct irq_desc *desc)
> +{
> +	struct irq_host *irq_host = get_irq_data(cascade_virq);
> +	unsigned int virq;
> +
> +	spin_lock(&desc->lock);
> +	desc->chip->mask(cascade_virq); /* IRQ_LEVEL */
> +	spin_unlock(&desc->lock);
> +
> +	virq = __hlwd_pic_get_irq(irq_host);
> +	if (virq != NO_IRQ)
> +		generic_handle_irq(virq);
> +	else
> +		pr_err("spurious interrupt!\n");
> +
> +	spin_lock(&desc->lock);
> +	desc->chip->ack(cascade_virq); /* IRQ_LEVEL */
> +	if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask)
> +		desc->chip->unmask(cascade_virq);
> +	spin_unlock(&desc->lock);
> +}

The above would not be necessary if instead of using a chained handler
you used a normal one, which is what I do for pmac-pic.

No big deal for now, though.

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

^ permalink raw reply

* Re: [RFC PATCH v2 6/6] powerpc: wii: default config
From: Benjamin Herrenschmidt @ 2009-12-11 22:02 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-7-git-send-email-albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 23:47 +0100, Albert Herranz wrote:
> Add a default configuration for the Nintendo Wii video game console.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
>  arch/powerpc/configs/wii_defconfig | 1406 ++++++++++++++++++++++++++++++++++++
>  1 files changed, 1406 insertions(+), 0 deletions(-)
>  create mode 100644 arch/powerpc/configs/wii_defconfig
> 
> diff --git a/arch/powerpc/configs/wii_defconfig b/arch/powerpc/configs/wii_defconfig
> new file mode 100644
> index 0000000..c386828
> --- /dev/null
> +++ b/arch/powerpc/configs/wii_defconfig
> @@ -0,0 +1,1406 @@
> +#
> +# Automatically generated make config: don't edit
> +# Linux kernel version: 2.6.32-rc8
> +# Sun Nov 22 20:37:21 2009
> +#
> +# CONFIG_PPC64 is not set
> +
> +#
> +# Processor support
> +#
> +CONFIG_PPC_BOOK3S_32=y
> +# CONFIG_PPC_85xx is not set
> +# CONFIG_PPC_8xx is not set
> +# CONFIG_40x is not set
> +# CONFIG_44x is not set
> +# CONFIG_E200 is not set
> +CONFIG_PPC_BOOK3S=y
> +CONFIG_6xx=y
> +CONFIG_PPC_FPU=y
> +# CONFIG_ALTIVEC is not set
> +CONFIG_PPC_STD_MMU=y
> +CONFIG_PPC_STD_MMU_32=y
> +# CONFIG_PPC_MM_SLICES is not set
> +CONFIG_PPC_HAVE_PMU_SUPPORT=y
> +CONFIG_PPC_PERF_CTRS=y
> +# CONFIG_SMP is not set
> +CONFIG_NOT_COHERENT_CACHE=y
> +CONFIG_PPC32=y
> +CONFIG_WORD_SIZE=32
> +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
> +CONFIG_MMU=y
> +CONFIG_GENERIC_CMOS_UPDATE=y
> +CONFIG_GENERIC_TIME=y
> +CONFIG_GENERIC_TIME_VSYSCALL=y
> +CONFIG_GENERIC_CLOCKEVENTS=y
> +CONFIG_GENERIC_HARDIRQS=y
> +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
> +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
> +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
> +CONFIG_IRQ_PER_CPU=y
> +CONFIG_STACKTRACE_SUPPORT=y
> +CONFIG_HAVE_LATENCYTOP_SUPPORT=y
> +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
> +CONFIG_LOCKDEP_SUPPORT=y
> +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
> +CONFIG_ARCH_HAS_ILOG2_U32=y
> +CONFIG_GENERIC_HWEIGHT=y
> +CONFIG_GENERIC_FIND_NEXT_BIT=y
> +CONFIG_GENERIC_GPIO=y
> +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
> +CONFIG_PPC=y
> +CONFIG_EARLY_PRINTK=y
> +CONFIG_GENERIC_NVRAM=y
> +CONFIG_SCHED_OMIT_FRAME_POINTER=y
> +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
> +CONFIG_PPC_OF=y
> +CONFIG_OF=y
> +# CONFIG_PPC_UDBG_16550 is not set
> +# CONFIG_GENERIC_TBSYNC is not set
> +CONFIG_AUDIT_ARCH=y
> +CONFIG_GENERIC_BUG=y
> +CONFIG_DTC=y
> +# CONFIG_DEFAULT_UIMAGE is not set
> +# CONFIG_PPC_DCR_NATIVE is not set
> +# CONFIG_PPC_DCR_MMIO is not set
> +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
> +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
> +CONFIG_CONSTRUCTORS=y
> +
> +#
> +# General setup
> +#
> +CONFIG_EXPERIMENTAL=y
> +CONFIG_BROKEN_ON_SMP=y
> +CONFIG_LOCK_KERNEL=y
> +CONFIG_INIT_ENV_ARG_LIMIT=32
> +CONFIG_LOCALVERSION="-wii"
> +# CONFIG_LOCALVERSION_AUTO is not set
> +CONFIG_SWAP=y
> +CONFIG_SYSVIPC=y
> +CONFIG_SYSVIPC_SYSCTL=y
> +# CONFIG_POSIX_MQUEUE is not set
> +# CONFIG_BSD_PROCESS_ACCT is not set
> +# CONFIG_TASKSTATS is not set
> +# CONFIG_AUDIT is not set
> +
> +#
> +# RCU Subsystem
> +#
> +CONFIG_TREE_RCU=y
> +# CONFIG_TREE_PREEMPT_RCU is not set
> +# CONFIG_RCU_TRACE is not set
> +CONFIG_RCU_FANOUT=32
> +# CONFIG_RCU_FANOUT_EXACT is not set
> +# CONFIG_TREE_RCU_TRACE is not set
> +CONFIG_IKCONFIG=y
> +CONFIG_IKCONFIG_PROC=y
> +CONFIG_LOG_BUF_SHIFT=14
> +CONFIG_GROUP_SCHED=y
> +CONFIG_FAIR_GROUP_SCHED=y
> +# CONFIG_RT_GROUP_SCHED is not set
> +CONFIG_USER_SCHED=y
> +# CONFIG_CGROUP_SCHED is not set
> +# CONFIG_CGROUPS is not set
> +CONFIG_SYSFS_DEPRECATED=y
> +CONFIG_SYSFS_DEPRECATED_V2=y
> +CONFIG_RELAY=y
> +# CONFIG_NAMESPACES is not set
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_INITRAMFS_SOURCE=""
> +CONFIG_RD_GZIP=y
> +# CONFIG_RD_BZIP2 is not set
> +# CONFIG_RD_LZMA is not set
> +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> +CONFIG_SYSCTL=y
> +CONFIG_ANON_INODES=y
> +CONFIG_EMBEDDED=y
> +CONFIG_SYSCTL_SYSCALL=y
> +CONFIG_KALLSYMS=y
> +CONFIG_KALLSYMS_ALL=y
> +# CONFIG_KALLSYMS_EXTRA_PASS is not set
> +CONFIG_HOTPLUG=y
> +CONFIG_PRINTK=y
> +CONFIG_BUG=y
> +# CONFIG_ELF_CORE is not set
> +CONFIG_BASE_FULL=y
> +CONFIG_FUTEX=y
> +CONFIG_EPOLL=y
> +CONFIG_SIGNALFD=y
> +CONFIG_TIMERFD=y
> +CONFIG_EVENTFD=y
> +CONFIG_SHMEM=y
> +CONFIG_AIO=y
> +CONFIG_HAVE_PERF_EVENTS=y
> +
> +#
> +# Kernel Performance Events And Counters
> +#
> +CONFIG_PERF_EVENTS=y
> +CONFIG_EVENT_PROFILE=y
> +CONFIG_PERF_COUNTERS=y
> +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
> +# CONFIG_VM_EVENT_COUNTERS is not set
> +CONFIG_COMPAT_BRK=y
> +CONFIG_SLAB=y
> +# CONFIG_SLUB is not set
> +# CONFIG_SLOB is not set
> +# CONFIG_PROFILING is not set
> +CONFIG_TRACEPOINTS=y
> +CONFIG_HAVE_OPROFILE=y
> +# CONFIG_KPROBES is not set
> +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
> +CONFIG_HAVE_IOREMAP_PROT=y
> +CONFIG_HAVE_KPROBES=y
> +CONFIG_HAVE_KRETPROBES=y
> +CONFIG_HAVE_ARCH_TRACEHOOK=y
> +CONFIG_HAVE_DMA_ATTRS=y
> +CONFIG_HAVE_DMA_API_DEBUG=y
> +
> +#
> +# GCOV-based kernel profiling
> +#
> +# CONFIG_GCOV_KERNEL is not set
> +CONFIG_SLOW_WORK=y
> +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
> +CONFIG_SLABINFO=y
> +CONFIG_RT_MUTEXES=y
> +CONFIG_BASE_SMALL=0
> +CONFIG_MODULES=y
> +# CONFIG_MODULE_FORCE_LOAD is not set
> +CONFIG_MODULE_UNLOAD=y
> +# CONFIG_MODULE_FORCE_UNLOAD is not set
> +# CONFIG_MODVERSIONS is not set
> +# CONFIG_MODULE_SRCVERSION_ALL is not set
> +CONFIG_BLOCK=y
> +CONFIG_LBDAF=y
> +CONFIG_BLK_DEV_BSG=y
> +# CONFIG_BLK_DEV_INTEGRITY is not set
> +
> +#
> +# IO Schedulers
> +#
> +CONFIG_IOSCHED_NOOP=y
> +CONFIG_IOSCHED_AS=y
> +CONFIG_IOSCHED_DEADLINE=y
> +CONFIG_IOSCHED_CFQ=y
> +CONFIG_DEFAULT_AS=y
> +# CONFIG_DEFAULT_DEADLINE is not set
> +# CONFIG_DEFAULT_CFQ is not set
> +# CONFIG_DEFAULT_NOOP is not set
> +CONFIG_DEFAULT_IOSCHED="anticipatory"
> +# CONFIG_FREEZER is not set
> +
> +#
> +# Platform support
> +#
> +# CONFIG_PPC_CHRP is not set
> +# CONFIG_MPC5121_ADS is not set
> +# CONFIG_MPC5121_GENERIC is not set
> +# CONFIG_PPC_MPC52xx is not set
> +# CONFIG_PPC_PMAC is not set
> +# CONFIG_PPC_CELL is not set
> +# CONFIG_PPC_CELL_NATIVE is not set
> +# CONFIG_PPC_82xx is not set
> +# CONFIG_PQ2ADS is not set
> +# CONFIG_PPC_83xx is not set
> +# CONFIG_PPC_86xx is not set
> +CONFIG_EMBEDDED6xx=y
> +# CONFIG_LINKSTATION is not set
> +# CONFIG_STORCENTER is not set
> +# CONFIG_MPC7448HPC2 is not set
> +# CONFIG_PPC_HOLLY is not set
> +# CONFIG_PPC_PRPMC2800 is not set
> +# CONFIG_PPC_C2K is not set
> +CONFIG_GAMECUBE_COMMON=y
> +CONFIG_USBGECKO_UDBG=y
> +CONFIG_FLIPPER_PIC=y
> +# CONFIG_GAMECUBE is not set
> +CONFIG_HLWD_PIC=y
> +CONFIG_STARLET_MINI=y
> +CONFIG_WII=y
> +# CONFIG_AMIGAONE is not set
> +# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
> +# CONFIG_IPIC is not set
> +# CONFIG_MPIC is not set
> +# CONFIG_MPIC_WEIRD is not set
> +# CONFIG_PPC_I8259 is not set
> +# CONFIG_PPC_RTAS is not set
> +# CONFIG_MMIO_NVRAM is not set
> +# CONFIG_PPC_MPC106 is not set
> +# CONFIG_PPC_970_NAP is not set
> +# CONFIG_PPC_INDIRECT_IO is not set
> +# CONFIG_GENERIC_IOMAP is not set
> +# CONFIG_CPU_FREQ is not set
> +# CONFIG_TAU is not set
> +# CONFIG_FSL_ULI1575 is not set
> +# CONFIG_SIMPLE_GPIO is not set
> +
> +#
> +# Kernel options
> +#
> +# CONFIG_HIGHMEM is not set
> +# CONFIG_NO_HZ is not set
> +# CONFIG_HIGH_RES_TIMERS is not set
> +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
> +# CONFIG_HZ_100 is not set
> +CONFIG_HZ_250=y
> +# CONFIG_HZ_300 is not set
> +# CONFIG_HZ_1000 is not set
> +CONFIG_HZ=250
> +# CONFIG_SCHED_HRTICK is not set
> +# CONFIG_PREEMPT_NONE is not set
> +# CONFIG_PREEMPT_VOLUNTARY is not set
> +CONFIG_PREEMPT=y
> +CONFIG_BINFMT_ELF=y
> +# CONFIG_HAVE_AOUT is not set
> +CONFIG_BINFMT_MISC=m
> +# CONFIG_IOMMU_HELPER is not set
> +# CONFIG_SWIOTLB is not set
> +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
> +CONFIG_ARCH_HAS_WALK_MEMORY=y
> +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
> +CONFIG_KEXEC=y
> +# CONFIG_CRASH_DUMP is not set
> +CONFIG_MAX_ACTIVE_REGIONS=32
> +CONFIG_ARCH_FLATMEM_ENABLE=y
> +CONFIG_ARCH_POPULATES_NODE_MAP=y
> +CONFIG_SELECT_MEMORY_MODEL=y
> +CONFIG_FLATMEM_MANUAL=y
> +# CONFIG_DISCONTIGMEM_MANUAL is not set
> +# CONFIG_SPARSEMEM_MANUAL is not set
> +CONFIG_FLATMEM=y
> +CONFIG_FLAT_NODE_MEM_MAP=y
> +CONFIG_PAGEFLAGS_EXTENDED=y
> +CONFIG_SPLIT_PTLOCK_CPUS=4
> +# CONFIG_MIGRATION is not set
> +# CONFIG_PHYS_ADDR_T_64BIT is not set
> +CONFIG_ZONE_DMA_FLAG=1
> +CONFIG_BOUNCE=y
> +CONFIG_VIRT_TO_BUS=y
> +CONFIG_HAVE_MLOCK=y
> +CONFIG_HAVE_MLOCKED_PAGE_BIT=y
> +# CONFIG_KSM is not set
> +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
> +CONFIG_PPC_4K_PAGES=y
> +# CONFIG_PPC_16K_PAGES is not set
> +# CONFIG_PPC_64K_PAGES is not set
> +# CONFIG_PPC_256K_PAGES is not set
> +CONFIG_FORCE_MAX_ZONEORDER=11
> +CONFIG_PROC_DEVICETREE=y
> +# CONFIG_CMDLINE_BOOL is not set
> +CONFIG_EXTRA_TARGETS=""
> +# CONFIG_PM is not set
> +# CONFIG_SECCOMP is not set
> +CONFIG_ISA_DMA_API=y
> +
> +#
> +# Bus options
> +#
> +CONFIG_ZONE_DMA=y
> +CONFIG_GENERIC_ISA_DMA=y
> +# CONFIG_PCI is not set
> +# CONFIG_PCI_DOMAINS is not set
> +# CONFIG_PCI_SYSCALL is not set
> +# CONFIG_ARCH_SUPPORTS_MSI is not set
> +# CONFIG_PCCARD is not set
> +# CONFIG_HAS_RAPIDIO is not set
> +
> +#
> +# Advanced setup
> +#
> +CONFIG_ADVANCED_OPTIONS=y
> +# CONFIG_LOWMEM_SIZE_BOOL is not set
> +CONFIG_LOWMEM_SIZE=0x30000000
> +# CONFIG_PAGE_OFFSET_BOOL is not set
> +CONFIG_PAGE_OFFSET=0xc0000000
> +# CONFIG_KERNEL_START_BOOL is not set
> +CONFIG_KERNEL_START=0xc0000000
> +CONFIG_PHYSICAL_START=0x00000000
> +# CONFIG_TASK_SIZE_BOOL is not set
> +CONFIG_TASK_SIZE=0xc0000000
> +# CONFIG_CONSISTENT_SIZE_BOOL is not set
> +CONFIG_CONSISTENT_SIZE=0x00200000
> +CONFIG_NET=y
> +
> +#
> +# Networking options
> +#
> +CONFIG_PACKET=y
> +# CONFIG_PACKET_MMAP is not set
> +CONFIG_UNIX=y
> +# CONFIG_NET_KEY is not set
> +CONFIG_INET=y
> +# CONFIG_IP_MULTICAST is not set
> +# CONFIG_IP_ADVANCED_ROUTER is not set
> +CONFIG_IP_FIB_HASH=y
> +CONFIG_IP_PNP=y
> +CONFIG_IP_PNP_DHCP=y
> +# CONFIG_IP_PNP_BOOTP is not set
> +CONFIG_IP_PNP_RARP=y
> +# CONFIG_NET_IPIP is not set
> +# CONFIG_NET_IPGRE is not set
> +# CONFIG_ARPD is not set
> +# CONFIG_SYN_COOKIES is not set
> +# CONFIG_INET_AH is not set
> +# CONFIG_INET_ESP is not set
> +# CONFIG_INET_IPCOMP is not set
> +# CONFIG_INET_XFRM_TUNNEL is not set
> +# CONFIG_INET_TUNNEL is not set
> +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
> +# CONFIG_INET_XFRM_MODE_TUNNEL is not set
> +# CONFIG_INET_XFRM_MODE_BEET is not set
> +# CONFIG_INET_LRO is not set
> +# CONFIG_INET_DIAG is not set
> +# CONFIG_TCP_CONG_ADVANCED is not set
> +CONFIG_TCP_CONG_CUBIC=y
> +CONFIG_DEFAULT_TCP_CONG="cubic"
> +# CONFIG_TCP_MD5SIG is not set
> +# CONFIG_IPV6 is not set
> +# CONFIG_NETWORK_SECMARK is not set
> +# CONFIG_NETFILTER is not set
> +# CONFIG_IP_DCCP is not set
> +# CONFIG_IP_SCTP is not set
> +# CONFIG_RDS is not set
> +# CONFIG_TIPC is not set
> +# CONFIG_ATM is not set
> +# CONFIG_BRIDGE is not set
> +# CONFIG_NET_DSA is not set
> +# CONFIG_VLAN_8021Q is not set
> +# CONFIG_DECNET is not set
> +# CONFIG_LLC2 is not set
> +# CONFIG_IPX is not set
> +# CONFIG_ATALK is not set
> +# CONFIG_X25 is not set
> +# CONFIG_LAPB is not set
> +# CONFIG_ECONET is not set
> +# CONFIG_WAN_ROUTER is not set
> +# CONFIG_PHONET is not set
> +# CONFIG_IEEE802154 is not set
> +# CONFIG_NET_SCHED is not set
> +# CONFIG_DCB is not set
> +
> +#
> +# Network testing
> +#
> +# CONFIG_NET_PKTGEN is not set
> +# CONFIG_NET_DROP_MONITOR is not set
> +# CONFIG_HAMRADIO is not set
> +# CONFIG_CAN is not set
> +# CONFIG_IRDA is not set
> +CONFIG_BT=y
> +CONFIG_BT_L2CAP=y
> +# CONFIG_BT_SCO is not set
> +CONFIG_BT_RFCOMM=y
> +# CONFIG_BT_RFCOMM_TTY is not set
> +CONFIG_BT_BNEP=y
> +CONFIG_BT_BNEP_MC_FILTER=y
> +# CONFIG_BT_BNEP_PROTO_FILTER is not set
> +CONFIG_BT_HIDP=y
> +
> +#
> +# Bluetooth device drivers
> +#
> +# CONFIG_BT_HCIBTSDIO is not set
> +# CONFIG_BT_HCIUART is not set
> +# CONFIG_BT_HCIVHCI is not set
> +# CONFIG_BT_MRVL is not set
> +# CONFIG_AF_RXRPC is not set
> +CONFIG_WIRELESS=y
> +CONFIG_CFG80211=y
> +# CONFIG_NL80211_TESTMODE is not set
> +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
> +# CONFIG_CFG80211_REG_DEBUG is not set
> +CONFIG_CFG80211_DEFAULT_PS=y
> +CONFIG_CFG80211_DEFAULT_PS_VALUE=1
> +# CONFIG_CFG80211_DEBUGFS is not set
> +CONFIG_WIRELESS_OLD_REGULATORY=y
> +CONFIG_WIRELESS_EXT=y
> +CONFIG_WIRELESS_EXT_SYSFS=y
> +# CONFIG_LIB80211 is not set
> +CONFIG_MAC80211=y
> +# CONFIG_MAC80211_RC_PID is not set
> +CONFIG_MAC80211_RC_MINSTREL=y
> +# CONFIG_MAC80211_RC_DEFAULT_PID is not set
> +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
> +CONFIG_MAC80211_RC_DEFAULT="minstrel"
> +# CONFIG_MAC80211_MESH is not set
> +# CONFIG_MAC80211_LEDS is not set
> +# CONFIG_MAC80211_DEBUGFS is not set
> +# CONFIG_MAC80211_DEBUG_MENU is not set
> +# CONFIG_WIMAX is not set
> +# CONFIG_RFKILL is not set
> +# CONFIG_NET_9P is not set
> +
> +#
> +# Device Drivers
> +#
> +
> +#
> +# Generic Driver Options
> +#
> +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
> +# CONFIG_DEVTMPFS is not set
> +# CONFIG_STANDALONE is not set
> +CONFIG_PREVENT_FIRMWARE_BUILD=y
> +CONFIG_FW_LOADER=y
> +# CONFIG_FIRMWARE_IN_KERNEL is not set
> +CONFIG_EXTRA_FIRMWARE=""
> +# CONFIG_DEBUG_DRIVER is not set
> +# CONFIG_DEBUG_DEVRES is not set
> +# CONFIG_SYS_HYPERVISOR is not set
> +# CONFIG_CONNECTOR is not set
> +# CONFIG_MTD is not set
> +CONFIG_OF_DEVICE=y
> +CONFIG_OF_GPIO=y
> +CONFIG_OF_I2C=y
> +# CONFIG_PARPORT is not set
> +CONFIG_BLK_DEV=y
> +# CONFIG_BLK_DEV_FD is not set
> +# CONFIG_BLK_DEV_COW_COMMON is not set
> +CONFIG_BLK_DEV_LOOP=y
> +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
> +# CONFIG_BLK_DEV_NBD is not set
> +CONFIG_BLK_DEV_RAM=y
> +CONFIG_BLK_DEV_RAM_COUNT=2
> +CONFIG_BLK_DEV_RAM_SIZE=4096
> +# CONFIG_BLK_DEV_XIP is not set
> +# CONFIG_CDROM_PKTCDVD is not set
> +# CONFIG_ATA_OVER_ETH is not set
> +# CONFIG_BLK_DEV_HD is not set
> +CONFIG_MISC_DEVICES=y
> +# CONFIG_ICS932S401 is not set
> +# CONFIG_ENCLOSURE_SERVICES is not set
> +# CONFIG_ISL29003 is not set
> +# CONFIG_C2PORT is not set
> +
> +#
> +# EEPROM support
> +#
> +# CONFIG_EEPROM_AT24 is not set
> +# CONFIG_EEPROM_LEGACY is not set
> +# CONFIG_EEPROM_MAX6875 is not set
> +# CONFIG_EEPROM_93CX6 is not set
> +CONFIG_HAVE_IDE=y
> +# CONFIG_IDE is not set
> +
> +#
> +# SCSI device support
> +#
> +# CONFIG_RAID_ATTRS is not set
> +CONFIG_SCSI=y
> +CONFIG_SCSI_DMA=y
> +# CONFIG_SCSI_TGT is not set
> +# CONFIG_SCSI_NETLINK is not set
> +CONFIG_SCSI_PROC_FS=y
> +
> +#
> +# SCSI support type (disk, tape, CD-ROM)
> +#
> +CONFIG_BLK_DEV_SD=y
> +# CONFIG_CHR_DEV_ST is not set
> +# CONFIG_CHR_DEV_OSST is not set
> +# CONFIG_BLK_DEV_SR is not set
> +# CONFIG_CHR_DEV_SG is not set
> +# CONFIG_CHR_DEV_SCH is not set
> +CONFIG_SCSI_MULTI_LUN=y
> +# CONFIG_SCSI_CONSTANTS is not set
> +# CONFIG_SCSI_LOGGING is not set
> +# CONFIG_SCSI_SCAN_ASYNC is not set
> +CONFIG_SCSI_WAIT_SCAN=m
> +
> +#
> +# SCSI Transports
> +#
> +# CONFIG_SCSI_SPI_ATTRS is not set
> +# CONFIG_SCSI_FC_ATTRS is not set
> +# CONFIG_SCSI_ISCSI_ATTRS is not set
> +# CONFIG_SCSI_SAS_ATTRS is not set
> +# CONFIG_SCSI_SAS_LIBSAS is not set
> +# CONFIG_SCSI_SRP_ATTRS is not set
> +CONFIG_SCSI_LOWLEVEL=y
> +# CONFIG_ISCSI_TCP is not set
> +# CONFIG_LIBFC is not set
> +# CONFIG_LIBFCOE is not set
> +# CONFIG_SCSI_DEBUG is not set
> +# CONFIG_SCSI_DH is not set
> +# CONFIG_SCSI_OSD_INITIATOR is not set
> +# CONFIG_ATA is not set
> +# CONFIG_MD is not set
> +# CONFIG_MACINTOSH_DRIVERS is not set
> +CONFIG_NETDEVICES=y
> +# CONFIG_DUMMY is not set
> +# CONFIG_BONDING is not set
> +# CONFIG_MACVLAN is not set
> +# CONFIG_EQUALIZER is not set
> +# CONFIG_TUN is not set
> +# CONFIG_VETH is not set
> +# CONFIG_PHYLIB is not set
> +CONFIG_NET_ETHERNET=y
> +CONFIG_MII=y
> +# CONFIG_ETHOC is not set
> +# CONFIG_DNET is not set
> +# CONFIG_IBM_NEW_EMAC_ZMII is not set
> +# CONFIG_IBM_NEW_EMAC_RGMII is not set
> +# CONFIG_IBM_NEW_EMAC_TAH is not set
> +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
> +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
> +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
> +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
> +# CONFIG_B44 is not set
> +# CONFIG_KS8842 is not set
> +# CONFIG_KS8851_MLL is not set
> +# CONFIG_XILINX_EMACLITE is not set
> +# CONFIG_NETDEV_1000 is not set
> +# CONFIG_NETDEV_10000 is not set
> +CONFIG_WLAN=y
> +# CONFIG_WLAN_PRE80211 is not set
> +CONFIG_WLAN_80211=y
> +# CONFIG_LIBERTAS is not set
> +# CONFIG_LIBERTAS_THINFIRM is not set
> +# CONFIG_MAC80211_HWSIM is not set
> +# CONFIG_P54_COMMON is not set
> +# CONFIG_ATH_COMMON is not set
> +# CONFIG_HOSTAP is not set
> +CONFIG_B43=y
> +CONFIG_B43_SDIO=y
> +CONFIG_B43_PIO=y
> +# CONFIG_B43_PHY_LP is not set
> +CONFIG_B43_DEBUG=y
> +# CONFIG_B43_FORCE_PIO is not set
> +# CONFIG_B43LEGACY is not set
> +# CONFIG_RT2X00 is not set
> +# CONFIG_WL12XX is not set
> +# CONFIG_IWM is not set
> +
> +#
> +# Enable WiMAX (Networking options) to see the WiMAX drivers
> +#
> +# CONFIG_WAN is not set
> +# CONFIG_PPP is not set
> +# CONFIG_SLIP is not set
> +# CONFIG_NETCONSOLE is not set
> +# CONFIG_NETPOLL is not set
> +# CONFIG_NET_POLL_CONTROLLER is not set
> +# CONFIG_ISDN is not set
> +# CONFIG_PHONE is not set
> +
> +#
> +# Input device support
> +#
> +CONFIG_INPUT=y
> +CONFIG_INPUT_FF_MEMLESS=m
> +# CONFIG_INPUT_POLLDEV is not set
> +
> +#
> +# Userland interfaces
> +#
> +CONFIG_INPUT_MOUSEDEV=y
> +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
> +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
> +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
> +CONFIG_INPUT_JOYDEV=y
> +CONFIG_INPUT_EVDEV=y
> +# CONFIG_INPUT_EVBUG is not set
> +
> +#
> +# Input Device Drivers
> +#
> +CONFIG_INPUT_KEYBOARD=y
> +# CONFIG_KEYBOARD_ADP5588 is not set
> +# CONFIG_KEYBOARD_ATKBD is not set
> +# CONFIG_QT2160 is not set
> +# CONFIG_KEYBOARD_LKKBD is not set
> +# CONFIG_KEYBOARD_GPIO is not set
> +# CONFIG_KEYBOARD_MATRIX is not set
> +# CONFIG_KEYBOARD_MAX7359 is not set
> +# CONFIG_KEYBOARD_NEWTON is not set
> +# CONFIG_KEYBOARD_OPENCORES is not set
> +# CONFIG_KEYBOARD_STOWAWAY is not set
> +# CONFIG_KEYBOARD_SUNKBD is not set
> +# CONFIG_KEYBOARD_XTKBD is not set
> +CONFIG_INPUT_MOUSE=y
> +# CONFIG_MOUSE_PS2 is not set
> +# CONFIG_MOUSE_SERIAL is not set
> +# CONFIG_MOUSE_VSXXXAA is not set
> +# CONFIG_MOUSE_GPIO is not set
> +# CONFIG_MOUSE_SYNAPTICS_I2C is not set
> +CONFIG_INPUT_JOYSTICK=y
> +# CONFIG_JOYSTICK_ANALOG is not set
> +# CONFIG_JOYSTICK_A3D is not set
> +# CONFIG_JOYSTICK_ADI is not set
> +# CONFIG_JOYSTICK_COBRA is not set
> +# CONFIG_JOYSTICK_GF2K is not set
> +# CONFIG_JOYSTICK_GRIP is not set
> +# CONFIG_JOYSTICK_GRIP_MP is not set
> +# CONFIG_JOYSTICK_GUILLEMOT is not set
> +# CONFIG_JOYSTICK_INTERACT is not set
> +# CONFIG_JOYSTICK_SIDEWINDER is not set
> +# CONFIG_JOYSTICK_TMDC is not set
> +# CONFIG_JOYSTICK_IFORCE is not set
> +# CONFIG_JOYSTICK_WARRIOR is not set
> +# CONFIG_JOYSTICK_MAGELLAN is not set
> +# CONFIG_JOYSTICK_SPACEORB is not set
> +# CONFIG_JOYSTICK_SPACEBALL is not set
> +# CONFIG_JOYSTICK_STINGER is not set
> +# CONFIG_JOYSTICK_TWIDJOY is not set
> +# CONFIG_JOYSTICK_ZHENHUA is not set
> +# CONFIG_JOYSTICK_JOYDUMP is not set
> +# CONFIG_INPUT_TABLET is not set
> +# CONFIG_INPUT_TOUCHSCREEN is not set
> +CONFIG_INPUT_MISC=y
> +CONFIG_INPUT_UINPUT=y
> +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
> +
> +#
> +# Hardware I/O ports
> +#
> +CONFIG_SERIO=y
> +# CONFIG_SERIO_I8042 is not set
> +# CONFIG_SERIO_SERPORT is not set
> +# CONFIG_SERIO_LIBPS2 is not set
> +# CONFIG_SERIO_RAW is not set
> +# CONFIG_SERIO_XILINX_XPS_PS2 is not set
> +# CONFIG_GAMEPORT is not set
> +
> +#
> +# Character devices
> +#
> +CONFIG_VT=y
> +CONFIG_CONSOLE_TRANSLATIONS=y
> +CONFIG_VT_CONSOLE=y
> +CONFIG_HW_CONSOLE=y
> +# CONFIG_VT_HW_CONSOLE_BINDING is not set
> +# CONFIG_DEVKMEM is not set
> +# CONFIG_SERIAL_NONSTANDARD is not set
> +
> +#
> +# Serial drivers
> +#
> +# CONFIG_SERIAL_8250 is not set
> +
> +#
> +# Non-8250 serial port support
> +#
> +# CONFIG_SERIAL_UARTLITE is not set
> +CONFIG_UNIX98_PTYS=y
> +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
> +CONFIG_LEGACY_PTYS=y
> +CONFIG_LEGACY_PTY_COUNT=64
> +# CONFIG_HVC_UDBG is not set
> +# CONFIG_IPMI_HANDLER is not set
> +# CONFIG_HW_RANDOM is not set
> +CONFIG_NVRAM=y
> +# CONFIG_R3964 is not set
> +# CONFIG_RAW_DRIVER is not set
> +# CONFIG_TCG_TPM is not set
> +CONFIG_I2C=y
> +CONFIG_I2C_BOARDINFO=y
> +CONFIG_I2C_COMPAT=y
> +CONFIG_I2C_CHARDEV=y
> +CONFIG_I2C_HELPER_AUTO=y
> +CONFIG_I2C_ALGOBIT=y
> +
> +#
> +# I2C Hardware Bus support
> +#
> +
> +#
> +# I2C system bus drivers (mostly embedded / system-on-chip)
> +#
> +CONFIG_I2C_GPIO=y
> +# CONFIG_I2C_MPC is not set
> +# CONFIG_I2C_OCORES is not set
> +# CONFIG_I2C_SIMTEC is not set
> +
> +#
> +# External I2C/SMBus adapter drivers
> +#
> +# CONFIG_I2C_PARPORT_LIGHT is not set
> +# CONFIG_I2C_TAOS_EVM is not set
> +
> +#
> +# Other I2C/SMBus bus drivers
> +#
> +# CONFIG_I2C_PCA_PLATFORM is not set
> +# CONFIG_I2C_STUB is not set
> +
> +#
> +# Miscellaneous I2C Chip support
> +#
> +# CONFIG_DS1682 is not set
> +# CONFIG_SENSORS_TSL2550 is not set
> +# CONFIG_I2C_DEBUG_CORE is not set
> +# CONFIG_I2C_DEBUG_ALGO is not set
> +# CONFIG_I2C_DEBUG_BUS is not set
> +# CONFIG_I2C_DEBUG_CHIP is not set
> +# CONFIG_SPI is not set
> +
> +#
> +# PPS support
> +#
> +# CONFIG_PPS is not set
> +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
> +CONFIG_GPIOLIB=y
> +# CONFIG_DEBUG_GPIO is not set
> +CONFIG_GPIO_SYSFS=y
> +
> +#
> +# Memory mapped GPIO expanders:
> +#
> +# CONFIG_GPIO_XILINX is not set
> +
> +#
> +# I2C GPIO expanders:
> +#
> +# CONFIG_GPIO_MAX732X is not set
> +# CONFIG_GPIO_PCA953X is not set
> +# CONFIG_GPIO_PCF857X is not set
> +
> +#
> +# PCI GPIO expanders:
> +#
> +
> +#
> +# SPI GPIO expanders:
> +#
> +
> +#
> +# AC97 GPIO expanders:
> +#
> +# CONFIG_W1 is not set
> +# CONFIG_POWER_SUPPLY is not set
> +# CONFIG_HWMON is not set
> +# CONFIG_THERMAL is not set
> +# CONFIG_WATCHDOG is not set
> +CONFIG_SSB_POSSIBLE=y
> +
> +#
> +# Sonics Silicon Backplane
> +#
> +CONFIG_SSB=y
> +CONFIG_SSB_BLOCKIO=y
> +CONFIG_SSB_SDIOHOST_POSSIBLE=y
> +CONFIG_SSB_SDIOHOST=y
> +# CONFIG_SSB_SILENT is not set
> +CONFIG_SSB_DEBUG=y
> +
> +#
> +# Multifunction device drivers
> +#
> +# CONFIG_MFD_CORE is not set
> +# CONFIG_MFD_SM501 is not set
> +# CONFIG_HTC_PASIC3 is not set
> +# CONFIG_TPS65010 is not set
> +# CONFIG_TWL4030_CORE is not set
> +# CONFIG_MFD_TMIO is not set
> +# CONFIG_PMIC_DA903X is not set
> +# CONFIG_MFD_WM8400 is not set
> +# CONFIG_MFD_WM831X is not set
> +# CONFIG_MFD_WM8350_I2C is not set
> +# CONFIG_MFD_PCF50633 is not set
> +# CONFIG_AB3100_CORE is not set
> +# CONFIG_REGULATOR is not set
> +# CONFIG_MEDIA_SUPPORT is not set
> +
> +#
> +# Graphics support
> +#
> +# CONFIG_VGASTATE is not set
> +# CONFIG_VIDEO_OUTPUT_CONTROL is not set
> +CONFIG_FB=y
> +# CONFIG_FIRMWARE_EDID is not set
> +# CONFIG_FB_DDC is not set
> +# CONFIG_FB_BOOT_VESA_SUPPORT is not set
> +# CONFIG_FB_CFB_FILLRECT is not set
> +# CONFIG_FB_CFB_COPYAREA is not set
> +# CONFIG_FB_CFB_IMAGEBLIT is not set
> +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
> +# CONFIG_FB_SYS_FILLRECT is not set
> +# CONFIG_FB_SYS_COPYAREA is not set
> +# CONFIG_FB_SYS_IMAGEBLIT is not set
> +# CONFIG_FB_FOREIGN_ENDIAN is not set
> +# CONFIG_FB_SYS_FOPS is not set
> +# CONFIG_FB_SVGALIB is not set
> +# CONFIG_FB_MACMODES is not set
> +# CONFIG_FB_BACKLIGHT is not set
> +# CONFIG_FB_MODE_HELPERS is not set
> +# CONFIG_FB_TILEBLITTING is not set
> +
> +#
> +# Frame buffer hardware drivers
> +#
> +# CONFIG_FB_OF is not set
> +# CONFIG_FB_VGA16 is not set
> +# CONFIG_FB_S1D13XXX is not set
> +# CONFIG_FB_IBM_GXT4500 is not set
> +# CONFIG_FB_VIRTUAL is not set
> +# CONFIG_FB_METRONOME is not set
> +# CONFIG_FB_MB862XX is not set
> +# CONFIG_FB_BROADSHEET is not set
> +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
> +
> +#
> +# Display device support
> +#
> +# CONFIG_DISPLAY_SUPPORT is not set
> +
> +#
> +# Console display driver support
> +#
> +# CONFIG_VGA_CONSOLE is not set
> +CONFIG_DUMMY_CONSOLE=y
> +CONFIG_FRAMEBUFFER_CONSOLE=y
> +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
> +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
> +# CONFIG_FONTS is not set
> +CONFIG_FONT_8x8=y
> +CONFIG_FONT_8x16=y
> +# CONFIG_LOGO is not set
> +CONFIG_SOUND=y
> +CONFIG_SOUND_OSS_CORE=y
> +CONFIG_SOUND_OSS_CORE_PRECLAIM=y
> +CONFIG_SND=y
> +CONFIG_SND_TIMER=y
> +CONFIG_SND_PCM=y
> +CONFIG_SND_SEQUENCER=y
> +# CONFIG_SND_SEQ_DUMMY is not set
> +CONFIG_SND_OSSEMUL=y
> +CONFIG_SND_MIXER_OSS=y
> +CONFIG_SND_PCM_OSS=y
> +CONFIG_SND_PCM_OSS_PLUGINS=y
> +CONFIG_SND_SEQUENCER_OSS=y
> +# CONFIG_SND_DYNAMIC_MINORS is not set
> +CONFIG_SND_SUPPORT_OLD_API=y
> +# CONFIG_SND_VERBOSE_PROCFS is not set
> +# CONFIG_SND_VERBOSE_PRINTK is not set
> +# CONFIG_SND_DEBUG is not set
> +# CONFIG_SND_RAWMIDI_SEQ is not set
> +# CONFIG_SND_OPL3_LIB_SEQ is not set
> +# CONFIG_SND_OPL4_LIB_SEQ is not set
> +# CONFIG_SND_SBAWE_SEQ is not set
> +# CONFIG_SND_EMU10K1_SEQ is not set
> +CONFIG_SND_DRIVERS=y
> +# CONFIG_SND_DUMMY is not set
> +# CONFIG_SND_VIRMIDI is not set
> +# CONFIG_SND_MTPAV is not set
> +# CONFIG_SND_SERIAL_U16550 is not set
> +# CONFIG_SND_MPU401 is not set
> +CONFIG_SND_PPC=y
> +# CONFIG_SND_SOC is not set
> +# CONFIG_SOUND_PRIME is not set
> +CONFIG_HID_SUPPORT=y
> +CONFIG_HID=y
> +# CONFIG_HIDRAW is not set
> +# CONFIG_HID_PID is not set
> +
> +#
> +# Special HID drivers
> +#
> +CONFIG_HID_APPLE=m
> +CONFIG_HID_WACOM=m
> +CONFIG_USB_SUPPORT=y
> +# CONFIG_USB_ARCH_HAS_HCD is not set
> +# CONFIG_USB_ARCH_HAS_OHCI is not set
> +# CONFIG_USB_ARCH_HAS_EHCI is not set
> +# CONFIG_USB_OTG_WHITELIST is not set
> +# CONFIG_USB_OTG_BLACKLIST_HUB is not set
> +
> +#
> +# Enable Host or Gadget support to see Inventra options
> +#
> +
> +#
> +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
> +#
> +# CONFIG_USB_GADGET is not set
> +
> +#
> +# OTG and related infrastructure
> +#
> +CONFIG_MMC=y
> +# CONFIG_MMC_DEBUG is not set
> +# CONFIG_MMC_UNSAFE_RESUME is not set
> +
> +#
> +# MMC/SD/SDIO Card Drivers
> +#
> +CONFIG_MMC_BLOCK=y
> +CONFIG_MMC_BLOCK_BOUNCE=y
> +# CONFIG_SDIO_UART is not set
> +# CONFIG_MMC_TEST is not set
> +
> +#
> +# MMC/SD/SDIO Host Controller Drivers
> +#
> +CONFIG_MMC_SDHCI=y
> +# CONFIG_MMC_SDHCI_OF is not set
> +# CONFIG_MMC_SDHCI_PLTFM is not set
> +# CONFIG_MMC_WBSD is not set
> +# CONFIG_MMC_AT91 is not set
> +# CONFIG_MMC_ATMELMCI is not set
> +# CONFIG_MEMSTICK is not set
> +# CONFIG_NEW_LEDS is not set
> +# CONFIG_ACCESSIBILITY is not set
> +# CONFIG_EDAC is not set
> +CONFIG_RTC_LIB=y
> +CONFIG_RTC_CLASS=y
> +CONFIG_RTC_HCTOSYS=y
> +CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
> +# CONFIG_RTC_DEBUG is not set
> +
> +#
> +# RTC interfaces
> +#
> +CONFIG_RTC_INTF_SYSFS=y
> +CONFIG_RTC_INTF_PROC=y
> +CONFIG_RTC_INTF_DEV=y
> +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
> +# CONFIG_RTC_DRV_TEST is not set
> +
> +#
> +# I2C RTC drivers
> +#
> +# CONFIG_RTC_DRV_DS1307 is not set
> +# CONFIG_RTC_DRV_DS1374 is not set
> +# CONFIG_RTC_DRV_DS1672 is not set
> +# CONFIG_RTC_DRV_MAX6900 is not set
> +# CONFIG_RTC_DRV_RS5C372 is not set
> +# CONFIG_RTC_DRV_ISL1208 is not set
> +# CONFIG_RTC_DRV_X1205 is not set
> +# CONFIG_RTC_DRV_PCF8563 is not set
> +# CONFIG_RTC_DRV_PCF8583 is not set
> +# CONFIG_RTC_DRV_M41T80 is not set
> +# CONFIG_RTC_DRV_S35390A is not set
> +# CONFIG_RTC_DRV_FM3130 is not set
> +# CONFIG_RTC_DRV_RX8581 is not set
> +# CONFIG_RTC_DRV_RX8025 is not set
> +
> +#
> +# SPI RTC drivers
> +#
> +
> +#
> +# Platform RTC drivers
> +#
> +# CONFIG_RTC_DRV_CMOS is not set
> +# CONFIG_RTC_DRV_DS1286 is not set
> +# CONFIG_RTC_DRV_DS1511 is not set
> +# CONFIG_RTC_DRV_DS1553 is not set
> +# CONFIG_RTC_DRV_DS1742 is not set
> +# CONFIG_RTC_DRV_STK17TA8 is not set
> +# CONFIG_RTC_DRV_M48T86 is not set
> +# CONFIG_RTC_DRV_M48T35 is not set
> +# CONFIG_RTC_DRV_M48T59 is not set
> +# CONFIG_RTC_DRV_BQ4802 is not set
> +# CONFIG_RTC_DRV_V3020 is not set
> +
> +#
> +# on-CPU RTC drivers
> +#
> +CONFIG_RTC_DRV_GENERIC=y
> +# CONFIG_DMADEVICES is not set
> +# CONFIG_AUXDISPLAY is not set
> +# CONFIG_UIO is not set
> +
> +#
> +# TI VLYNQ
> +#
> +# CONFIG_STAGING is not set
> +
> +#
> +# File systems
> +#
> +CONFIG_EXT2_FS=y
> +# CONFIG_EXT2_FS_XATTR is not set
> +# CONFIG_EXT2_FS_XIP is not set
> +CONFIG_EXT3_FS=y
> +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
> +# CONFIG_EXT3_FS_XATTR is not set
> +# CONFIG_EXT4_FS is not set
> +CONFIG_JBD=y
> +# CONFIG_JBD_DEBUG is not set
> +# CONFIG_REISERFS_FS is not set
> +# CONFIG_JFS_FS is not set
> +# CONFIG_FS_POSIX_ACL is not set
> +# CONFIG_XFS_FS is not set
> +# CONFIG_GFS2_FS is not set
> +# CONFIG_OCFS2_FS is not set
> +# CONFIG_BTRFS_FS is not set
> +# CONFIG_NILFS2_FS is not set
> +CONFIG_FILE_LOCKING=y
> +CONFIG_FSNOTIFY=y
> +CONFIG_DNOTIFY=y
> +CONFIG_INOTIFY=y
> +CONFIG_INOTIFY_USER=y
> +# CONFIG_QUOTA is not set
> +# CONFIG_AUTOFS_FS is not set
> +# CONFIG_AUTOFS4_FS is not set
> +CONFIG_FUSE_FS=m
> +# CONFIG_CUSE is not set
> +
> +#
> +# Caches
> +#
> +# CONFIG_FSCACHE is not set
> +
> +#
> +# CD-ROM/DVD Filesystems
> +#
> +CONFIG_ISO9660_FS=y
> +CONFIG_JOLIET=y
> +# CONFIG_ZISOFS is not set
> +# CONFIG_UDF_FS is not set
> +
> +#
> +# DOS/FAT/NT Filesystems
> +#
> +CONFIG_FAT_FS=y
> +CONFIG_MSDOS_FS=y
> +CONFIG_VFAT_FS=y
> +CONFIG_FAT_DEFAULT_CODEPAGE=437
> +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
> +# CONFIG_NTFS_FS is not set
> +
> +#
> +# Pseudo filesystems
> +#
> +CONFIG_PROC_FS=y
> +CONFIG_PROC_KCORE=y
> +CONFIG_PROC_SYSCTL=y
> +# CONFIG_PROC_PAGE_MONITOR is not set
> +CONFIG_SYSFS=y
> +CONFIG_TMPFS=y
> +# CONFIG_TMPFS_POSIX_ACL is not set
> +# CONFIG_HUGETLB_PAGE is not set
> +# CONFIG_CONFIGFS_FS is not set
> +CONFIG_MISC_FILESYSTEMS=y
> +# CONFIG_ADFS_FS is not set
> +# CONFIG_AFFS_FS is not set
> +# CONFIG_HFS_FS is not set
> +# CONFIG_HFSPLUS_FS is not set
> +# CONFIG_BEFS_FS is not set
> +# CONFIG_BFS_FS is not set
> +# CONFIG_EFS_FS is not set
> +# CONFIG_CRAMFS is not set
> +# CONFIG_SQUASHFS is not set
> +# CONFIG_VXFS_FS is not set
> +# CONFIG_MINIX_FS is not set
> +# CONFIG_OMFS_FS is not set
> +# CONFIG_HPFS_FS is not set
> +# CONFIG_QNX4FS_FS is not set
> +# CONFIG_ROMFS_FS is not set
> +# CONFIG_SYSV_FS is not set
> +# CONFIG_UFS_FS is not set
> +CONFIG_NETWORK_FILESYSTEMS=y
> +CONFIG_NFS_FS=y
> +CONFIG_NFS_V3=y
> +# CONFIG_NFS_V3_ACL is not set
> +# CONFIG_NFS_V4 is not set
> +CONFIG_ROOT_NFS=y
> +# CONFIG_NFSD is not set
> +CONFIG_LOCKD=y
> +CONFIG_LOCKD_V4=y
> +CONFIG_NFS_COMMON=y
> +CONFIG_SUNRPC=y
> +# CONFIG_RPCSEC_GSS_KRB5 is not set
> +# CONFIG_RPCSEC_GSS_SPKM3 is not set
> +# CONFIG_SMB_FS is not set
> +CONFIG_CIFS=m
> +# CONFIG_CIFS_STATS is not set
> +# CONFIG_CIFS_WEAK_PW_HASH is not set
> +# CONFIG_CIFS_XATTR is not set
> +# CONFIG_CIFS_DEBUG2 is not set
> +# CONFIG_CIFS_EXPERIMENTAL is not set
> +# CONFIG_NCP_FS is not set
> +# CONFIG_CODA_FS is not set
> +# CONFIG_AFS_FS is not set
> +
> +#
> +# Partition Types
> +#
> +# CONFIG_PARTITION_ADVANCED is not set
> +CONFIG_MSDOS_PARTITION=y
> +CONFIG_NLS=y
> +CONFIG_NLS_DEFAULT="iso8859-1"
> +CONFIG_NLS_CODEPAGE_437=y
> +# CONFIG_NLS_CODEPAGE_737 is not set
> +# CONFIG_NLS_CODEPAGE_775 is not set
> +# CONFIG_NLS_CODEPAGE_850 is not set
> +# CONFIG_NLS_CODEPAGE_852 is not set
> +# CONFIG_NLS_CODEPAGE_855 is not set
> +# CONFIG_NLS_CODEPAGE_857 is not set
> +# CONFIG_NLS_CODEPAGE_860 is not set
> +# CONFIG_NLS_CODEPAGE_861 is not set
> +# CONFIG_NLS_CODEPAGE_862 is not set
> +# CONFIG_NLS_CODEPAGE_863 is not set
> +# CONFIG_NLS_CODEPAGE_864 is not set
> +# CONFIG_NLS_CODEPAGE_865 is not set
> +# CONFIG_NLS_CODEPAGE_866 is not set
> +# CONFIG_NLS_CODEPAGE_869 is not set
> +# CONFIG_NLS_CODEPAGE_936 is not set
> +# CONFIG_NLS_CODEPAGE_950 is not set
> +# CONFIG_NLS_CODEPAGE_932 is not set
> +# CONFIG_NLS_CODEPAGE_949 is not set
> +# CONFIG_NLS_CODEPAGE_874 is not set
> +# CONFIG_NLS_ISO8859_8 is not set
> +# CONFIG_NLS_CODEPAGE_1250 is not set
> +# CONFIG_NLS_CODEPAGE_1251 is not set
> +# CONFIG_NLS_ASCII is not set
> +CONFIG_NLS_ISO8859_1=y
> +# CONFIG_NLS_ISO8859_2 is not set
> +# CONFIG_NLS_ISO8859_3 is not set
> +# CONFIG_NLS_ISO8859_4 is not set
> +# CONFIG_NLS_ISO8859_5 is not set
> +# CONFIG_NLS_ISO8859_6 is not set
> +# CONFIG_NLS_ISO8859_7 is not set
> +# CONFIG_NLS_ISO8859_9 is not set
> +# CONFIG_NLS_ISO8859_13 is not set
> +# CONFIG_NLS_ISO8859_14 is not set
> +# CONFIG_NLS_ISO8859_15 is not set
> +# CONFIG_NLS_KOI8_R is not set
> +# CONFIG_NLS_KOI8_U is not set
> +# CONFIG_NLS_UTF8 is not set
> +# CONFIG_DLM is not set
> +CONFIG_BINARY_PRINTF=y
> +
> +#
> +# Library routines
> +#
> +CONFIG_BITREVERSE=y
> +CONFIG_GENERIC_FIND_LAST_BIT=y
> +CONFIG_CRC_CCITT=y
> +CONFIG_CRC16=y
> +# CONFIG_CRC_T10DIF is not set
> +# CONFIG_CRC_ITU_T is not set
> +CONFIG_CRC32=y
> +# CONFIG_CRC7 is not set
> +# CONFIG_LIBCRC32C is not set
> +CONFIG_ZLIB_INFLATE=y
> +CONFIG_DECOMPRESS_GZIP=y
> +CONFIG_HAS_IOMEM=y
> +CONFIG_HAS_IOPORT=y
> +CONFIG_HAS_DMA=y
> +CONFIG_HAVE_LMB=y
> +CONFIG_NLATTR=y
> +CONFIG_GENERIC_ATOMIC64=y
> +
> +#
> +# Kernel hacking
> +#
> +CONFIG_PRINTK_TIME=y
> +CONFIG_ENABLE_WARN_DEPRECATED=y
> +CONFIG_ENABLE_MUST_CHECK=y
> +CONFIG_FRAME_WARN=1024
> +CONFIG_MAGIC_SYSRQ=y
> +# CONFIG_STRIP_ASM_SYMS is not set
> +# CONFIG_UNUSED_SYMBOLS is not set
> +CONFIG_DEBUG_FS=y
> +# CONFIG_HEADERS_CHECK is not set
> +CONFIG_DEBUG_KERNEL=y
> +# CONFIG_DEBUG_SHIRQ is not set
> +CONFIG_DETECT_SOFTLOCKUP=y
> +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
> +# CONFIG_DETECT_HUNG_TASK is not set
> +CONFIG_SCHED_DEBUG=y
> +CONFIG_SCHEDSTATS=y
> +# CONFIG_TIMER_STATS is not set
> +# CONFIG_DEBUG_OBJECTS is not set
> +# CONFIG_DEBUG_SLAB is not set
> +# CONFIG_DEBUG_KMEMLEAK is not set
> +CONFIG_DEBUG_PREEMPT=y
> +# CONFIG_DEBUG_RT_MUTEXES is not set
> +# CONFIG_RT_MUTEX_TESTER is not set
> +CONFIG_DEBUG_SPINLOCK=y
> +CONFIG_DEBUG_MUTEXES=y
> +# CONFIG_DEBUG_LOCK_ALLOC is not set
> +# CONFIG_PROVE_LOCKING is not set
> +# CONFIG_LOCK_STAT is not set
> +CONFIG_DEBUG_SPINLOCK_SLEEP=y
> +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
> +CONFIG_STACKTRACE=y
> +# CONFIG_DEBUG_KOBJECT is not set
> +CONFIG_DEBUG_BUGVERBOSE=y
> +# CONFIG_DEBUG_INFO is not set
> +# CONFIG_DEBUG_VM is not set
> +# CONFIG_DEBUG_WRITECOUNT is not set
> +# CONFIG_DEBUG_MEMORY_INIT is not set
> +# CONFIG_DEBUG_LIST is not set
> +# CONFIG_DEBUG_SG is not set
> +# CONFIG_DEBUG_NOTIFIERS is not set
> +# CONFIG_DEBUG_CREDENTIALS is not set
> +# CONFIG_RCU_TORTURE_TEST is not set
> +# CONFIG_RCU_CPU_STALL_DETECTOR is not set
> +# CONFIG_BACKTRACE_SELF_TEST is not set
> +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
> +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
> +# CONFIG_FAULT_INJECTION is not set
> +CONFIG_LATENCYTOP=y
> +CONFIG_SYSCTL_SYSCALL_CHECK=y
> +# CONFIG_DEBUG_PAGEALLOC is not set
> +CONFIG_NOP_TRACER=y
> +CONFIG_HAVE_FUNCTION_TRACER=y
> +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
> +CONFIG_HAVE_DYNAMIC_FTRACE=y
> +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
> +CONFIG_TRACER_MAX_TRACE=y
> +CONFIG_RING_BUFFER=y
> +CONFIG_EVENT_TRACING=y
> +CONFIG_CONTEXT_SWITCH_TRACER=y
> +CONFIG_TRACING=y
> +CONFIG_GENERIC_TRACER=y
> +CONFIG_TRACING_SUPPORT=y
> +CONFIG_FTRACE=y
> +# CONFIG_FUNCTION_TRACER is not set
> +# CONFIG_IRQSOFF_TRACER is not set
> +# CONFIG_PREEMPT_TRACER is not set
> +CONFIG_SCHED_TRACER=y
> +CONFIG_BOOT_TRACER=y
> +CONFIG_BRANCH_PROFILE_NONE=y
> +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
> +# CONFIG_PROFILE_ALL_BRANCHES is not set
> +# CONFIG_STACK_TRACER is not set
> +# CONFIG_KMEMTRACE is not set
> +# CONFIG_WORKQUEUE_TRACER is not set
> +CONFIG_BLK_DEV_IO_TRACE=y
> +# CONFIG_FTRACE_STARTUP_TEST is not set
> +# CONFIG_RING_BUFFER_BENCHMARK is not set
> +# CONFIG_DYNAMIC_DEBUG is not set
> +CONFIG_DMA_API_DEBUG=y
> +# CONFIG_SAMPLES is not set
> +CONFIG_HAVE_ARCH_KGDB=y
> +# CONFIG_KGDB is not set
> +# CONFIG_PPC_DISABLE_WERROR is not set
> +CONFIG_PPC_WERROR=y
> +CONFIG_PRINT_STACK_DEPTH=64
> +# CONFIG_DEBUG_STACKOVERFLOW is not set
> +# CONFIG_DEBUG_STACK_USAGE is not set
> +# CONFIG_PPC_EMULATED_STATS is not set
> +# CONFIG_CODE_PATCHING_SELFTEST is not set
> +# CONFIG_FTR_FIXUP_SELFTEST is not set
> +# CONFIG_MSI_BITMAP_SELFTEST is not set
> +# CONFIG_XMON is not set
> +# CONFIG_IRQSTACKS is not set
> +# CONFIG_VIRQ_DEBUG is not set
> +# CONFIG_BDI_SWITCH is not set
> +# CONFIG_BOOTX_TEXT is not set
> +CONFIG_PPC_EARLY_DEBUG=y
> +# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
> +# CONFIG_PPC_EARLY_DEBUG_G5 is not set
> +# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
> +# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
> +# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
> +# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
> +# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
> +# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
> +# CONFIG_PPC_EARLY_DEBUG_44x is not set
> +# CONFIG_PPC_EARLY_DEBUG_40x is not set
> +# CONFIG_PPC_EARLY_DEBUG_CPM is not set
> +CONFIG_PPC_EARLY_DEBUG_USBGECKO=y
> +
> +#
> +# Security options
> +#
> +# CONFIG_KEYS is not set
> +# CONFIG_SECURITY is not set
> +# CONFIG_SECURITYFS is not set
> +# CONFIG_SECURITY_FILE_CAPABILITIES is not set
> +CONFIG_CRYPTO=y
> +
> +#
> +# Crypto core or helper
> +#
> +CONFIG_CRYPTO_ALGAPI=y
> +CONFIG_CRYPTO_ALGAPI2=y
> +CONFIG_CRYPTO_AEAD2=y
> +CONFIG_CRYPTO_BLKCIPHER=y
> +CONFIG_CRYPTO_BLKCIPHER2=y
> +CONFIG_CRYPTO_HASH2=y
> +CONFIG_CRYPTO_RNG2=y
> +CONFIG_CRYPTO_PCOMP=y
> +CONFIG_CRYPTO_MANAGER=y
> +CONFIG_CRYPTO_MANAGER2=y
> +# CONFIG_CRYPTO_GF128MUL is not set
> +# CONFIG_CRYPTO_NULL is not set
> +CONFIG_CRYPTO_WORKQUEUE=y
> +# CONFIG_CRYPTO_CRYPTD is not set
> +# CONFIG_CRYPTO_AUTHENC is not set
> +# CONFIG_CRYPTO_TEST is not set
> +
> +#
> +# Authenticated Encryption with Associated Data
> +#
> +# CONFIG_CRYPTO_CCM is not set
> +# CONFIG_CRYPTO_GCM is not set
> +# CONFIG_CRYPTO_SEQIV is not set
> +
> +#
> +# Block modes
> +#
> +# CONFIG_CRYPTO_CBC is not set
> +# CONFIG_CRYPTO_CTR is not set
> +# CONFIG_CRYPTO_CTS is not set
> +CONFIG_CRYPTO_ECB=y
> +# CONFIG_CRYPTO_LRW is not set
> +# CONFIG_CRYPTO_PCBC is not set
> +# CONFIG_CRYPTO_XTS is not set
> +
> +#
> +# Hash modes
> +#
> +# CONFIG_CRYPTO_HMAC is not set
> +# CONFIG_CRYPTO_XCBC is not set
> +# CONFIG_CRYPTO_VMAC is not set
> +
> +#
> +# Digest
> +#
> +# CONFIG_CRYPTO_CRC32C is not set
> +# CONFIG_CRYPTO_GHASH is not set
> +# CONFIG_CRYPTO_MD4 is not set
> +# CONFIG_CRYPTO_MD5 is not set
> +# CONFIG_CRYPTO_MICHAEL_MIC is not set
> +# CONFIG_CRYPTO_RMD128 is not set
> +# CONFIG_CRYPTO_RMD160 is not set
> +# CONFIG_CRYPTO_RMD256 is not set
> +# CONFIG_CRYPTO_RMD320 is not set
> +# CONFIG_CRYPTO_SHA1 is not set
> +# CONFIG_CRYPTO_SHA256 is not set
> +# CONFIG_CRYPTO_SHA512 is not set
> +# CONFIG_CRYPTO_TGR192 is not set
> +# CONFIG_CRYPTO_WP512 is not set
> +
> +#
> +# Ciphers
> +#
> +CONFIG_CRYPTO_AES=y
> +# CONFIG_CRYPTO_ANUBIS is not set
> +CONFIG_CRYPTO_ARC4=y
> +# CONFIG_CRYPTO_BLOWFISH is not set
> +# CONFIG_CRYPTO_CAMELLIA is not set
> +# CONFIG_CRYPTO_CAST5 is not set
> +# CONFIG_CRYPTO_CAST6 is not set
> +# CONFIG_CRYPTO_DES is not set
> +# CONFIG_CRYPTO_FCRYPT is not set
> +# CONFIG_CRYPTO_KHAZAD is not set
> +# CONFIG_CRYPTO_SALSA20 is not set
> +# CONFIG_CRYPTO_SEED is not set
> +# CONFIG_CRYPTO_SERPENT is not set
> +# CONFIG_CRYPTO_TEA is not set
> +# CONFIG_CRYPTO_TWOFISH is not set
> +
> +#
> +# Compression
> +#
> +# CONFIG_CRYPTO_DEFLATE is not set
> +# CONFIG_CRYPTO_ZLIB is not set
> +# CONFIG_CRYPTO_LZO is not set
> +
> +#
> +# Random Number Generation
> +#
> +# CONFIG_CRYPTO_ANSI_CPRNG is not set
> +# CONFIG_CRYPTO_HW is not set
> +# CONFIG_PPC_CLOCK is not set
> +# CONFIG_VIRTUALIZATION is not set

^ permalink raw reply

* Re: [RFC PATCH v2 1/4] wii: bootwrapper: add fixup to calc useable mem2
From: Benjamin Herrenschmidt @ 2009-12-11 22:03 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1260297833-17625-2-git-send-email-albert_herranz@yahoo.es>

On Tue, 2009-12-08 at 19:43 +0100, Albert Herranz wrote:
> The top portion of MEM2 (the second 64MB memory block) in the Nintendo
> Wii video game console is used by the firmware running on the Starlet
> processor.
> 
> Add code to calculate the portion of MEM2 safely useable by the
> Broadway processor. When running under the 'mini' firmware this is
> easily determined from an in-memory header. Otherwise, a safe default
> is used.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
>  arch/powerpc/boot/wii.c |  118 +++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 115 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/boot/wii.c b/arch/powerpc/boot/wii.c
> index d0e2625..2ebaec0 100644
> --- a/arch/powerpc/boot/wii.c
> +++ b/arch/powerpc/boot/wii.c
> @@ -22,10 +22,120 @@
>  
>  BSS_STACK(8192);
>  
> -#define HW_REG(x)	((void *)(x))
> +#define HW_REG(x)		((void *)(x))
>  
> -#define EXI_CTRL	HW_REG(0x0d800070)
> -#define EXI_CTRL_ENABLE	(1<<0)
> +#define EXI_CTRL		HW_REG(0x0d800070)
> +#define EXI_CTRL_ENABLE		(1<<0)
> +
> +#define MEM2_TOP		(0x10000000 + 64*1024*1024)
> +#define FIRMWARE_DEFAULT_SIZE	(12*1024*1024)
> +
> +
> +struct mipc_infohdr {
> +	char magic[3];
> +	u8 version;
> +	u32 mem2_boundary;
> +	u32 ipc_in;
> +	size_t ipc_in_size;
> +	u32 ipc_out;
> +	size_t ipc_out_size;
> +};
> +
> +static int mipc_check_address(u32 pa)
> +{
> +	/* only MEM2 addresses */
> +	if (pa < 0x10000000 || pa > 0x14000000)
> +		return -EINVAL;
> +	return 0;
> +}
> +
> +static struct mipc_infohdr *mipc_get_infohdr(void)
> +{
> +	struct mipc_infohdr **hdrp, *hdr;
> +
> +	/* 'mini' header pointer is the last word of MEM2 memory */
> +	hdrp = (struct mipc_infohdr **)0x13fffffc;
> +	if (mipc_check_address((u32)hdrp)) {
> +		printf("mini: invalid hdrp %08X\n", (u32)hdrp);
> +		hdr = NULL;
> +		goto out;
> +	}
> +
> +	hdr = *hdrp;
> +	if (mipc_check_address((u32)hdr)) {
> +		printf("mini: invalid hdr %08X\n", (u32)hdr);
> +		hdr = NULL;
> +		goto out;
> +	}
> +	if (memcmp(hdr->magic, "IPC", 3)) {
> +		printf("mini: invalid magic\n");
> +		hdr = NULL;
> +		goto out;
> +	}
> +
> +out:
> +	return hdr;
> +}
> +
> +static int mipc_get_mem2_boundary(u32 *mem2_boundary)
> +{
> +	struct mipc_infohdr *hdr;
> +	int error;
> +
> +	hdr = mipc_get_infohdr();
> +	if (!hdr) {
> +		error = -1;
> +		goto out;
> +	}
> +
> +	if (mipc_check_address(hdr->mem2_boundary)) {
> +		printf("mini: invalid mem2_boundary %08X\n",
> +		       hdr->mem2_boundary);
> +		error = -EINVAL;
> +		goto out;
> +	}
> +	*mem2_boundary = hdr->mem2_boundary;
> +	error = 0;
> +out:
> +	return error;
> +
> +}
> +
> +static void platform_fixups(void)
> +{
> +	void *mem;
> +	u32 reg[4];
> +	u32 mem2_boundary;
> +	int len;
> +	int error;
> +
> +	mem = finddevice("/memory");
> +	if (!mem)
> +		fatal("Can't find memory node\n");
> +
> +	/* two ranges of (address, size) words */
> +	len = getprop(mem, "reg", reg, sizeof(reg));
> +	if (len != sizeof(reg)) {
> +		/* nothing to do */
> +		goto out;
> +	}
> +
> +	/* retrieve MEM2 boundary from 'mini' */
> +	error = mipc_get_mem2_boundary(&mem2_boundary);
> +	if (error) {
> +		/* if that fails use a sane value */
> +		mem2_boundary = MEM2_TOP - FIRMWARE_DEFAULT_SIZE;
> +	}
> +
> +	if (mem2_boundary > reg[2] && mem2_boundary < reg[2] + reg[3]) {
> +		reg[3] = mem2_boundary - reg[2];
> +		printf("top of MEM2 @ %08X\n", reg[2] + reg[3]);
> +		setprop(mem, "reg", reg, sizeof(reg));
> +	}
> +
> +out:
> +	return;
> +}
>  
>  void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
>  {
> @@ -42,5 +152,7 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
>  
>  	if (ug_probe())
>  		console_ops.write = ug_console_write;
> +
> +	platform_ops.fixups = platform_fixups;
>  }
>  

^ permalink raw reply

* Re: [RFC PATCH v2 2/4] wii: use both mem1 and mem2 as ram
From: Benjamin Herrenschmidt @ 2009-12-11 22:05 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1260297833-17625-3-git-send-email-albert_herranz@yahoo.es>

On Tue, 2009-12-08 at 19:43 +0100, Albert Herranz wrote:
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

That will do for now. At some stage somebody should look at getting
proper sparsemem etc... working (or even normal linear memmap with a
hole which isn't actually hard but will waste a bit of RAM).

Cheers,
Ben.

> ---
>  arch/powerpc/mm/init_32.c                |    4 ++
>  arch/powerpc/mm/mmu_decl.h               |   10 ++++-
>  arch/powerpc/mm/pgtable_32.c             |   32 +++++++++++++--
>  arch/powerpc/mm/ppc_mmu_32.c             |    4 +-
>  arch/powerpc/platforms/embedded6xx/wii.c |   63 ++++++++++++++++++++++++++++++
>  5 files changed, 106 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
> index 9ddcfb4..703c7c2 100644
> --- a/arch/powerpc/mm/init_32.c
> +++ b/arch/powerpc/mm/init_32.c
> @@ -131,9 +131,13 @@ void __init MMU_init(void)
>  	MMU_setup();
>  
>  	if (lmb.memory.cnt > 1) {
> +#ifndef CONFIG_WII
>  		lmb.memory.cnt = 1;
>  		lmb_analyze();
>  		printk(KERN_WARNING "Only using first contiguous memory region");
> +#else
> +		wii_memory_fixups();
> +#endif
>  	}
>  
>  	total_lowmem = total_memory = lmb_end_of_DRAM() - memstart_addr;
> diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
> index d2e5321..9aa39fe 100644
> --- a/arch/powerpc/mm/mmu_decl.h
> +++ b/arch/powerpc/mm/mmu_decl.h
> @@ -136,6 +136,14 @@ extern phys_addr_t total_lowmem;
>  extern phys_addr_t memstart_addr;
>  extern phys_addr_t lowmem_end_addr;
>  
> +#ifdef CONFIG_WII
> +extern unsigned long wii_hole_start;
> +extern unsigned long wii_hole_size;
> +
> +extern unsigned long wii_mmu_mapin_mem2(unsigned long top);
> +extern void wii_memory_fixups(void);
> +#endif
> +
>  /* ...and now those things that may be slightly different between processor
>   * architectures.  -- Dan
>   */
> @@ -155,5 +163,5 @@ extern void adjust_total_lowmem(void);
>  #elif defined(CONFIG_PPC32)
>  /* anything 32-bit except 4xx or 8xx */
>  extern void MMU_init_hw(void);
> -extern unsigned long mmu_mapin_ram(void);
> +extern unsigned long mmu_mapin_ram(unsigned long top);
>  #endif
> diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
> index cb96cb2..b55bbe8 100644
> --- a/arch/powerpc/mm/pgtable_32.c
> +++ b/arch/powerpc/mm/pgtable_32.c
> @@ -283,18 +283,18 @@ int map_page(unsigned long va, phys_addr_t pa, int flags)
>  }
>  
>  /*
> - * Map in a big chunk of physical memory starting at PAGE_OFFSET.
> + * Map in a chunk of physical memory starting at start.
>   */
> -void __init mapin_ram(void)
> +void __init __mapin_ram_chunk(unsigned long offset, unsigned long top)
>  {
>  	unsigned long v, s, f;
>  	phys_addr_t p;
>  	int ktext;
>  
> -	s = mmu_mapin_ram();
> +	s = offset;
>  	v = PAGE_OFFSET + s;
>  	p = memstart_addr + s;
> -	for (; s < total_lowmem; s += PAGE_SIZE) {
> +	for (; s < top; s += PAGE_SIZE) {
>  		ktext = ((char *) v >= _stext && (char *) v < etext);
>  		f = ktext ? PAGE_KERNEL_TEXT : PAGE_KERNEL;
>  		map_page(v, p, f);
> @@ -307,6 +307,30 @@ void __init mapin_ram(void)
>  	}
>  }
>  
> +void __init mapin_ram(void)
> +{
> +	unsigned long s, top;
> +
> +#ifndef CONFIG_WII
> +	top = total_lowmem;
> +	s = mmu_mapin_ram(top);
> +	__mapin_ram_chunk(s, top);
> +#else
> +	if (!wii_hole_size) {
> +		s = mmu_mapin_ram(total_lowmem);
> +		__mapin_ram_chunk(s, total_lowmem);
> +	} else {
> +		top = wii_hole_start;
> +		s = mmu_mapin_ram(top);
> +		__mapin_ram_chunk(s, top);
> +
> +		top = lmb_end_of_DRAM();
> +		s = wii_mmu_mapin_mem2(top);
> +		__mapin_ram_chunk(s, top);
> +	}
> +#endif
> +}
> +
>  /* Scan the real Linux page tables and return a PTE pointer for
>   * a virtual address in a context.
>   * Returns true (1) if PTE was found, zero otherwise.  The pointer to
> diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c
> index 2d2a87e..f11c2cd 100644
> --- a/arch/powerpc/mm/ppc_mmu_32.c
> +++ b/arch/powerpc/mm/ppc_mmu_32.c
> @@ -72,7 +72,7 @@ unsigned long p_mapped_by_bats(phys_addr_t pa)
>  	return 0;
>  }
>  
> -unsigned long __init mmu_mapin_ram(void)
> +unsigned long __init mmu_mapin_ram(unsigned long top)
>  {
>  	unsigned long tot, bl, done;
>  	unsigned long max_size = (256<<20);
> @@ -86,7 +86,7 @@ unsigned long __init mmu_mapin_ram(void)
>  
>  	/* Make sure we don't map a block larger than the
>  	   smallest alignment of the physical address. */
> -	tot = total_lowmem;
> +	tot = top;
>  	for (bl = 128<<10; bl < max_size; bl <<= 1) {
>  		if (bl * 2 > tot)
>  			break;
> diff --git a/arch/powerpc/platforms/embedded6xx/wii.c b/arch/powerpc/platforms/embedded6xx/wii.c
> index 1bd41cc..5eaed86 100644
> --- a/arch/powerpc/platforms/embedded6xx/wii.c
> +++ b/arch/powerpc/platforms/embedded6xx/wii.c
> @@ -20,6 +20,8 @@
>  #include <linux/seq_file.h>
>  #include <linux/kexec.h>
>  #include <linux/of_platform.h>
> +#include <linux/lmb.h>
> +#include <mm/mmu_decl.h>
>  
>  #include <asm/io.h>
>  #include <asm/machdep.h>
> @@ -52,6 +54,67 @@
>  static void __iomem *hw_ctrl;
>  static void __iomem *hw_gpio;
>  
> +unsigned long wii_hole_start;
> +unsigned long wii_hole_size;
> +
> +
> +static int page_aligned(unsigned long x)
> +{
> +	return !(x & (PAGE_SIZE-1));
> +}
> +
> +void __init wii_memory_fixups(void)
> +{
> +	struct lmb_property *p = lmb.memory.region;
> +
> +	/*
> +	 * This is part of a workaround to allow the use of two
> +	 * discontiguous RAM ranges on the Wii, even if this is
> +	 * currently unsupported on 32-bit PowerPC Linux.
> +	 *
> +	 * We coealesce the two memory ranges of the Wii into a
> +	 * single range, then create a reservation for the "hole"
> +	 * between both ranges.
> +	 */
> +
> +	BUG_ON(lmb.memory.cnt != 2);
> +	BUG_ON(!page_aligned(p[0].base) || !page_aligned(p[1].base));
> +
> +	p[0].size = _ALIGN_DOWN(p[0].size, PAGE_SIZE);
> +	p[1].size = _ALIGN_DOWN(p[1].size, PAGE_SIZE);
> +
> +	wii_hole_start = p[0].base + p[0].size;
> +	wii_hole_size = p[1].base - wii_hole_start;
> +
> +	pr_info("MEM1: <%08llx %08llx>\n", p[0].base, p[0].size);
> +	pr_info("HOLE: <%08lx %08lx>\n", wii_hole_start, wii_hole_size);
> +	pr_info("MEM2: <%08llx %08llx>\n", p[1].base, p[1].size);
> +
> +	p[0].size += wii_hole_size + p[1].size;
> +
> +	lmb.memory.cnt = 1;
> +	lmb_analyze();
> +
> +	/* reserve the hole */
> +	lmb_reserve(wii_hole_start, wii_hole_size);
> +}
> +
> +unsigned long __init wii_mmu_mapin_mem2(unsigned long top)
> +{
> +	unsigned long delta, size, bl;
> +	unsigned long max_size = (256<<20);
> +
> +	/* MEM2 64MB@0x10000000 */
> +	delta = wii_hole_start + wii_hole_size;
> +	size = top - delta;
> +	for (bl = 128<<10; bl < max_size; bl <<= 1) {
> +		if (bl * 2 > size)
> +			break;
> +	}
> +	setbat(4, PAGE_OFFSET+delta, delta, bl, PAGE_KERNEL_X);
> +	return delta + bl;
> +}
> +
>  static void wii_spin(void)
>  {
>  	local_irq_disable();

^ permalink raw reply

* Re: [RFC PATCH v2 3/4] powerpc: allow ioremap within reserved memory regions
From: Benjamin Herrenschmidt @ 2009-12-11 22:13 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1260297833-17625-4-git-send-email-albert_herranz@yahoo.es>

On Tue, 2009-12-08 at 19:43 +0100, Albert Herranz wrote:
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
> v1 -> v2
> - use a run-time flag to allow/disallow remapping reserved regions
> - use lmbs to determine reserved regions

We won't need that once we fix proper discontig mem.

BTW. Question: Why do we need that fixup of yours to fold the 2 LMBs
into one ?

Wouldn't it be easier just to keep the 2 LMBs ? You already fix the
mapin_ram thingy, so you could easily fix it up to just iterate over the
LMBs instead no ? For now, it could only BAT map the first LMB to
simplify things and we can fix the BAT mapping for the second one in a
second step too.

Wouldn't that work with simpler code ? An in the case of ioremap, the
test becomes simply to check if it's RAM by checking if it's in the LMB
rather than if it's reserved, which should be easier and wouldn't
require your flag to "enable" the tweak since it could perfectly be kept
as standard behaviour

Also the code in arch/powerpc/mm/mem.c will already deal with holes
just fine and will pass the hole size information to the VM which should
make it behave properly.

Thus I have the feeling that keeping the 2 LMBs rather than coalescing
would simplify the code basically by only requiring a small fixup of the
maping RAM bit.

I'm acking the patches for now, so you can always come up with a fixup
on top of them and we can merge the current ones.


>  arch/powerpc/mm/init_32.c    |    5 +++++
>  arch/powerpc/mm/mmu_decl.h   |    1 +
>  arch/powerpc/mm/pgtable_32.c |    4 +++-
>  include/linux/lmb.h          |    1 +
>  lib/lmb.c                    |    7 ++++++-
>  5 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
> index 703c7c2..4ec900a 100644
> --- a/arch/powerpc/mm/init_32.c
> +++ b/arch/powerpc/mm/init_32.c
> @@ -82,6 +82,11 @@ extern struct task_struct *current_set[NR_CPUS];
>  int __map_without_bats;
>  int __map_without_ltlbs;
>  
> +/*
> + * This tells the system to allow ioremapping memory marked as reserved.
> + */
> +int __allow_ioremap_reserved;
> +
>  /* max amount of low RAM to map in */
>  unsigned long __max_low_memory = MAX_LOW_MEM;
>  
> diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
> index 9aa39fe..34dacc3 100644
> --- a/arch/powerpc/mm/mmu_decl.h
> +++ b/arch/powerpc/mm/mmu_decl.h
> @@ -115,6 +115,7 @@ extern void settlbcam(int index, unsigned long virt, phys_addr_t phys,
>  extern void invalidate_tlbcam_entry(int index);
>  
>  extern int __map_without_bats;
> +extern int __allow_ioremap_reserved;
>  extern unsigned long ioremap_base;
>  extern unsigned int rtas_data, rtas_size;
>  
> diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
> index b55bbe8..177e403 100644
> --- a/arch/powerpc/mm/pgtable_32.c
> +++ b/arch/powerpc/mm/pgtable_32.c
> @@ -26,6 +26,7 @@
>  #include <linux/vmalloc.h>
>  #include <linux/init.h>
>  #include <linux/highmem.h>
> +#include <linux/lmb.h>
>  
>  #include <asm/pgtable.h>
>  #include <asm/pgalloc.h>
> @@ -191,7 +192,8 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags,
>  	 * Don't allow anybody to remap normal RAM that we're using.
>  	 * mem_init() sets high_memory so only do the check after that.
>  	 */
> -	if (mem_init_done && (p < virt_to_phys(high_memory))) {
> +	if (mem_init_done && (p < virt_to_phys(high_memory)) &&
> +	    !(__allow_ioremap_reserved && lmb_is_region_reserved(p, size))) {
>  		printk("__ioremap(): phys addr 0x%llx is RAM lr %p\n",
>  		       (unsigned long long)p, __builtin_return_address(0));
>  		return NULL;
> diff --git a/include/linux/lmb.h b/include/linux/lmb.h
> index 2442e3f..ef82b8f 100644
> --- a/include/linux/lmb.h
> +++ b/include/linux/lmb.h
> @@ -54,6 +54,7 @@ extern u64 __init lmb_phys_mem_size(void);
>  extern u64 lmb_end_of_DRAM(void);
>  extern void __init lmb_enforce_memory_limit(u64 memory_limit);
>  extern int __init lmb_is_reserved(u64 addr);
> +extern int lmb_is_region_reserved(u64 base, u64 size);
>  extern int lmb_find(struct lmb_property *res);
>  
>  extern void lmb_dump_all(void);
> diff --git a/lib/lmb.c b/lib/lmb.c
> index 0343c05..9cee171 100644
> --- a/lib/lmb.c
> +++ b/lib/lmb.c
> @@ -263,7 +263,7 @@ long __init lmb_reserve(u64 base, u64 size)
>  	return lmb_add_region(_rgn, base, size);
>  }
>  
> -long __init lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size)
> +long lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size)
>  {
>  	unsigned long i;
>  
> @@ -493,6 +493,11 @@ int __init lmb_is_reserved(u64 addr)
>  	return 0;
>  }
>  
> +int lmb_is_region_reserved(u64 base, u64 size)
> +{
> +	return lmb_overlaps_region(&lmb.reserved, base, size);
> +}
> +
>  /*
>   * Given a <base, len>, find which memory regions belong to this range.
>   * Adjust the request and return a contiguous chunk.

^ permalink raw reply

* Re: [RFC PATCH v2 4/4] powerpc: wii: allow ioremap within the memory hole
From: Benjamin Herrenschmidt @ 2009-12-11 22:13 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1260297833-17625-5-git-send-email-albert_herranz@yahoo.es>

On Tue, 2009-12-08 at 19:43 +0100, Albert Herranz wrote:
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> ---
>  arch/powerpc/platforms/embedded6xx/wii.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> diff --git a/arch/powerpc/platforms/embedded6xx/wii.c b/arch/powerpc/platforms/embedded6xx/wii.c
> index 5eaed86..0df8a91 100644
> --- a/arch/powerpc/platforms/embedded6xx/wii.c
> +++ b/arch/powerpc/platforms/embedded6xx/wii.c
> @@ -97,6 +97,9 @@ void __init wii_memory_fixups(void)
>  
>  	/* reserve the hole */
>  	lmb_reserve(wii_hole_start, wii_hole_size);
> +
> +	/* allow ioremapping the address space in the hole */
> +	__allow_ioremap_reserved = 1;
>  }
>  
>  unsigned long __init wii_mmu_mapin_mem2(unsigned long top)

^ permalink raw reply

* Re: [RFC PATCH v4 1/2] powerpc: reserve fixmap entries for early debug
From: Benjamin Herrenschmidt @ 2009-12-11 22:15 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <731eb73d0a309d0c23b30bea3718b976c3782b71.1259871725.git.albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 21:34 +0100, Albert Herranz wrote:
> Add a set of entries to the fixmap table to allow usage of known
> reserved virtual address space by early debug code.
> 
> The address space reserved is the top 128K of the 32-bit address
> space. This allows, if required, the use of a BAT to do the mappings.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

That will do for now. I have ideas to clean it up a bit but for now it's
fine.

> ---
>  arch/powerpc/include/asm/fixmap.h |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h
> index f1f4e23..5c2c023 100644
> --- a/arch/powerpc/include/asm/fixmap.h
> +++ b/arch/powerpc/include/asm/fixmap.h
> @@ -44,6 +44,9 @@
>   */
>  enum fixed_addresses {
>  	FIX_HOLE,
> +	/* reserve the top 128K for early debugging purposes */
> +	FIX_EARLY_DEBUG_TOP = FIX_HOLE,
> +	FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+((128*1024)/PAGE_SIZE)-1,
>  #ifdef CONFIG_HIGHMEM
>  	FIX_KMAP_BEGIN,	/* reserved pte's for temporary kernel mappings */
>  	FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,

^ permalink raw reply

* Re: [RFC PATCH v4 2/2] powerpc: gamecube/wii: early debugging using usbgecko
From: Benjamin Herrenschmidt @ 2009-12-11 22:16 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <4f4baca1cd65f7949610ca901c9a8bcb1bb74cfd.1259871725.git.albert_herranz@yahoo.es>

On Thu, 2009-12-03 at 21:35 +0100, Albert Herranz wrote:
> Add support for using the USB Gecko adapter as an early debugging
> console on the Nintendo GameCube and Wii video game consoles.
> The USB Gecko is a 3rd party memory card interface adapter that provides
> a EXI (External Interface) to USB serial converter.
> 
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
>  arch/powerpc/Kconfig.debug                         |    8 +++
>  arch/powerpc/include/asm/udbg.h                    |    1 +
>  arch/powerpc/kernel/head_32.S                      |   25 +++++++++
>  arch/powerpc/kernel/udbg.c                         |    2 +
>  arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c |   56 ++++++++++++++++++++
>  arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h |    2 +
>  6 files changed, 94 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index 3b10051..11e385b 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -254,6 +254,14 @@ config PPC_EARLY_DEBUG_CPM
>  	  using a CPM-based serial port.  This assumes that the bootwrapper
>  	  has run, and set up the CPM in a particular way.
>  
> +config PPC_EARLY_DEBUG_USBGECKO
> +	bool "Early debugging through the USB Gecko adapter"
> +	depends on GAMECUBE_COMMON
> +	select USBGECKO_UDBG
> +	help
> +	  Select this to enable early debugging for Nintendo GameCube/Wii
> +	  consoles via an external USB Gecko adapter.
> +
>  endchoice
>  
>  config PPC_EARLY_DEBUG_44x_PHYSLOW
> diff --git a/arch/powerpc/include/asm/udbg.h b/arch/powerpc/include/asm/udbg.h
> index cd21e5e..11ae699 100644
> --- a/arch/powerpc/include/asm/udbg.h
> +++ b/arch/powerpc/include/asm/udbg.h
> @@ -51,6 +51,7 @@ extern void __init udbg_init_btext(void);
>  extern void __init udbg_init_44x_as1(void);
>  extern void __init udbg_init_40x_realmode(void);
>  extern void __init udbg_init_cpm(void);
> +extern void __init udbg_init_usbgecko(void);
>  
>  #endif /* __KERNEL__ */
>  #endif /* _ASM_POWERPC_UDBG_H */
> diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
> index 829c3fe..00b89c0 100644
> --- a/arch/powerpc/kernel/head_32.S
> +++ b/arch/powerpc/kernel/head_32.S
> @@ -164,6 +164,9 @@ __after_mmu_off:
>  #ifdef CONFIG_PPC_EARLY_DEBUG_CPM
>  	bl	setup_cpm_bat
>  #endif
> +#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
> +	bl	setup_usbgecko_bat
> +#endif
>  
>  /*
>   * Call setup_cpu for CPU 0 and initialize 6xx Idle
> @@ -1203,6 +1206,28 @@ setup_cpm_bat:
>  	blr
>  #endif
>  
> +#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
> +setup_usbgecko_bat:
> +	/* prepare a BAT for early io */
> +#if defined(CONFIG_GAMECUBE)
> +	lis	r8, 0x0c00
> +#elif defined(CONFIG_WII)
> +	lis	r8, 0x0d00
> +#else
> +#error Invalid platform for USB Gecko based early debugging.
> +#endif
> +	/*
> +	 * The virtual address used must match the virtual address
> +	 * associated to the fixmap entry FIX_EARLY_DEBUG_BASE.
> +	 */
> +	lis	r11, 0xfffe	/* top 128K */
> +	ori	r8, r8, 0x002a	/* uncached, guarded ,rw */
> +	ori	r11, r11, 0x3	/* 128K */
> +	mtspr	SPRN_DBAT1L, r8
> +	mtspr	SPRN_DBAT1U, r11
> +	blr
> +#endif
> +
>  #ifdef CONFIG_8260
>  /* Jump into the system reset for the rom.
>   * We first disable the MMU, and then jump to the ROM reset address.
> diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
> index fc9af47..e39cad8 100644
> --- a/arch/powerpc/kernel/udbg.c
> +++ b/arch/powerpc/kernel/udbg.c
> @@ -60,6 +60,8 @@ void __init udbg_early_init(void)
>  	udbg_init_40x_realmode();
>  #elif defined(CONFIG_PPC_EARLY_DEBUG_CPM)
>  	udbg_init_cpm();
> +#elif defined(CONFIG_PPC_EARLY_DEBUG_USBGECKO)
> +	udbg_init_usbgecko();
>  #endif
>  
>  #ifdef CONFIG_PPC_EARLY_DEBUG
> diff --git a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
> index ba4c7cc..edc956c 100644
> --- a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
> +++ b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
> @@ -17,6 +17,7 @@
>  #include <asm/io.h>
>  #include <asm/prom.h>
>  #include <asm/udbg.h>
> +#include <asm/fixmap.h>
>  
>  #include "usbgecko_udbg.h"
>  
> @@ -270,3 +271,58 @@ done:
>  		of_node_put(np);
>  	return;
>  }
> +
> +#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
> +
> +static phys_addr_t __init ug_early_grab_io_addr(void)
> +{
> +#if defined(CONFIG_GAMECUBE)
> +	return 0x0c000000;
> +#elif defined(CONFIG_WII)
> +	return 0x0d000000;
> +#else
> +#error Invalid platform for USB Gecko based early debugging.
> +#endif
> +}
> +
> +/*
> + * USB Gecko early debug support initialization for udbg.
> + */
> +void __init udbg_init_usbgecko(void)
> +{
> +	void __iomem *early_debug_area;
> +	void __iomem *exi_io_base;
> +
> +	/*
> +	 * At this point we have a BAT already setup that enables I/O
> +	 * to the EXI hardware.
> +	 *
> +	 * The BAT uses a virtual address range reserved at the fixmap.
> +	 * This must match the virtual address configured in
> +	 * head_32.S:setup_usbgecko_bat().
> +	 */
> +	early_debug_area = (void __iomem *)__fix_to_virt(FIX_EARLY_DEBUG_BASE);
> +	exi_io_base = early_debug_area + 0x00006800;
> +
> +	/* try to detect a USB Gecko */
> +	if (!ug_udbg_probe(exi_io_base))
> +		return;
> +
> +	/* we found a USB Gecko, load udbg hooks */
> +	udbg_putc = ug_udbg_putc;
> +	udbg_getc = ug_udbg_getc;
> +	udbg_getc_poll = ug_udbg_getc_poll;
> +
> +	/*
> +	 * Prepare again the same BAT for MMU_init.
> +	 * This allows udbg I/O to continue working after the MMU is
> +	 * turned on for real.
> +	 * It is safe to continue using the same virtual address as it is
> +	 * a reserved fixmap area.
> +	 */
> +	setbat(1, (unsigned long)early_debug_area,
> +	       ug_early_grab_io_addr(), 128*1024, PAGE_KERNEL_NCG);
> +}
> +
> +#endif /* CONFIG_PPC_EARLY_DEBUG_USBGECKO */
> +
> diff --git a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
> index 3929de3..bb6cde4 100644
> --- a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
> +++ b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
> @@ -27,4 +27,6 @@ static inline void __init ug_udbg_init(void)
>  
>  #endif /* CONFIG_USBGECKO_UDBG */
>  
> +void __init udbg_init_usbgecko(void);
> +
>  #endif /* __USBGECKO_UDBG_H */

^ permalink raw reply

* Re: Deprecating of_platform, the path from here...
From: Benjamin Herrenschmidt @ 2009-12-11 22:19 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linuxppc-dev, devicetree-discuss, David Miller, jk
In-Reply-To: <200912111625.29674.arnd@arndb.de>


> The key to the solution IMHO is the ability to create an of_platform_device
> in a hardcoded way without data from a device tree, like we create a
> platform_device today. All these static of_devices would then be rooted
> in /sys/platform by default, while those that come from a device tree are
> in the hierarchy defined there.

 .../...

But that has the exact same problem as the other approaches proposed,
which is that in order to convert a driver, all the platforms in all
archs that use it need to be converted to use the new mechanisms,
properties etc...

This is going to be really hard since we don't have access to all of
that HW and will introduce huge lag as I can expect the various embedded
platforms maintainers being in no hurry to help initially.

Cheers,
Ben.

^ permalink raw reply

* Re: [RFC PATCH v2 0/6] powerpc: nintendo wii support
From: Grant Likely @ 2009-12-11 23:52 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-1-git-send-email-albert_herranz@yahoo.es>

Hi Albert.

I'm ready to pick up your Gamecube and Wii patch sets for merging.
You seem to have 4 distinct patch sets.  What order do they need to be
applied in, and what kernel version are they based on?

Thanks,
g.

On Thu, Dec 3, 2009 at 3:47 PM, Albert Herranz <albert_herranz@yahoo.es> wr=
ote:
> The following patches add the base support for the Nintendo Wii
> video game console on the powerpc arch.
>
> The following is included:
> - a device tree source
> - bootwrapper support
> - recognition of the Broadway processor
> - native interrupt controller support
> - platform support
> - default configuration
>
> With these patches the video game console can fully boot up to the
> root filesystem mount phase.
>
> Note that at this stage the video game console will _only_ use the
> first contiguous memory range (MEM1, 24MB) as RAM.
> Changes needed to support the second memory range (MEM2, 64MB) will
> be posted separately to simplify the review and possible merging.
>
> Albert Herranz (6):
> =A0powerpc: wii: device tree
> =A0powerpc: wii: bootwrapper bits
> =A0powerpc: broadway processor support
> =A0powerpc: wii: hollywood interrupt controller support
> =A0powerpc: wii: platform support
> =A0powerpc: wii: default config
>
> =A0.../powerpc/dts-bindings/nintendo/wii.txt =A0 =A0 =A0 =A0 =A0| =A0184 =
+++
> =A0arch/powerpc/boot/Makefile =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 | =A0 =A03 +-
> =A0arch/powerpc/boot/dts/wii.dts =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0| =A0218 +++
> =A0arch/powerpc/boot/wii-head.S =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 | =A0142 ++
> =A0arch/powerpc/boot/wii.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0| =A0 46 +
> =A0arch/powerpc/boot/wrapper =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0| =A0 =A02 +-
> =A0arch/powerpc/configs/wii_defconfig =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | 1=
406 ++++++++++++++++++++
> =A0arch/powerpc/kernel/cputable.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 | =A0 =A06 +-
> =A0arch/powerpc/platforms/embedded6xx/Kconfig =A0 =A0 =A0 =A0 | =A0 =A08 =
+
> =A0arch/powerpc/platforms/embedded6xx/Makefile =A0 =A0 =A0 =A0| =A0 =A01 =
+
> =A0arch/powerpc/platforms/embedded6xx/hlwd-pic.c =A0 =A0 =A0| =A0241 ++++
> =A0arch/powerpc/platforms/embedded6xx/hlwd-pic.h =A0 =A0 =A0| =A0 22 +
> =A0arch/powerpc/platforms/embedded6xx/wii.c =A0 =A0 =A0 =A0 =A0 | =A0195 =
+++
> =A013 files changed, 2469 insertions(+), 5 deletions(-)
> =A0create mode 100644 Documentation/powerpc/dts-bindings/nintendo/wii.txt
> =A0create mode 100644 arch/powerpc/boot/dts/wii.dts
> =A0create mode 100644 arch/powerpc/boot/wii-head.S
> =A0create mode 100644 arch/powerpc/boot/wii.c
> =A0create mode 100644 arch/powerpc/configs/wii_defconfig
> =A0create mode 100644 arch/powerpc/platforms/embedded6xx/hlwd-pic.c
> =A0create mode 100644 arch/powerpc/platforms/embedded6xx/hlwd-pic.h
> =A0create mode 100644 arch/powerpc/platforms/embedded6xx/wii.c
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>



--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply

* Re: [RFC PATCH v2 0/6] powerpc: nintendo wii support
From: Albert Herranz @ 2009-12-12  0:18 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-dev
In-Reply-To: <fa686aa40912111552m28d1cc40we072cebef675f100@mail.gmail.com>

Grant Likely wrote:
> Hi Albert.
> 

Hi,

> I'm ready to pick up your Gamecube and Wii patch sets for merging.
> You seem to have 4 distinct patch sets.  What order do they need to be
> applied in, and what kernel version are they based on?
> 

The patches were based on 2.6.32-rc8.
The apply order should be:

v2 powerpc: nintendo gamecube support
 powerpc: gamecube/wii: usbgecko bootwrapper console support
 powerpc: gamecube: device tree
 powerpc: gamecube: bootwrapper bits
 powerpc: gamecube/wii: introduce GAMECUBE_COMMON
 powerpc: gamecube/wii: declare as non-coherent platforms
 powerpc: gamecube/wii: do not include PCI support
 powerpc: gamecube/wii: udbg support for usbgecko
 powerpc: gamecube/wii: flipper interrupt controller support
 powerpc: gamecube: platform support
 powerpc: gamecube: default config

v2 powerpc: nintendo wii support
 powerpc: wii: device tree
 powerpc: wii: bootwrapper bits
 powerpc: broadway processor support
 powerpc: wii: hollywood interrupt controller support
 powerpc: wii: platform support
 powerpc: wii: default config

v4 rework of usbgecko-based early debug
 powerpc: reserve fixmap entries for early debug
 powerpc: gamecube/wii: early debugging using usbgecko

v2 powerpc: wii: mem2 as ram support
 wii: bootwrapper: add fixup to calc useable mem2
 wii: use both mem1 and mem2 as ram
 powerpc: allow ioremap within reserved memory regions
 powerpc: wii: allow ioremap within the memory hole

But if you prefer it, I can re-send them as one patch set again rebased on top of v2.6.32.

> Thanks,
> g.

Thanks,
Albert

^ permalink raw reply

* Re: [RFC PATCH v2 3/4] powerpc: allow ioremap within reserved memory regions
From: Albert Herranz @ 2009-12-12  0:33 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1260569600.16132.375.camel@pasglop>

Benjamin Herrenschmidt wrote:
> On Tue, 2009-12-08 at 19:43 +0100, Albert Herranz wrote:
>> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> 
> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
>> ---
>> v1 -> v2
>> - use a run-time flag to allow/disallow remapping reserved regions
>> - use lmbs to determine reserved regions
> 
> We won't need that once we fix proper discontig mem.
> 
> BTW. Question: Why do we need that fixup of yours to fold the 2 LMBs
> into one ?
> 
> Wouldn't it be easier just to keep the 2 LMBs ? You already fix the
> mapin_ram thingy, so you could easily fix it up to just iterate over the
> LMBs instead no ? For now, it could only BAT map the first LMB to
> simplify things and we can fix the BAT mapping for the second one in a
> second step too.
> 
> Wouldn't that work with simpler code ? An in the case of ioremap, the
> test becomes simply to check if it's RAM by checking if it's in the LMB
> rather than if it's reserved, which should be easier and wouldn't
> require your flag to "enable" the tweak since it could perfectly be kept
> as standard behaviour
> 
> Also the code in arch/powerpc/mm/mem.c will already deal with holes
> just fine and will pass the hole size information to the VM which should
> make it behave properly.
> 
> Thus I have the feeling that keeping the 2 LMBs rather than coalescing
> would simplify the code basically by only requiring a small fixup of the
> maping RAM bit.
> 
> I'm acking the patches for now, so you can always come up with a fixup
> on top of them and we can merge the current ones.
> 

I'll look into this.
I used a single lmb range just as the current code does to avoid any unwanted side effects as I didn't audit all the mm code.

Thanks,
Albert

^ permalink raw reply

* Re: [RFC:PATCH 00/03] powerpc: Expose BookE debug registers through extended ptrace interface
From: Benjamin Herrenschmidt @ 2009-12-12  4:18 UTC (permalink / raw)
  To: Kumar Gala
  Cc: Thiago Jung Bauermann, Dave Kleikamp, David Gibson,
	linuxppc-dev list, Torez Smith, Sergio Durigan Junior
In-Reply-To: <D925FFC0-EF2B-4ED4-8481-38BC743E9770@kernel.crashing.org>

On Thu, 2009-12-10 at 20:24 -0600, Kumar Gala wrote:
> This is a good write up.  We should have it as a commit message for
> the first patch.

No, that should go into Documentation/powerpc/

Cheers,
Ben.

^ permalink raw reply

* Re: [RFC PATCH v2 3/4] powerpc: allow ioremap within reserved memory regions
From: Benjamin Herrenschmidt @ 2009-12-12  4:24 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <4B22E4CB.2040509@yahoo.es>

On Sat, 2009-12-12 at 01:33 +0100, Albert Herranz wrote:
> 
> I'll look into this.
> I used a single lmb range just as the current code does to avoid any
> unwanted side effects as I didn't audit all the mm code.

Well, I -may- be missing something ... but I think outside of the setup
of the initial mapping, we should be fine. Well, you'll tell me if I'm
wrong here :-)

Cheers,
Ben.

^ permalink raw reply

* Re: [RFC PATCH v2 0/6] powerpc: nintendo wii support
From: Grant Likely @ 2009-12-12  6:47 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <4B22E164.1070606@yahoo.es>

On Fri, Dec 11, 2009 at 5:18 PM, Albert Herranz <albert_herranz@yahoo.es> w=
rote:
> Grant Likely wrote:
>> Hi Albert.
>>
>
> Hi,
>
>> I'm ready to pick up your Gamecube and Wii patch sets for merging.
>> You seem to have 4 distinct patch sets. =A0What order do they need to be
>> applied in, and what kernel version are they based on?
>>
>
> The patches were based on 2.6.32-rc8.
> The apply order should be:
>
> v2 powerpc: nintendo gamecube support
> =A0powerpc: gamecube/wii: usbgecko bootwrapper console support
> =A0powerpc: gamecube: device tree
> =A0powerpc: gamecube: bootwrapper bits
> =A0powerpc: gamecube/wii: introduce GAMECUBE_COMMON
> =A0powerpc: gamecube/wii: declare as non-coherent platforms
> =A0powerpc: gamecube/wii: do not include PCI support
> =A0powerpc: gamecube/wii: udbg support for usbgecko
> =A0powerpc: gamecube/wii: flipper interrupt controller support
> =A0powerpc: gamecube: platform support
> =A0powerpc: gamecube: default config
>
> v2 powerpc: nintendo wii support
> =A0powerpc: wii: device tree
> =A0powerpc: wii: bootwrapper bits
> =A0powerpc: broadway processor support
> =A0powerpc: wii: hollywood interrupt controller support
> =A0powerpc: wii: platform support
> =A0powerpc: wii: default config
>
> v4 rework of usbgecko-based early debug
> =A0powerpc: reserve fixmap entries for early debug
> =A0powerpc: gamecube/wii: early debugging using usbgecko
>
> v2 powerpc: wii: mem2 as ram support
> =A0wii: bootwrapper: add fixup to calc useable mem2
> =A0wii: use both mem1 and mem2 as ram
> =A0powerpc: allow ioremap within reserved memory regions
> =A0powerpc: wii: allow ioremap within the memory hole
>
> But if you prefer it, I can re-send them as one patch set again rebased o=
n top of v2.6.32.

Hmmm..  Looks like there are some inconsistencies in here.  For
example, the 7th patch of the first series, and the 2nd patch of the
3rd series are different version of the same thing.  The whole thing
doesn't apply as is.  Reposting the current state of the whole series
would help.  Add any acked-by lines that you've received from Ben,
Segher, or anybody else before you repost so I can see the full
current state.

Thanks
g.

--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply

* Re: [RFC PATCH v2 0/6] powerpc: nintendo wii support
From: Albert Herranz @ 2009-12-12  9:35 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-dev
In-Reply-To: <fa686aa40912112247g7562349eyc432b0d070de416e@mail.gmail.com>

Grant Likely wrote:
> On Fri, Dec 11, 2009 at 5:18 PM, Albert Herranz <albert_herranz@yahoo.es> wrote:
>> Grant Likely wrote:
>>> Hi Albert.
>>>
>> Hi,
>>
>>> I'm ready to pick up your Gamecube and Wii patch sets for merging.
>>> You seem to have 4 distinct patch sets.  What order do they need to be
>>> applied in, and what kernel version are they based on?
>>>
>> The patches were based on 2.6.32-rc8.
>> The apply order should be:
>>
>> v2 powerpc: nintendo gamecube support
>>  powerpc: gamecube/wii: usbgecko bootwrapper console support
>>  powerpc: gamecube: device tree
>>  powerpc: gamecube: bootwrapper bits
>>  powerpc: gamecube/wii: introduce GAMECUBE_COMMON
>>  powerpc: gamecube/wii: declare as non-coherent platforms
>>  powerpc: gamecube/wii: do not include PCI support
>>  powerpc: gamecube/wii: udbg support for usbgecko
>>  powerpc: gamecube/wii: flipper interrupt controller support
>>  powerpc: gamecube: platform support
>>  powerpc: gamecube: default config
>>
>> v2 powerpc: nintendo wii support
>>  powerpc: wii: device tree
>>  powerpc: wii: bootwrapper bits
>>  powerpc: broadway processor support
>>  powerpc: wii: hollywood interrupt controller support
>>  powerpc: wii: platform support
>>  powerpc: wii: default config
>>
>> v4 rework of usbgecko-based early debug
>>  powerpc: reserve fixmap entries for early debug
>>  powerpc: gamecube/wii: early debugging using usbgecko
>>
>> v2 powerpc: wii: mem2 as ram support
>>  wii: bootwrapper: add fixup to calc useable mem2
>>  wii: use both mem1 and mem2 as ram
>>  powerpc: allow ioremap within reserved memory regions
>>  powerpc: wii: allow ioremap within the memory hole
>>
>> But if you prefer it, I can re-send them as one patch set again rebased on top of v2.6.32.
> 
> Hmmm..  Looks like there are some inconsistencies in here.  For
> example, the 7th patch of the first series, and the 2nd patch of the
> 3rd series are different version of the same thing.  The whole thing
> doesn't apply as is.  Reposting the current state of the whole series
> would help.  Add any acked-by lines that you've received from Ben,
> Segher, or anybody else before you repost so I can see the full
> current state.
> 

The 7th patch of the first series is "normal" udbg support.
The 2nd patch of the third series is "early" udbg support.

I'll repost the whole series later adding the Acked-by lines. I'll send them as PATCH v2 (not RFC PATCH).

I'll add a minor correction for "powerpc: gamecube/wii: early debugging using usbgecko" suggested by Segher (use Vp=0 instead of Vp=1 in the early mapping).
And code to "powerpc: wii: platform support" to turn off the front blue led and sensor bar on boot.

> Thanks
> g.
> 

Thanks,
Albert

^ permalink raw reply

* Re: [RFC PATCH v2 4/6] powerpc: wii: hollywood interrupt controller support
From: Segher Boessenkool @ 2009-12-12 15:12 UTC (permalink / raw)
  To: Albert Herranz; +Cc: linuxppc-dev
In-Reply-To: <1259880447-5008-5-git-send-email-albert_herranz@yahoo.es>

> Add support for the dual interrupt controller included in the  
> "Hollywood"
> chipset of the Nintendo Wii video game console.
> This interrupt controller serves both the Broadway processor (as a  
> cascade)
> and the Starlet processor, and is used to manage interrupts for the
> non-classic hardware.
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
Acked-by: Segher Boessenkool <segher@kernel.crashing.org>

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox