* Re: [patch 5/6] Update the 83xx/85xx/86xx boards device tree
From: Zang Roy-r61911 @ 2007-07-11 2:53 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev list, Paul Mackerras
In-Reply-To: <FFEC5443-109B-45B7-80CA-0252F9365B55@kernel.crashing.org>
On Wed, 2007-07-11 at 04:28, Segher Boessenkool wrote:
> > Indentify pci, pcie host by compatible property
> > "fsl,mpc83xx-pci","83xx"
> > "fsl,mpc85xx-pci","85xx"
> > "fsl,mpc86xx-pci","86xx"
> > and
> > "fsl, mpc85xx-pciex","85xx"
> > "fsl, mpc86xx-pciex","86xx"
>
> This can't ever work --
It works!
> if you see "compatible" = "85xx",
> what is it?
That's why I remove the original compatible "85xx".
> PCI or PCIe? Or something else perhaps, maybe
> a CPU or an I2C controller or who-knows-what?
I just think the compatible field
"fsl,mpc83xx-pci","83xx"
has some redundant information.
Kumar don't want to break anything using the old
information.
We can remove it in the future:-).
Roy
^ permalink raw reply
* Please pull powerpc.git merge branch
From: Paul Mackerras @ 2007-07-11 4:46 UTC (permalink / raw)
To: torvalds; +Cc: linuxppc-dev
Linus,
Please do
git pull \
git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git merge
to get a powerpc update for 2.6.23.
Note the changes to Documentation/cachetlb.txt, mm/vmalloc.c and
include/linux/vmalloc.h - that is Ben H's change of unmap_vm_area to
unmap_kernel_range, which was OK'd by Andrew Morton.
Thanks,
Paul.
Documentation/cachetlb.txt | 2
Documentation/feature-removal-schedule.txt | 12
Documentation/powerpc/booting-without-of.txt | 40 +
arch/powerpc/Kconfig | 267 -------
arch/powerpc/Makefile | 2
arch/powerpc/boot/44x.c | 45 +
arch/powerpc/boot/44x.h | 3
arch/powerpc/boot/Makefile | 81 +-
arch/powerpc/boot/cuboot-83xx.c | 13
arch/powerpc/boot/cuboot-85xx.c | 13
arch/powerpc/boot/cuboot-ebony.c | 16
arch/powerpc/boot/cuboot.c | 35 +
arch/powerpc/boot/cuboot.h | 14
arch/powerpc/boot/dcr.h | 37 +
arch/powerpc/boot/dts/ebony.dts | 12
arch/powerpc/boot/dts/holly.dts | 52 +
arch/powerpc/boot/dts/mpc7448hpc2.dts | 33 -
arch/powerpc/boot/dts/mpc8272ads.dts | 42 -
arch/powerpc/boot/dts/mpc832x_mds.dts | 16
arch/powerpc/boot/dts/mpc832x_rdb.dts | 16
arch/powerpc/boot/dts/mpc8349emitx.dts | 10
arch/powerpc/boot/dts/mpc834x_mds.dts | 10
arch/powerpc/boot/dts/mpc836x_mds.dts | 16
arch/powerpc/boot/dts/mpc8540ads.dts | 147 ++--
arch/powerpc/boot/dts/mpc8541cds.dts | 90 +-
arch/powerpc/boot/dts/mpc8544ds.dts | 18
arch/powerpc/boot/dts/mpc8548cds.dts | 108 +--
arch/powerpc/boot/dts/mpc8555cds.dts | 90 +-
arch/powerpc/boot/dts/mpc8560ads.dts | 148 ++--
arch/powerpc/boot/dts/mpc8568mds.dts | 66 +-
arch/powerpc/boot/dts/mpc8641_hpcn.dts | 147 +++-
arch/powerpc/boot/dts/mpc866ads.dts | 31 -
arch/powerpc/boot/dts/mpc885ads.dts | 54 +
arch/powerpc/boot/dts/prpmc2800.dts | 2
arch/powerpc/boot/dts/ps3.dts | 68 ++
arch/powerpc/boot/ebony.c | 19
arch/powerpc/boot/main.c | 2
arch/powerpc/boot/of.c | 212 -----
arch/powerpc/boot/of.h | 21 +
arch/powerpc/boot/ofconsole.c | 45 +
arch/powerpc/boot/oflib.c | 202 +++++
arch/powerpc/boot/ops.h | 4
arch/powerpc/boot/ps3-head.S | 80 ++
arch/powerpc/boot/ps3-hvcall.S | 184 +++++
arch/powerpc/boot/ps3.c | 161 ++++
arch/powerpc/boot/serial.c | 2
arch/powerpc/boot/stdio.c | 10
arch/powerpc/boot/types.h | 4
arch/powerpc/boot/wrapper | 55 +
arch/powerpc/boot/zImage.ps3.lds.S | 50 +
arch/powerpc/configs/holly_defconfig | 6
arch/powerpc/configs/ps3_defconfig | 52 +
arch/powerpc/kernel/Makefile | 7
arch/powerpc/kernel/cputable.c | 35 +
arch/powerpc/kernel/head_32.S | 122 ---
arch/powerpc/kernel/head_64.S | 4
arch/powerpc/kernel/io.c | 12
arch/powerpc/kernel/irq.c | 60 +-
arch/powerpc/kernel/isa-bridge.c | 271 +++++++
arch/powerpc/kernel/misc_32.S | 10
arch/powerpc/kernel/misc_64.S | 26 -
arch/powerpc/kernel/of_platform.c | 8
arch/powerpc/kernel/pci-common.c | 454 ++++++++++++
arch/powerpc/kernel/pci_32.c | 510 -------------
arch/powerpc/kernel/pci_64.c | 750 +++----------------
arch/powerpc/kernel/ppc_ksyms.c | 5
arch/powerpc/kernel/process.c | 14
arch/powerpc/kernel/prom.c | 29 -
arch/powerpc/kernel/prom_init.c | 4
arch/powerpc/kernel/ptrace-common.h | 161 ----
arch/powerpc/kernel/ptrace.c | 325 ++++++--
arch/powerpc/kernel/ptrace32.c | 239 +++---
arch/powerpc/kernel/rtas_pci.c | 7
arch/powerpc/kernel/setup-common.c | 21 +
arch/powerpc/kernel/setup_32.c | 12
arch/powerpc/kernel/setup_64.c | 12
arch/powerpc/kernel/signal.c | 180 +++++
arch/powerpc/kernel/signal.h | 55 +
arch/powerpc/kernel/signal_32.c | 191 +----
arch/powerpc/kernel/signal_64.c | 182 -----
arch/powerpc/kernel/sysfs.c | 5
arch/powerpc/kernel/time.c | 65 +-
arch/powerpc/kernel/vdso.c | 2
arch/powerpc/kernel/vmlinux.lds.S | 6
arch/powerpc/mm/44x_mmu.c | 1
arch/powerpc/mm/4xx_mmu.c | 1
arch/powerpc/mm/Makefile | 3
arch/powerpc/mm/fault.c | 2
arch/powerpc/mm/fsl_booke_mmu.c | 1
arch/powerpc/mm/hash_native_64.c | 27 -
arch/powerpc/mm/hash_utils_64.c | 2
arch/powerpc/mm/imalloc.c | 313 --------
arch/powerpc/mm/init_32.c | 1
arch/powerpc/mm/init_64.c | 1
arch/powerpc/mm/mem.c | 3
arch/powerpc/mm/mmu_context_32.c | 1
arch/powerpc/mm/mmu_decl.h | 17
arch/powerpc/mm/pgtable_32.c | 123 ---
arch/powerpc/mm/pgtable_64.c | 206 +----
arch/powerpc/mm/ppc_mmu_32.c | 7
arch/powerpc/mm/stab.c | 4
arch/powerpc/mm/tlb_32.c | 1
arch/powerpc/mm/tlb_64.c | 57 +
arch/powerpc/oprofile/op_model_power4.c | 14
arch/powerpc/platforms/52xx/efika.c | 13
arch/powerpc/platforms/52xx/lite5200.c | 2
arch/powerpc/platforms/52xx/mpc52xx_pci.c | 18
arch/powerpc/platforms/52xx/mpc52xx_pm.c | 8
arch/powerpc/platforms/82xx/Kconfig | 2
arch/powerpc/platforms/82xx/mpc82xx_ads.c | 17
arch/powerpc/platforms/83xx/Kconfig | 2
arch/powerpc/platforms/83xx/Makefile | 2
arch/powerpc/platforms/83xx/mpc8313_rdb.c | 8
arch/powerpc/platforms/83xx/mpc832x_mds.c | 7
arch/powerpc/platforms/83xx/mpc832x_rdb.c | 7
arch/powerpc/platforms/83xx/mpc834x_itx.c | 9
arch/powerpc/platforms/83xx/mpc834x_mds.c | 56 -
arch/powerpc/platforms/83xx/mpc836x_mds.c | 7
arch/powerpc/platforms/83xx/mpc83xx.h | 34 +
arch/powerpc/platforms/83xx/pci.c | 18
arch/powerpc/platforms/83xx/usb.c | 181 +++++
arch/powerpc/platforms/85xx/misc.c | 32 +
arch/powerpc/platforms/85xx/mpc8544_ds.c | 15
arch/powerpc/platforms/85xx/mpc85xx.h | 2
arch/powerpc/platforms/85xx/mpc85xx_ads.c | 32 -
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 116 +--
arch/powerpc/platforms/85xx/mpc85xx_mds.c | 28 -
arch/powerpc/platforms/85xx/pci.c | 11
arch/powerpc/platforms/86xx/Kconfig | 2
arch/powerpc/platforms/86xx/mpc86xx.h | 11
arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | 27 -
arch/powerpc/platforms/86xx/pci.c | 67 +-
arch/powerpc/platforms/8xx/m8xx_setup.c | 5
arch/powerpc/platforms/8xx/mpc885ads_setup.c | 71 ++
arch/powerpc/platforms/Kconfig | 29 +
arch/powerpc/platforms/Kconfig.cputype | 221 ++++++
arch/powerpc/platforms/apus/Kconfig | 130 ---
arch/powerpc/platforms/cell/io-workarounds.c | 2
arch/powerpc/platforms/cell/spu_base.c | 59 +-
arch/powerpc/platforms/cell/spufs/backing_ops.c | 6
arch/powerpc/platforms/cell/spufs/context.c | 15
arch/powerpc/platforms/cell/spufs/fault.c | 29 +
arch/powerpc/platforms/cell/spufs/file.c | 149 ++++
arch/powerpc/platforms/cell/spufs/inode.c | 10
arch/powerpc/platforms/cell/spufs/run.c | 45 +
arch/powerpc/platforms/cell/spufs/sched.c | 476 ++++++++++--
arch/powerpc/platforms/cell/spufs/spu_restore.c | 2
arch/powerpc/platforms/cell/spufs/spu_save.c | 2
arch/powerpc/platforms/cell/spufs/spufs.h | 84 ++
arch/powerpc/platforms/cell/spufs/switch.c | 18
arch/powerpc/platforms/chrp/Kconfig | 1
arch/powerpc/platforms/chrp/Makefile | 3
arch/powerpc/platforms/chrp/pci.c | 7
arch/powerpc/platforms/embedded6xx/Kconfig | 2
arch/powerpc/platforms/embedded6xx/holly.c | 2
arch/powerpc/platforms/embedded6xx/linkstation.c | 10
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | 9
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.h | 5
arch/powerpc/platforms/iseries/call_hpt.h | 9
arch/powerpc/platforms/iseries/htab.c | 8
arch/powerpc/platforms/iseries/pci.c | 7
arch/powerpc/platforms/iseries/setup.c | 6
arch/powerpc/platforms/maple/pci.c | 41 -
arch/powerpc/platforms/pasemi/Kconfig | 9
arch/powerpc/platforms/pasemi/Makefile | 1
arch/powerpc/platforms/pasemi/electra_ide.c | 96 ++
arch/powerpc/platforms/pasemi/pci.c | 24 -
arch/powerpc/platforms/pasemi/setup.c | 2
arch/powerpc/platforms/powermac/Kconfig | 1
arch/powerpc/platforms/powermac/low_i2c.c | 23 -
arch/powerpc/platforms/powermac/pci.c | 46 -
arch/powerpc/platforms/ps3/Kconfig | 26 -
arch/powerpc/platforms/ps3/Makefile | 1
arch/powerpc/platforms/ps3/device-init.c | 785 ++++++++++++++++++++
arch/powerpc/platforms/ps3/htab.c | 31 -
arch/powerpc/platforms/ps3/interrupt.c | 272 ++++---
arch/powerpc/platforms/ps3/mm.c | 632 +++++++++++++---
arch/powerpc/platforms/ps3/os-area.c | 4
arch/powerpc/platforms/ps3/platform.h | 43 +
arch/powerpc/platforms/ps3/repository.c | 586 ++++++++-------
arch/powerpc/platforms/ps3/setup.c | 105 ++-
arch/powerpc/platforms/ps3/smp.c | 18
arch/powerpc/platforms/ps3/spu.c | 13
arch/powerpc/platforms/ps3/system-bus.c | 562 ++++++++++++--
arch/powerpc/platforms/ps3/time.c | 2
arch/powerpc/platforms/pseries/Makefile | 2
arch/powerpc/platforms/pseries/eeh.c | 19
arch/powerpc/platforms/pseries/eeh_cache.c | 5
arch/powerpc/platforms/pseries/eeh_driver.c | 6
arch/powerpc/platforms/pseries/eeh_sysfs.c | 87 ++
arch/powerpc/platforms/pseries/lpar.c | 17
arch/powerpc/platforms/pseries/pci_dlpar.c | 9
arch/powerpc/platforms/pseries/plpar_wrappers.h | 15
arch/powerpc/platforms/pseries/pseries.h | 2
arch/powerpc/platforms/pseries/reconfig.c | 2
arch/powerpc/platforms/pseries/setup.c | 2
arch/powerpc/platforms/pseries/xics.c | 53 +
arch/powerpc/sysdev/Makefile | 6
arch/powerpc/sysdev/fsl_pcie.c | 171 ----
arch/powerpc/sysdev/fsl_soc.c | 13
arch/powerpc/sysdev/indirect_pci.c | 44 +
arch/powerpc/sysdev/mpc8xx_pic.h | 11
arch/powerpc/sysdev/mv64x60_dev.c | 28 +
arch/powerpc/sysdev/mv64x60_pci.c | 7
arch/powerpc/sysdev/qe_lib/ucc.c | 2
arch/powerpc/sysdev/qe_lib/ucc_fast.c | 8
arch/powerpc/sysdev/rtc_cmos_setup.c | 49 +
arch/powerpc/sysdev/timer.c | 14
arch/powerpc/sysdev/tsi108_dev.c | 33 +
arch/powerpc/sysdev/tsi108_pci.c | 10
arch/powerpc/xmon/xmon.c | 2
arch/ppc/kernel/misc.S | 8
arch/ppc/kernel/ppc_ksyms.c | 1
arch/ppc/kernel/setup.c | 2
arch/ppc/mm/tlb.c | 1
arch/ppc/platforms/prep_setup.c | 3
arch/ppc/syslib/Makefile | 1
arch/ppc/syslib/indirect_pci.c | 134 +++
arch/ppc/syslib/virtex_devices.c | 38 +
drivers/block/viodasd.c | 4
drivers/char/briq_panel.c | 10
drivers/char/hvc_console.c | 2
drivers/char/viotape.c | 12
drivers/pci/hotplug/rpadlpar_core.c | 6
drivers/pcmcia/Kconfig | 17
drivers/pcmcia/m8xx_pcmcia.c | 351 ++++-----
drivers/ps3/Makefile | 5
drivers/ps3/ps3av.c | 372 +++++-----
drivers/ps3/ps3av_cmd.c | 51 -
drivers/ps3/ps3stor_lib.c | 302 ++++++++
drivers/ps3/sys-manager-core.c | 68 ++
drivers/ps3/sys-manager.c | 290 +++++--
drivers/ps3/vuart.c | 817 +++++++++++++--------
drivers/ps3/vuart.h | 71 +-
drivers/rtc/Kconfig | 2
drivers/serial/cpm_uart/cpm_uart_core.c | 2
drivers/serial/of_serial.c | 33 +
drivers/video/Kconfig | 4
drivers/video/ps3fb.c | 290 +++----
include/asm-powerpc/cache.h | 4
include/asm-powerpc/cputable.h | 111 +--
include/asm-powerpc/floppy.h | 6
include/asm-powerpc/hvcall.h | 1
include/asm-powerpc/io.h | 26 -
include/asm-powerpc/irq.h | 9
include/asm-powerpc/lppaca.h | 2
include/asm-powerpc/lv1call.h | 3
include/asm-powerpc/machdep.h | 2
include/asm-powerpc/mmu-8xx.h | 147 ++++
include/asm-powerpc/mmu-fsl-booke.h | 88 ++
include/asm-powerpc/mmu-hash32.h | 91 ++
include/asm-powerpc/mmu-hash64.h | 9
include/asm-powerpc/mmu.h | 13
include/asm-powerpc/mmu_context.h | 202 +++++
include/asm-powerpc/mpc86xx.h | 6
include/asm-powerpc/mpc8xx.h | 4
include/asm-powerpc/pci-bridge.h | 148 +++-
include/asm-powerpc/pci.h | 11
include/asm-powerpc/pgtable-ppc32.h | 50 -
include/asm-powerpc/pgtable-ppc64.h | 50 -
include/asm-powerpc/pgtable.h | 28 +
include/asm-powerpc/ppc-pci.h | 9
include/asm-powerpc/processor.h | 8
include/asm-powerpc/prom.h | 18
include/asm-powerpc/ps3.h | 182 +++--
include/asm-powerpc/ps3av.h | 48 +
include/asm-powerpc/ps3fb.h | 12
include/asm-powerpc/ps3stor.h | 71 ++
include/asm-powerpc/ptrace.h | 22 -
include/asm-powerpc/reg.h | 2
include/asm-powerpc/spu.h | 24 +
include/asm-powerpc/syscalls.h | 7
include/asm-powerpc/system.h | 4
include/asm-powerpc/termbits.h | 4
include/asm-powerpc/thread_info.h | 12
include/asm-powerpc/time.h | 4
include/asm-powerpc/tlbflush.h | 5
include/linux/fsl_devices.h | 5
include/linux/vmalloc.h | 3
mm/vmalloc.c | 13
280 files changed, 10940 insertions(+), 6951 deletions(-)
create mode 100644 arch/powerpc/boot/cuboot.c
create mode 100644 arch/powerpc/boot/cuboot.h
create mode 100644 arch/powerpc/boot/dts/ps3.dts
create mode 100644 arch/powerpc/boot/of.h
create mode 100644 arch/powerpc/boot/ofconsole.c
create mode 100644 arch/powerpc/boot/oflib.c
create mode 100644 arch/powerpc/boot/ps3-head.S
create mode 100644 arch/powerpc/boot/ps3-hvcall.S
create mode 100644 arch/powerpc/boot/ps3.c
create mode 100644 arch/powerpc/boot/zImage.ps3.lds.S
create mode 100644 arch/powerpc/kernel/isa-bridge.c
create mode 100644 arch/powerpc/kernel/pci-common.c
delete mode 100644 arch/powerpc/kernel/ptrace-common.h
create mode 100644 arch/powerpc/kernel/signal.c
create mode 100644 arch/powerpc/kernel/signal.h
delete mode 100644 arch/powerpc/mm/imalloc.c
create mode 100644 arch/powerpc/platforms/83xx/usb.c
create mode 100644 arch/powerpc/platforms/Kconfig.cputype
delete mode 100644 arch/powerpc/platforms/apus/Kconfig
create mode 100644 arch/powerpc/platforms/pasemi/electra_ide.c
create mode 100644 arch/powerpc/platforms/ps3/device-init.c
create mode 100644 arch/powerpc/platforms/pseries/eeh_sysfs.c
delete mode 100644 arch/powerpc/sysdev/fsl_pcie.c
create mode 100644 arch/powerpc/sysdev/rtc_cmos_setup.c
create mode 100644 arch/ppc/syslib/indirect_pci.c
create mode 100644 drivers/ps3/ps3stor_lib.c
create mode 100644 drivers/ps3/sys-manager-core.c
create mode 100644 include/asm-powerpc/mmu-8xx.h
create mode 100644 include/asm-powerpc/mmu-fsl-booke.h
create mode 100644 include/asm-powerpc/mmu-hash32.h
create mode 100644 include/asm-powerpc/ps3stor.h
Adrian Bunk (1):
[POWERPC] Make drivers/char/hvc_console.c:khvcd() static
Anton Blanchard (1):
[POWERPC] Reserve threadinfo flags for perfmon2
Arnd Bergmann (7):
[POWERPC] Split out CPU specific options into a new Kconfig file
[POWERPC] move 82xx/83xx/86xx Kconfig options to platform selection
[POWERPC] rename add_bridge to avoid namespace clashes
[POWERPC] mpc82xx_ads build fix
[POWERPC] kill isa_{io,mem}_base definitions for !PCI
[POWERPC] fix building without PCI
[POWERPC] disallow building powermac and tsi108 without PCI
Benjamin Herrenschmidt (18):
[POWERPC] unmap_vm_area becomes unmap_kernel_range for the public
[POWERPC] Rewrite IO allocation & mapping on powerpc64
[POWERPC] spufs: Add support for SPU single stepping
[POWERPC] spufs: Add a "capabilities" file to spu contexts
[POWERPC] Disable broken PPC_PTRACE_GETFPREGS on 32 bits
[POWERPC] ptrace cleanups
[POWERPC] ptrace updates & new, better requests
[POWERPC] Uninline common ptrace bits
[POWERPC] Remove some useless ifdef's in ptrace
[POWERPC] Allow ptrace write to pt_regs trap and orig_r3
[POWERPC] ptrace shouldn't touch FP exec mode
[POWERPC] powerpc: ptrace can set DABR on both 32 and 64 bits
[POWERPC] Always apply DABR changes on context switches
[POWERPC] Make syscall restart code more common
[POWERPC] Remove obsolete freezer bits
[POWERPC] Merge creation of signal frame
[POWERPC] Remove #ifdef around set_dabr in signal code
[POWERPC] Less ifdef's in signal.c/signal.h
Brian King (1):
[POWERPC] Add H_ILLAN_ATTRIBUTES hcall number
Christoph Hellwig (16):
[POWERPC] Consolidate sys_sigaltstack
[POWERPC] Consolidate restore_sigmask
[POWERPC] Consolidate do_signal
[POWERPC] spusched: Switch from workqueues to kthread + timer tick
[POWERPC] spusched: Dynamic timeslicing for SCHED_OTHER
[POWERPC] spusched: Update scheduling paramters on every spu_run
[POWERPC] spusched: fix cpu/node binding
[POWERPC] spusched: Catch nosched contexts in spu_deactivate
[POWERPC] spusched: No preemption for nosched contexts
[POWERPC] spufs: Add tid file
[POWERPC] spufs: Implement /proc/spu_loadavg
[POWERPC] spufs: Add stat file to spufs
[POWERPC] spusched: Disable tick when not needed
[POWERPC] spusched: Fix runqueue corruption
[POWERPC] spufs: Add spu stats in sysfs
[POWERPC] Remove unused do_signal export
David Gibson (18):
[POWERPC] Split low-level OF-related bootloader code into separate files
[POWERPC] Split out asm-ppc/mmu.h portions for the "classic" hash-based MMU
[POWERPC] Abolish iopa(), mm_ptov(), io_block_mapping() from arch/powerpc
[POWERPC] Remove the dregs of APUS support from arch/powerpc
[POWERPC] Remove a couple of unused definitions from pgtable_32.c
[POWERPC] Start factoring pgtable-ppc32.h and pgtable-ppc64.h
[POWERPC] Kill typedef-ed structs for hash PTEs and BATs
[POWERPC] Merge CPU features pertaining to icache coherency
[POWERPC] Factor zImage's 44x reset code out of ebony.c
[POWERPC] Derive ebc ranges property from EBC registers
[POWERPC] Consolidate cuboot initialization code
[POWERPC] Don't store a command line in the Holly device tree
[POWERPC] Fix problems with device tree representation of TSI-1xx bridges
[POWERPC] Make more OF-related bootwrapper functions available to non-OF platforms
[POWERPC] Abolish unused ucBoardRev variables
[POWERPC] In booting-without-of.txt, clarify that properties must precede subnodes
[POWERPC] Split out asm-ppc/mmu.h portions for Freescale Book-E
[POWERPC] Split out asm-ppc/mmu.h portions for PowerPC 8xx
David Woodhouse (3):
[POWERPC] PS3: System-bus uevent
[POWERPC] PS3: System-bus modinfo attribute
[POWERPC] Enable arbitary speed tty ioctls and split input/output speed
Domen Puncer (1):
[POWERPC] 52xx: sparse fixes
Geert Uytterhoeven (7):
[POWERPC] PS3: Fix sparse warnings
[POWERPC] PS3: Simplify definition of DBG
[POWERPC] PS3: Frame buffer system-bus rework
[POWERPC] PS3: Fix more sparse warnings
[POWERPC] PS3: Preallocate bootmem memory for the PS3 FLASH ROM storage driver
[POWERPC] PS3: Storage Driver Core
[POWERPC] PS3: Storage device registration routines
Geoff Levand (24):
[POWERPC] cell: Add spu shutdown method
[POWERPC] PS3: Rename IPI symbols
[POWERPC] PS3: Use __maybe_unused
[POWERPC] PS3: Map SPU regions as non-guarded
[POWERPC] PS3: Move chip mask defs up
[POWERPC] PS3: Kexec support
[POWERPC] PS3: System-bus rework
[POWERPC] PS3: Repository probe cleanups
[POWERPC] PS3: Vuart rework
[POWERPC] PS3: System manager re-work
[POWERPC] PS3: Rework AV settings driver
[POWERPC] PS3: Device registration routines.
[POWERPC] PS3: Rename processor id symbols
[POWERPC] PS3: Use clear_bit
[POWERPC] Output params value in early_init_devtree
[POWERPC] Correct __secondary_hold comment
[POWERPC] Add signed types to bootwrapper
[POWERPC] Add u64 printf to bootwrapper
[POWERPC] Fix constantness of bootwrapper arg
[POWERPC] Make kernel_entry_t have global scope in bootwrapper
[POWERPC] PS3: Device tree source
[POWERPC] PS3: Select MEMORY_HOTPLUG
[POWERPC] PS3: Update ps3_defconfig
[POWERPC] PS3: Bootwrapper support.
Grant Likely (2):
[POWERPC] 83xx: Add USB support to mpc8349-mitx board port
[POWERPC] xilinxfb: Parameterize xilinxfb platform device registration
Guennadi Liakhovetski (1):
[POWERPC] Don't link timer.o for powerpc systems using generic rtc
Ishizaki Kou (2):
[POWERPC] of_serial: Ignore unknown serial port
[POWERPC] of_serial: add port type checking
Jake Moilanen (1):
[POWERPC] Donate idle CPU cycles on dedicated partitions
Jeremy Kerr (5):
[POWERPC] spusched: Fix timeslice calculations
[POWERPC] spusched: Print out scheduling tunables with DEBUG
[POWERPC] spufs: Remove spufs_dir_inode_operations
[POWERPC] spufs: Trivial whitespace fixes
[POWERPC] spufs: Fix libassist accounting
Johannes Berg (3):
[POWERPC] Use mktime in timer sysdev
[POWERPC] powermac i2c: Use mutex
[POWERPC] arch/powerpc/kernel/sysfs.c: Move NUMA exports
Jon Loeliger (1):
[POWERPC] Replace use of GET_64BIT(prop, i) with of_read_number().
Jon Tollefson (1):
[POWERPC] Move common code out of if/else
Josh Boyer (2):
[POWERPC] Consolidate PowerPC 750 cputable features
[POWERPC] Schedule removal of arch/ppc
Kazunori Asayama (2):
[POWERPC] spufs: Fix lost events in poll/epoll on mfc
[POWERPC] spufs: Save dma_tagstatus_R in CSA
Kumar Gala (24):
[POWERPC] Remove set_cfg_type for PCI indirect users that don't need it
[POWERPC] 52xx: Remove support for PCI bus_offset
[POWERPC] Pass the pci_controller into pci_exclude_device
[POWERPC] Remove hack to determine the 2nd PHBs bus number
[POWERPC] Remove bus_offset in places its not really used
[POWERPC] Added self_busno to indicate which bus number the PHB is
[POWERPC] Removed remnants of bus_offset
[POWERPC] Added indirect_type to handle variants of PCI ops
[POWERPC] 86xx: Workaround PCI_PRIMARY_BUS usage
[POWERPC] Merge asm-ppc/pci-bridge.h into asm-power/pci-bridge.h
[POWERPC] Remove local_number from pci_controller
[POWERPC] Removed dead code related to PCI on ppc32
[POWERPC] Use global_number in ppc32 pci_controller
[POWERPC] Merge ppc32 and ppc64 pcibios_alloc_controller() prototypes
[POWERPC] Move pci_bus_to_hose users to pci_bus_to_host
[POWERPC] Move common PCI code out of pci_32/pci_64
[POWERPC] Use ppc64 style list management for pci_controller on ppc32
[POWERPC] Add copyright header to pci-common.c based on pci_{32,64}.c
[POWERPC] Reworked interrupt numbers for OpenPIC based Freescale chips
[POWERPC] Kill pcibios_enable_resources()
[POWERPC] Fix up interrupt senses for MPC85xx boards
[POWERPC] Merge asm-ppc/mmu_context.h into asm-power/mmu_context.h
[POWERPC] Move inline asm eieio to using eieio inline function
[POWERPC] CPM_UART: Use inline function form of eieio
Laurent Pinchart (1):
[PPC] Add linux/pagemap.h to arch/ppc/mm/tlb.c
Li Yang (3):
[POWERPC] qe_lib: export symbols for QE driver to compile as module
[POWERPC] 83xx: USB platform code rework
[POWERPC] Fix typo in Ebony default DTS
Linas Vepstas (5):
[POWERPC] pseries: asm/pci-bridge.h CONFIG_ minor cleanup
[POWERPC] Add EEH sysfs blinkenlights
[POWERPC] Show EEH per-device false positives
[POWERPC] Remove dead EEH code
[POWERPC] Tweak EEH copyright info
Manish Ahuja (1):
[POWERPC] Remove extra return statement
Mark A. Greer (5):
[POWERPC] Remove 'make zImage.dts' feature
[POWERPC] When appropriate, wrap device tree with zImage
[POWERPC] Update holly to use new dts wrapping feature
[POWERPC] Call add_preferred_console when MPSC is console
[POWERPC] Remove 'console=' from cmdline on prpmc2800
Masakazu Mokuno (1):
[POWERPC] PS3: Compare firmware version
Masashi Kimoto (1):
[POWERPC] PS3: Add support for HDMI RGB Full Range mode
Mathieu Desnoyers (1):
[POWERPC] Remove unnecessary #undef printk from prom.c
Michael Ellerman (8):
[POWERPC] Split virq setup logic out into irq_setup_virq()
[POWERPC] Add irq_create_direct_mapping()
[POWERPC] Add for_each_compatible_node()
[POWERPC] Turn off debugging in arch/powerpc/kernel/pci_64.c
[POWERPC] Check for the root node in of_detach_node()
[POWERPC] Generalise device_node flag interface
[POWERPC] Add a warning to help trackdown device_node refcounting bugs
[POWERPC] Make the debugfs "powerpc" dir globally accessible
Michael Neuling (2):
[POWERPC] Fix stolen time for SMT without LPAR
[POWERPC] Do firmware feature fixups after features are initialised
Mike Wolf (1):
[POWERPC] Oprofile support for Power 5++
Milton Miller (1):
[POWERPC] kexec: Send slaves to new kernel earlier
Mohan Kumar M (1):
[POWERPC] Fix interrupt distribution in ppc970
Nathan Lynch (1):
[POWERPC] Remove spinlock from struct cpu_purr_data
Olaf Hering (1):
[POWERPC] Make two xmon variables static
Olof Johansson (4):
[POWERPC] pasemi: Electra IDE/pata_platform glue
[POWERPC] Uninline and export virq_to_hw()
[POWERPC] pasemi: Rename platform
[POWERPC] pasemi: Don't auto-select CONFIG_EMBEDDED
Robert P. J. Day (2):
[POWERPC] VIOTAPE: Use designated initializers for fops member structures.
[POWERPC] Remove dead code for preventing pread() and pwrite() calls
Roland Dreier (1):
[POWERPC] Add cputable entry for PowerPC 440SPe Rev. B
Roy Zang (4):
[POWERPC] Document the global utilities node define and example
[POWERPC] Fix the node index confusion for SOC
[POWERPC] 85xx: Fix 8548CDS reset bug
[POWERPC] Remove redundant pci_read_irq_line() function for 85xx platform
Sachin P. Sant (1):
[POWERPC] Fix Kexec/Kdump for power6
Sebastian Siewior (2):
[POWERPC] spufs: fix building spufs/spu_save_dump.h
[POWERPC] spufs: Add bit definition
Segher Boessenkool (1):
[POWERPC] Fix VDSO compile warning
Sonny Rao (1):
[POWERPC] Check for NULL ppc_md.init_IRQ() before calling
Stephen Rothwell (1):
[POWERPC] Fix viodasd geometry calculations
Timur Tabi (1):
[POWERPC] Fix MAC address entries for 83xx, 85xx, and 86xx device trees
Tony Breeds (4):
[POWERPC] Move iSeries_tb_recal into its own late_initcall.
[POWERPC] Create a dummy zImage if no valid platform has been selected
[POWERPC] Modify sched_clock() to make CONFIG_PRINTK_TIME more sane
[POWERPC] Add __read_mostly support for powerpc
Vitaly Bordug (2):
[POWERPC] 8xx: mpc885ads pcmcia support
[POWERPC] dts: kill hardcoded phandles
Wade Farnsworth (4):
[POWERPC] 86xx: Add uli1575 pci-bridge sector to MPC8641HPCN dts file.
[POWERPC] Fix drivers/rtc/Kconfig for powerpc
[POWERPC] Add a check for keyboard/mouse device nodes in check_legacy_ioport()
[POWERPC] Create add_rtc() function to enable the RTC CMOS driver
York Sun (1):
[POWERPC] Let subordinate transparent bridges be transparent.
Zhang Wei (4):
[POWERPC] Remove PCI-e errata for MPC8641 silicon ver 1.0
[POWERPC] 86xx: Avoid system halt if link training isn't at least L0.
[POWERPC] MPC8641HPCN: Set IDE in ULI1575 to not native mode.
[POWERPC] 86xx: Created quirk_fsl_pcie_transparent() to initialize bridge resources.
will schmidt (2):
[POWERPC] During VM oom condition, kill all threads in process group
[POWERPC] Oprofile enhanced instruction sampling support
^ permalink raw reply
* Re: [PATCH] i2c-mpc: work around missing-9th-clock-pulse bug
From: Domen Puncer @ 2007-07-11 5:49 UTC (permalink / raw)
To: Jean Delvare; +Cc: i2c, linuxppc-embedded
In-Reply-To: <20070710144030.3786cbf3@hyperion.delvare>
On 10/07/07 14:40 +0200, Jean Delvare wrote:
> Hi Grant, hi Domen,
>
> On Tue, 10 Jul 2007 00:22:05 -0600, Grant Likely wrote:
> > On 7/10/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> > > Work around a problem reported on:
> > > http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
> > > Without this patch I2C on mpc5200 becomes unusable after a while.
> > > Tested on mpc5200 boards by Matthias and me.
> > >
> > >
> > > Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
> >
> > Looks good to me,
> >
> > Acked-by: Grant Likely <grant.likely@secretlab.ca>
>
> OK, I will take this patch, but I'd like you to add a comment before
> mpc_i2c_fixup() explaining what exactly the problem is and how it is
> worked around. Otherwise it's a bit obscure what is going on.
OK.
>
> I guess you want this patch in 2.6.23-rc1?
Yes.
So... v3:
<----------- cut ------------->
Work around a problem reported on:
http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
Without this patch I2C on mpc5200 becomes unusable after a while.
Tested on mpc5200 boards by Matthias Fechner and me.
Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
---
drivers/i2c/busses/i2c-mpc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
Index: work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
===================================================================
--- work-powerpc.git.orig/drivers/i2c/busses/i2c-mpc.c
+++ work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
@@ -74,6 +74,24 @@ static irqreturn_t mpc_i2c_isr(int irq,
return IRQ_HANDLED;
}
+/* Sometimes 9th clock pulse isn't generated, so slave doesn't release
+ * the bus. Documented and suggested workaround on
+ * http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
+ */
+static void mpc_i2c_fixup(struct mpc_i2c *i2c)
+{
+ writeccr(i2c, 0);
+ udelay(30);
+ writeccr(i2c, CCR_MEN);
+ udelay(30);
+ writeccr(i2c, CCR_MSTA | CCR_MTX);
+ udelay(30);
+ writeccr(i2c, CCR_MSTA | CCR_MTX | CCR_MEN);
+ udelay(30);
+ writeccr(i2c, CCR_MEN);
+ udelay(30);
+}
+
static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
{
unsigned long orig_jiffies = jiffies;
@@ -153,6 +171,7 @@ static void mpc_i2c_start(struct mpc_i2c
static void mpc_i2c_stop(struct mpc_i2c *i2c)
{
writeccr(i2c, CCR_MEN);
+ writeccr(i2c, 0);
}
static int mpc_write(struct mpc_i2c *i2c, int target,
@@ -245,6 +264,8 @@ static int mpc_xfer(struct i2c_adapter *
}
if (time_after(jiffies, orig_jiffies + HZ)) {
pr_debug("I2C: timeout\n");
+ if (readb(i2c->base + MPC_I2C_SR) == (CSR_MCF | CSR_MBB | CSR_RXAK))
+ mpc_i2c_fixup(i2c);
return -EIO;
}
schedule();
^ permalink raw reply
* Re: [PATCH] i2c-mpc: work around missing-9th-clock-pulse bug
From: Grant Likely @ 2007-07-11 6:03 UTC (permalink / raw)
To: Domen Puncer; +Cc: Jean Delvare, i2c, linuxppc-embedded
In-Reply-To: <20070711054923.GA4375@moe.telargo.com>
On 7/10/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> On 10/07/07 14:40 +0200, Jean Delvare wrote:
> > Hi Grant, hi Domen,
> >
> > On Tue, 10 Jul 2007 00:22:05 -0600, Grant Likely wrote:
> > > On 7/10/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> > > > Work around a problem reported on:
> > > > http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
> > > > Without this patch I2C on mpc5200 becomes unusable after a while.
> > > > Tested on mpc5200 boards by Matthias and me.
> > > >
> > > >
> > > > Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
> > >
> > > Looks good to me,
> > >
> > > Acked-by: Grant Likely <grant.likely@secretlab.ca>
> >
> > OK, I will take this patch, but I'd like you to add a comment before
> > mpc_i2c_fixup() explaining what exactly the problem is and how it is
> > worked around. Otherwise it's a bit obscure what is going on.
>
> OK.
>
> >
> > I guess you want this patch in 2.6.23-rc1?
>
> Yes.
>
> So... v3:
> <----------- cut ------------->
>
> Work around a problem reported on:
> http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
> Without this patch I2C on mpc5200 becomes unusable after a while.
> Tested on mpc5200 boards by Matthias Fechner and me.
>
>
> Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
>
> ---
> drivers/i2c/busses/i2c-mpc.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> Index: work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
> ===================================================================
> --- work-powerpc.git.orig/drivers/i2c/busses/i2c-mpc.c
> +++ work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
> @@ -74,6 +74,24 @@ static irqreturn_t mpc_i2c_isr(int irq,
> return IRQ_HANDLED;
> }
>
> +/* Sometimes 9th clock pulse isn't generated, so slave doesn't release
> + * the bus. Documented and suggested workaround on
> + * http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
> + */
I don't think it's a great idea to use a link; You should copy the
important parts into the .c file. Archives may not be forever, and
links cannot be read when offline. If the text is too long for the
middle of the C file; then put the documentation at the top right
after the header block.
g.
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195
^ permalink raw reply
* Re: [PATCH] i2c-mpc: work around missing-9th-clock-pulse bug
From: Domen Puncer @ 2007-07-11 6:33 UTC (permalink / raw)
To: Grant Likely; +Cc: Jean Delvare, i2c, linuxppc-embedded
In-Reply-To: <fa686aa40707102303k58bae578u7358b932c4721ec0@mail.gmail.com>
On 11/07/07 00:03 -0600, Grant Likely wrote:
> On 7/10/07, Domen Puncer <domen.puncer@telargo.com> wrote:
> >On 10/07/07 14:40 +0200, Jean Delvare wrote:
...
> >+/* Sometimes 9th clock pulse isn't generated, so slave doesn't release
> >+ * the bus. Documented and suggested workaround on
> >+ * http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
> >+ */
>
> I don't think it's a great idea to use a link; You should copy the
> important parts into the .c file. Archives may not be forever, and
> links cannot be read when offline. If the text is too long for the
> middle of the C file; then put the documentation at the top right
> after the header block.
And v4:
<----------- cut ------------->
Work around a problem reported on:
http://ozlabs.org/pipermail/linuxppc-embedded/2005-July/019038.html
Without this patch I2C on mpc5200 becomes unusable after a while.
Tested on mpc5200 boards by Matthias Fechner and me.
Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
---
drivers/i2c/busses/i2c-mpc.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
Index: work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
===================================================================
--- work-powerpc.git.orig/drivers/i2c/busses/i2c-mpc.c
+++ work-powerpc.git/drivers/i2c/busses/i2c-mpc.c
@@ -74,6 +74,25 @@ static irqreturn_t mpc_i2c_isr(int irq,
return IRQ_HANDLED;
}
+/* Sometimes 9th clock pulse isn't generated, and slave doesn't release
+ * the bus, because it wants to send ACK.
+ * Following sequence of enabling/disabling and sending start/stop generates
+ * the pulse, so it's all OK.
+ */
+static void mpc_i2c_fixup(struct mpc_i2c *i2c)
+{
+ writeccr(i2c, 0);
+ udelay(30);
+ writeccr(i2c, CCR_MEN);
+ udelay(30);
+ writeccr(i2c, CCR_MSTA | CCR_MTX);
+ udelay(30);
+ writeccr(i2c, CCR_MSTA | CCR_MTX | CCR_MEN);
+ udelay(30);
+ writeccr(i2c, CCR_MEN);
+ udelay(30);
+}
+
static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
{
unsigned long orig_jiffies = jiffies;
@@ -153,6 +172,7 @@ static void mpc_i2c_start(struct mpc_i2c
static void mpc_i2c_stop(struct mpc_i2c *i2c)
{
writeccr(i2c, CCR_MEN);
+ writeccr(i2c, 0);
}
static int mpc_write(struct mpc_i2c *i2c, int target,
@@ -245,6 +265,8 @@ static int mpc_xfer(struct i2c_adapter *
}
if (time_after(jiffies, orig_jiffies + HZ)) {
pr_debug("I2C: timeout\n");
+ if (readb(i2c->base + MPC_I2C_SR) == (CSR_MCF | CSR_MBB | CSR_RXAK))
+ mpc_i2c_fixup(i2c);
return -EIO;
}
schedule();
^ permalink raw reply
* [PATCH] Fix mpc7448hpc2 tsi108 device_type bug
From: Zang Roy-r61911 @ 2007-07-11 6:39 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev list, David Gibson
From: Roy Zang <tie-fei.zang@freescale.com>
Fix mpc7448hpc2 tsi108 device_type bug.
Wrong device type will break the board startup.
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
Please apply this patch. The bug breaks the board
startup.
Please copy patches about 74xx and tsi bridge
to me.
arch/powerpc/boot/dts/mpc7448hpc2.dts | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts
index 0e3d314..b9158eb 100644
--- a/arch/powerpc/boot/dts/mpc7448hpc2.dts
+++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts
@@ -45,7 +45,7 @@
#address-cells = <1>;
#size-cells = <1>;
#interrupt-cells = <2>;
- device_type = "tsi108-bridge";
+ device_type = "tsi-bridge";
ranges = <00000000 c0000000 00010000>;
reg = <c0000000 00010000>;
bus-frequency = <0>;
--
1.5.1
^ permalink raw reply related
* Re: MPC82xx ADS SCC ports initialisation
From: Laurent Pinchart @ 2007-07-11 7:11 UTC (permalink / raw)
To: Scott Wood; +Cc: vbordug, linuxppc-embedded
In-Reply-To: <20070710181133.GB14935@ld0162-tx32.am.freescale.net>
On Tuesday 10 July 2007 20:11, Scott Wood wrote:
> On Tue, Jul 10, 2007 at 04:19:51PM +0200, Laurent Pinchart wrote:
> > clrbits32(&immap->im_cpmux.cmx_scr, (0x00000007 << (4 - data->clk_tx)));
> > clrbits32(&immap->im_cpmux.cmx_scr, (0x00000038 << (4 - data->clk_rx)));
> > setbits32(&immap->im_cpmux.cmx_scr,
> > ((data->clk_tx - 1) << (4 - data->clk_tx)));
> > setbits32(&immap->im_cpmux.cmx_scr,
> > ((data->clk_rx - 1) << (4 - data->clk_rx)));
> >
> > The shift right-hand operand doesn't seem to be correct. Could anyone
> > confirm this ?
>
> You are correct; it's broken.
That code should be replaced with calls to cpm2_clk_setup
(arch/powerpc/sysdev/cpm2_common.c). cpm2_clk_setup currently supports FCC
clock setup only, but I've got a patch to add SCC clock setup support. Should
I send it ?
> > If my assumption is right, could anyone tell me if the MPC82xx
> > processors are actually supported by the powerpc architecture, or if the
> > MPC82xx ADS code is just a non-functional work in progress.
>
> I have a bunch of 8xx/82xx changes pending; I hope to get them cleaned up
> before the merge window ends.
That would be nice. I'll wait for your changes to continue my ppc -> powerpc
port.
> > I also noticed that U-Boot doesn't have flatten device tree support for
> > the MPC82xx family.
>
> No, but cuImage for 82xx is on its way.
Ok, nice to know. Adding FDT support to U-Boot for the MPC82xx family will be
on my todo-list once I get Linux working with cuImage.
Laurent Pinchart
^ permalink raw reply
* RE: [PATCH 2/4] Add dma sector to mpc8641hpcn board dts
From: Zhang Wei-r63237 @ 2007-07-11 7:16 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev, paulus
In-Reply-To: <55F09B00-F81A-4B70-B0F7-2FEBDBB2B48A@kernel.crashing.org>
Hi, Segher,=20
> -----Original Message-----
> From: Segher Boessenkool [mailto:segher@kernel.crashing.org]=20
>=20
> > + dma@21000{
> > + compatible =3D "fsl,mpc8xxx-dma";
>=20
> Please use a real name, not this "xxx" stuff.
Does the "xxx" seems to be an evil name? :-)
>=20
> > + reg =3D <21000 100>;
> > + ranges =3D <0 21000 1000>;
>=20
> These overlap, that can't be right; it is just begging for
> trouble.
There is no overlap. The 'reg' is used for the register of DMA
controller. And the ranges is used for belows channel registers.
Such as ch0@100, reg=3D<100 80>, in fact, the ch0 register address is
0x21100.
>=20
> > + ch0@100{
> > + reg =3D <100 80>;
> > + extended;
>=20
> I think you want a little more detailed property name
> than "extended" here?
I've explained it in [PATCH 1/4] Add DMA sector to
Documentation/powerpc/booting-without-of.txt file.
As below:
+ - extended : Set the DMA channel to work at extended chain mode.
+ If not set, the DMA channel will work at basic
+ chain mode.
Thanks!
Wei.
^ permalink raw reply
* RE: [PATCH 2/4] Add dma sector to mpc8641hpcn board dts
From: Zhang Wei-r63237 @ 2007-07-11 7:17 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev, paulus
In-Reply-To: <263378AA-3951-47E3-BA81-CB655E4019F1@kernel.crashing.org>
> > + dma@21000{
>=20
> "dma-controller" btw. And a space before the "{" (here and
> elsewhere) :-)
All right! :-)
Wei.
^ permalink raw reply
* Re: [PATCH] [POWERPC] Move generic MPC82xx functions out of ADS-specific
From: Laurent Pinchart @ 2007-07-11 7:28 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-embedded
In-Reply-To: <20070710180526.GA14935@ld0162-tx32.am.freescale.net>
On Tuesday 10 July 2007 20:05, Scott Wood wrote:
> On Tue, Jul 10, 2007 at 01:12:45PM +0200, Laurent Pinchart wrote:
> > The non board-specific mpc82xx_halt and mpc82xx_restart functions are
> > defined in arch/powerpc/platforms/82xx/mpc82xx_ads.c. This patch moves
> > them to mpc82xx.c to make them usable by other MPC82xx boards.
>
> Why are you also moving mpc82xx_ads_show_cpuinfo() to the board file?
> It's not really ADS-specific; it should just be renamed.
For the MPC82xx ADS boards, mpc82xx_ads_show_cpuinfo() prints
Vendor : Freescale Semiconductor
Machine : PQ2 ADS PowerPC
The vendor string is hardcoded to "Freescale Semiconductor", and the machine
string is defined in pq2ads.h. What should show_cpuinfo() print ? Should the
vendor be the board vendor or the CPU vendor ? What about the machine ?
Laurent Pinchart
^ permalink raw reply
* RE: [PATCH 3/4] Extend the DMA-engine API.
From: Zhang Wei-r63237 @ 2007-07-11 7:39 UTC (permalink / raw)
To: Dan Williams; +Cc: linuxppc-dev, akpm, paulus, linux-kernel
In-Reply-To: <e9c3a7c20707101141m17e313e2k99be5b7197edc910@mail.gmail.com>
Hi, Dan,=20
Do you mention here: =
http://marc.info/?l=3Dlinux-raid&m=3D118290909614463&w=3D2 ?
I see the async_tx is located at crypto/ of the above page, but my patch =
is for DMA engine in drivers/dma and for DMA engine driver.
Thanks!
Wei.
> -----Original Message-----
> Subject: Re: [PATCH 3/4] Extend the DMA-engine API.
>=20
> On 7/10/07, Zhang Wei <wei.zhang@freescale.com> wrote:
> > Add channel wait queue and transfer callback dma_xfer_callback().
> > If the DMA controller and driver support interrupt, when the
> > transfer is finished, it will wakeup the wait queue
> > and call the callback function of the channel.
> >
> > Add dma_async_raw_xfer() to API and device_raw_xfer() to=20
> struct dma_device
> > for RAW physical address DMA transfer, which will be used=20
> at transfer
> > between I/O address and memory address.
> >
>=20
> Please review the async_tx API patch series[1], it should meet your
> needs. What you call "raw" mode support is now default for the
> dmaengine driver interface. I plan to request that this series be
> merged for 2.6.23.
>=20
> Regards,
> Dan
>=20
> [1]http://marc.info/?l=3Dlinux-raid&w=3D2&r=3D1&s=3Dmd-accel&q=3Db
>=20
^ permalink raw reply
* [PATCH] bootwrapper: adds cuboot for MPC7448HPC2 platform
From: Zang Roy-r61911 @ 2007-07-11 8:54 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev list
In-Reply-To: <1180319418.20906.12.camel@localhost.localdomain>
From: Roy Zang <tie-fei.zang@freescale.com>
This patch adds cuboot support for MPC7448HPC2 platform.
The cuImage can be used with legacy u-boot without FDT support.
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
Regenerate this patch based on current Paul's tree.
The original one was pasted at:
http://ozlabs.org/pipermail/linuxppc-dev/2007-May/036834.html
Only have a small changes.
Cheers!
arch/powerpc/boot/Makefile | 3 +-
arch/powerpc/boot/cuboot-hpc2.c | 48 ++++++++++++++++++++++++++++
arch/powerpc/boot/dts/mpc7448hpc2.dts | 5 +++
arch/powerpc/boot/ppcboot.h | 2 +-
arch/powerpc/platforms/embedded6xx/Kconfig | 1 +
include/asm-ppc/ppcboot.h | 2 +-
6 files changed, 58 insertions(+), 3 deletions(-)
create mode 100644 arch/powerpc/boot/cuboot-hpc2.c
delete mode 100644 include/asm-blackfin/macros.h
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 61a6f34..3ca5a91 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -47,7 +47,7 @@ src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \
44x.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c
src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
- ps3-head.S ps3-hvcall.S ps3.c
+ ps3-head.S ps3-hvcall.S ps3.c cuboot-hpc2.c
src-boot := $(src-wlib) $(src-plat) empty.c
src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -142,6 +142,7 @@ ifneq ($(CONFIG_DEVICE_TREE),"")
image-$(CONFIG_PPC_83xx) += cuImage.83xx
image-$(CONFIG_PPC_85xx) += cuImage.85xx
image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
+image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2
endif
# For 32-bit powermacs, build the COFF and miboot images
diff --git a/arch/powerpc/boot/cuboot-hpc2.c b/arch/powerpc/boot/cuboot-hpc2.c
new file mode 100644
index 0000000..e0f754b
--- /dev/null
+++ b/arch/powerpc/boot/cuboot-hpc2.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved.
+ *
+ * Author: Roy Zang <tie-fei.zang@freescale.com>
+ *
+ * Description:
+ * Old U-boot compatibility for mpc7448hpc2 board
+ * Based on the code of Scott Wood <scottwood@freescale.com>
+ * for 83xx and 85xx.
+ *
+ * This 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 "ops.h"
+#include "stdio.h"
+#include "cuboot.h"
+
+#define TARGET_HAS_ENET1
+#include "ppcboot.h"
+
+static bd_t bd;
+extern char _dtb_start[], _dtb_end[];
+
+static void platform_fixups(void)
+{
+ void *tsi;
+
+ dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
+ dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr);
+ dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
+ tsi = find_node_by_devtype(NULL, "tsi-bridge");
+ if (tsi)
+ setprop(tsi, "bus-frequency", &bd.bi_busfreq,
+ sizeof(bd.bi_busfreq));
+}
+
+void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+ unsigned long r6, unsigned long r7)
+{
+ CUBOOT_INIT();
+ ft_init(_dtb_start, _dtb_end - _dtb_start, 32);
+ serial_console_init();
+ platform_ops.fixups = platform_fixups;
+}
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts
index b9158eb..f141ba2 100644
--- a/arch/powerpc/boot/dts/mpc7448hpc2.dts
+++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts
@@ -80,6 +80,7 @@
};
ethernet@6200 {
+ linux,network-index = <0>;
#size-cells = <0>;
device_type = "network";
compatible = "tsi108-ethernet";
@@ -92,6 +93,7 @@
};
ethernet@6600 {
+ linux,network-index = <1>;
#address-cells = <1>;
#size-cells = <0>;
device_type = "network";
@@ -187,5 +189,8 @@
};
};
};
+ chosen {
+ linux,stdout-path = "/tsi108@c0000000/serial@7808";
+ };
};
diff --git a/arch/powerpc/boot/ppcboot.h b/arch/powerpc/boot/ppcboot.h
index 5290ff2..f504e1c 100644
--- a/arch/powerpc/boot/ppcboot.h
+++ b/arch/powerpc/boot/ppcboot.h
@@ -78,7 +78,7 @@ typedef struct bd_info {
hymod_conf_t bi_hymod_conf; /* hymod configuration information */
#endif
#if defined(TARGET_EVB64260) || defined(TARGET_405EP) || defined(TARGET_44x) || \
- defined(TARGET_85xx) || defined(TARGET_83xx)
+ defined(TARGET_85xx) || defined(TARGET_83xx) || defined(TARGET_HAS_ENET1)
/* second onboard ethernet port */
unsigned char bi_enet1addr[6];
#define HAVE_ENET1ADDR
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
index bec7726..9b330a7 100644
--- a/arch/powerpc/platforms/embedded6xx/Kconfig
+++ b/arch/powerpc/platforms/embedded6xx/Kconfig
@@ -20,6 +20,7 @@ config MPC7448HPC2
select TSI108_BRIDGE
select DEFAULT_UIMAGE
select PPC_UDBG_16550
+ select WANT_DEVICE_TREE
help
Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
platform
diff --git a/include/asm-blackfin/macros.h b/include/asm-blackfin/macros.h
deleted file mode 100644
index e69de29..0000000
diff --git a/include/asm-ppc/ppcboot.h b/include/asm-ppc/ppcboot.h
index 6b7b63f..eb6e18d 100644
--- a/include/asm-ppc/ppcboot.h
+++ b/include/asm-ppc/ppcboot.h
@@ -74,7 +74,7 @@ typedef struct bd_info {
hymod_conf_t bi_hymod_conf; /* hymod configuration information */
#endif
#if defined(CONFIG_EVB64260) || defined(CONFIG_405EP) || defined(CONFIG_44x) || \
- defined(CONFIG_85xx) || defined(CONFIG_83xx)
+ defined(CONFIG_85xx) || defined(CONFIG_83xx) || defined(CONFIG_TSI108_BRIDGE)
/* second onboard ethernet port */
unsigned char bi_enet1addr[6];
#endif
--
1.5.1
^ permalink raw reply related
* Re: Mem-2-Mem DMA - Generalized API
From: Clifford Wolf @ 2007-07-11 9:35 UTC (permalink / raw)
To: linuxppc-embedded, Arnd Bergmann
In-Reply-To: <200707071508.04143.arnd@arndb.de>
Hi again,
The updated status of my DMA Transfer API can be found at:
http://www.clifford.at/priv/dmatransfer-20070711.diff
I have incorporated your feedback and would appreciate if you could have
another look over the updated sourcecode. Changes include:
- Many cosmetic / coding style related changes
- Added MPC3494 Scatter/Gather DMA Support
- Added a 'softdma' driver providing software emulation
- Added DMATRANSFER_MAYFAIL flag, panic() if a DMA Transfer without
this flag set fails.
- Added /proc/dmatransfer with statistic data
I also have two questions. In the my current source there is the following
hack:
--snip--
wmb();
dma_cache_wback_inv(sg_list, sizeof(struct chain_desc) * segment_n);
#if 1
/* FIXME: dma_cache_wback_inv() should have done this already! */
{
void *p = sg_list;
while (p < ((void*)sg_list) +
sizeof(struct chain_desc) * segment_n) {
__asm__ __volatile__ ("dcbf 0,%0" : : "r" (p));
p += 4;
}
__asm__ __volatile__ ("sync");
}
#endif
--snap--
In my understanding, dma_cache_wback_inv() should do exactly the same thing
as my loop with PowerPC inline assembly. However, if I change the '#if 1'
to '#if 0' in this source it stopps working.
What am I doing wrong? What function should I use instead of
dma_cache_wback_inv() in this place?
> BUG() may be a little harsh here, especially since you are holding spinlocks.
> It would be better to try to recover here, unless you expect actual data
> corruption, in which case a full panic() might be more appropriate.
So what exactly would be the correct usecase of BUG() over panic()?
My impressions was that BUG() would be the right choice for errors coming
from bad programming while panic() would be for errors coming from bad
hardware.
yours,
- clifford
--
For extra security, this message has been encrypted with double-ROT13.
^ permalink raw reply
* [PATCH 0/3] clock (clk.h) framework for mpc52xx
From: Domen Puncer @ 2007-07-11 9:31 UTC (permalink / raw)
To: linuxppc-dev; +Cc: David Brownell, Sylvain Munaut
Hi!
Clock managing in mpc52xx psc spi driver grew a bit, to do it
"the right way" ;-)
1/3 - Generic powerpc clock interface, platforms that implement
it should fill clk_functions.
This is needed because powerpc supports multiple platforms
in same kernel image.
2/3 - psc spi clocks (mclk) for mpc52xx
3/3 - Use the spi clocks in mpc52xx psc spi driver.
Thanks to David Brownell and Sylvain Munaut for feedback and
help on patches.
Domen
^ permalink raw reply
* [PATCH 2/3] mpc52xx clk.h interface
From: Domen Puncer @ 2007-07-11 9:33 UTC (permalink / raw)
To: linuxppc-dev; +Cc: David Brownell, Sylvain Munaut
In-Reply-To: <20070711093113.GE4375@moe.telargo.com>
clk.h interface for mpc52xx
Currently only psc_mclks are defined.
Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
---
arch/powerpc/platforms/52xx/Makefile | 2
arch/powerpc/platforms/52xx/mpc52xx_clock.c | 352 +++++++++++++++++++++++++++
arch/powerpc/platforms/52xx/mpc52xx_common.c | 3
include/asm-powerpc/mpc52xx.h | 2
4 files changed, 358 insertions(+), 1 deletion(-)
Index: work-powerpc.git/arch/powerpc/platforms/52xx/Makefile
===================================================================
--- work-powerpc.git.orig/arch/powerpc/platforms/52xx/Makefile
+++ work-powerpc.git/arch/powerpc/platforms/52xx/Makefile
@@ -2,7 +2,7 @@
# Makefile for 52xx based boards
#
ifeq ($(CONFIG_PPC_MERGE),y)
-obj-y += mpc52xx_pic.o mpc52xx_common.o
+obj-y += mpc52xx_pic.o mpc52xx_common.o mpc52xx_clock.o
obj-$(CONFIG_PCI) += mpc52xx_pci.o
endif
Index: work-powerpc.git/arch/powerpc/platforms/52xx/mpc52xx_clock.c
===================================================================
--- /dev/null
+++ work-powerpc.git/arch/powerpc/platforms/52xx/mpc52xx_clock.c
@@ -0,0 +1,352 @@
+/*
+ * arch/powerpc/platforms/52xx/mpc52xx_clock.c
+ * based on linux/arch/arm/mach-at91/clock.c
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/list.h>
+#include <linux/errno.h>
+#include <linux/spinlock.h>
+#include <linux/clk.h>
+
+#include <asm/io.h>
+#include <asm/mpc52xx.h>
+#include <asm/clk_interface.h>
+
+
+struct clk {
+ struct list_head node;
+ const char *name; /* unique clock name */
+ struct device_node *of_node; /* device node associated with this clock */
+ const char *function; /* clock function */
+ unsigned long rate_hz;
+ struct clk *parent;
+ void (*mode)(struct clk *, int);
+ u16 users;
+ int cdm_id; /* == bit number in datasheet, or 0 */
+ long (*set_rate)(struct clk *, unsigned long rate, int round_only);
+};
+
+#define CDM_ID_PSC3 24
+#define CDM_ID_PSC2 25
+#define CDM_ID_PSC1 26
+#define CDM_ID_PSC6 27
+
+static long psc_set_rate(struct clk *clk, unsigned long rate, int round_only);
+
+static struct clk clk_system = {
+ .name = "system",
+ .rate_hz = 528000000, /* default if there's no system-frequency in dts */
+ .users = 1, /* always on */
+};
+static struct clk clk_psc1 = {
+ .name = "psc1_mclk",
+ .cdm_id = CDM_ID_PSC1,
+ .parent = &clk_system,
+ .set_rate = psc_set_rate,
+};
+static struct clk clk_psc2 = {
+ .name = "psc2_mclk",
+ .cdm_id = CDM_ID_PSC2,
+ .parent = &clk_system,
+ .set_rate = psc_set_rate,
+};
+static struct clk clk_psc3 = {
+ .name = "psc3_mclk",
+ .cdm_id = CDM_ID_PSC3,
+ .parent = &clk_system,
+ .set_rate = psc_set_rate,
+};
+static struct clk clk_psc6 = {
+ .name = "psc6_mclk",
+ .cdm_id = CDM_ID_PSC6,
+ .parent = &clk_system,
+ .set_rate = psc_set_rate,
+};
+
+
+
+static LIST_HEAD(clocks);
+static DEFINE_SPINLOCK(clk_lock);
+
+static struct mpc52xx_cdm __iomem *cdm;
+static DEFINE_SPINLOCK(cdm_lock);
+
+
+static long psc_set_rate(struct clk *clk, unsigned long rate, int round_only)
+{
+ u16 mclkdiv;
+ u16 __iomem *divreg;
+
+ /* pick a divider that will get the closest clock */
+ mclkdiv = (clk->parent->rate_hz + rate/2) / rate - 1;
+
+ /* trim to closest possible. or should we return an error? */
+ mclkdiv = min(mclkdiv, (u16)0x1ff);
+ mclkdiv = max(mclkdiv, (u16)1);
+
+ rate = clk->parent->rate_hz / (mclkdiv + 1);
+ mclkdiv |= 0x8000; /* enable (this is not clk_enable!) */
+
+ if (round_only)
+ return rate;
+
+ if (clk->cdm_id == CDM_ID_PSC1)
+ divreg = &cdm->mclken_div_psc1;
+ else if (clk->cdm_id == CDM_ID_PSC2)
+ divreg = &cdm->mclken_div_psc2;
+ else if (clk->cdm_id == CDM_ID_PSC3)
+ divreg = &cdm->mclken_div_psc3;
+ else if (clk->cdm_id == CDM_ID_PSC6)
+ divreg = &cdm->mclken_div_psc6;
+ else
+ return -ENODEV;
+
+ out_be16(divreg, mclkdiv);
+
+ return 0;
+}
+
+/* clocks cannot be de-registered no refcounting necessary */
+static struct clk *mpc52xx_clk_get(struct device *dev, const char *id)
+{
+ struct clk *clk;
+
+ list_for_each_entry(clk, &clocks, node) {
+ if (strcmp(id, clk->name) == 0)
+ return clk;
+ if (clk->function && strcmp(id, clk->function) == 0 && dev &&
+ dev->archdata.of_node == clk->of_node)
+ return clk;
+ }
+
+ return ERR_PTR(-ENOENT);
+}
+
+static void mpc52xx_clock_associate(const char *id, struct device_node *of_node,
+ const char *function)
+{
+ struct clk *clk = mpc52xx_clk_get(NULL, id);
+
+ if (IS_ERR(clk))
+ return;
+
+ clk->function = function;
+ clk->of_node = of_node;
+}
+
+static void mpc52xx_clk_put(struct clk *clk)
+{
+}
+
+
+static void clk_mode_cdm(int cdm_id, int enabled)
+{
+ unsigned long flags;
+ u32 clk_enables;
+
+ if (cdm_id < 12 || cdm_id > 31) {
+ printk(KERN_ERR "%s: %i invalid cdm_id: %i\n", __func__, __LINE__, cdm_id);
+ return;
+ }
+
+ spin_lock_irqsave(&cdm_lock, flags);
+ clk_enables = in_be32(&cdm->clk_enables);
+ if (enabled)
+ clk_enables |= 1 << (31-cdm_id);
+ else
+ clk_enables &= ~(1 << (31-cdm_id));
+
+ out_be32(&cdm->clk_enables, clk_enables);
+ spin_unlock_irqrestore(&cdm_lock, flags);
+}
+
+static void __clk_enable(struct clk *clk)
+{
+ if (clk->parent)
+ __clk_enable(clk->parent);
+ if (clk->users++ == 0 && clk->mode) {
+ if (clk->cdm_id)
+ clk_mode_cdm(clk->cdm_id, 1);
+ else
+ clk->mode(clk, 1);
+ }
+}
+
+static int mpc52xx_clk_enable(struct clk *clk)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&clk_lock, flags);
+ __clk_enable(clk);
+ spin_unlock_irqrestore(&clk_lock, flags);
+ return 0;
+}
+
+static void __clk_disable(struct clk *clk)
+{
+ BUG_ON(clk->users == 0);
+ if (--clk->users == 0 && clk->mode) {
+ if (clk->cdm_id)
+ clk_mode_cdm(clk->cdm_id, 0);
+ else
+ clk->mode(clk, 0);
+ }
+ if (clk->parent)
+ __clk_disable(clk->parent);
+}
+
+static void mpc52xx_clk_disable(struct clk *clk)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&clk_lock, flags);
+ __clk_disable(clk);
+ spin_unlock_irqrestore(&clk_lock, flags);
+}
+
+static unsigned long mpc52xx_clk_get_rate(struct clk *clk)
+{
+ unsigned long flags;
+ unsigned long rate;
+
+ spin_lock_irqsave(&clk_lock, flags);
+ for (;;) {
+ rate = clk->rate_hz;
+ if (rate || !clk->parent)
+ break;
+ clk = clk->parent;
+ }
+ spin_unlock_irqrestore(&clk_lock, flags);
+ return rate;
+}
+
+static long mpc52xx_clk_round_rate(struct clk *clk, unsigned long rate)
+{
+ unsigned long flags;
+ long ret;
+
+ if (!clk->set_rate)
+ return -EINVAL;
+
+ spin_lock_irqsave(&clk_lock, flags);
+ ret = clk->set_rate(clk, rate, 1);
+ spin_unlock_irqrestore(&clk_lock, flags);
+
+ return ret;
+}
+
+static int mpc52xx_clk_set_rate(struct clk *clk, unsigned long rate)
+{
+ unsigned long flags;
+ int ret;
+
+ if (!clk->set_rate)
+ return -EINVAL;
+ if (clk->users)
+ return -EBUSY;
+
+ spin_lock_irqsave(&clk_lock, flags);
+ clk->rate_hz = clk->set_rate(clk, rate, 1);
+ ret = clk->set_rate(clk, rate, 0);
+ spin_unlock_irqrestore(&clk_lock, flags);
+
+ return ret;
+}
+
+static struct clk *mpc52xx_clk_get_parent(struct clk *clk)
+{
+ return clk->parent;
+}
+
+static int mpc52xx_clk_set_parent(struct clk *clk, struct clk *parent)
+{
+ unsigned long flags;
+
+ if (clk->users)
+ return -EBUSY;
+ spin_lock_irqsave(&clk_lock, flags);
+
+ clk->rate_hz = parent->rate_hz;
+ clk->parent = parent;
+
+ spin_unlock_irqrestore(&clk_lock, flags);
+ return 0;
+}
+
+
+
+static struct clk *const mpc5200_clocks[] __initdata = {
+ &clk_system,
+ &clk_psc1,
+ &clk_psc2,
+ &clk_psc3,
+ &clk_psc6,
+};
+
+int __init mpc52xx_clock_init(void)
+{
+ int i;
+ struct device_node *np, *child = NULL;
+ const unsigned int *fp;
+
+ /* map Clock Distribution Module registers */
+ cdm = mpc52xx_find_and_map("mpc5200-cdm");
+ if (!cdm) {
+ printk(KERN_ERR "%s: %i couldn't map mpc5200-cdm\n", __func__, __LINE__);
+ return -EFAULT;
+ }
+
+ /* register clocks */
+ for (i = 0; i < ARRAY_SIZE(mpc5200_clocks); i++)
+ list_add_tail(&mpc5200_clocks[i]->node, &clocks);
+
+
+ /* get clk_system rate from device tree */
+ np = of_find_node_by_type(NULL, "soc");
+ if (!np)
+ return 0;
+
+ fp = of_get_property(np, "system-frequency", NULL);
+ if (fp && *fp)
+ clk_system.rate_hz = *fp;
+
+ /* associate psc_mclks with device_nodes */
+ while ((child = of_get_next_child(np, child))) {
+ if (of_device_is_compatible(child, "mpc5200-psc")) {
+ char clock[10];
+ int ci = -1;
+ const int *pci;
+
+ pci = of_get_property(child, "cell-index", NULL);
+ if (pci)
+ ci = *pci;
+ if (ci < 0 || ci > 5 || ci == 3 || ci == 4) {
+ printk(KERN_ALERT "%s: %i psc node '%s' has invalid "
+ "cell-index: %i\n", __func__, __LINE__,
+ child->name, ci);
+ continue;
+ }
+
+ snprintf(clock, 10, "psc%i_mclk", ci + 1);
+ mpc52xx_clock_associate(clock, child, "psc_mclk");
+ }
+ }
+ of_node_put(np);
+
+ /* register clocks */
+ clk_functions = (struct clk_interface) {
+ .clk_get = mpc52xx_clk_get,
+ .clk_enable = mpc52xx_clk_enable,
+ .clk_disable = mpc52xx_clk_disable,
+ .clk_get_rate = mpc52xx_clk_get_rate,
+ .clk_put = mpc52xx_clk_put,
+ .clk_round_rate = mpc52xx_clk_round_rate,
+ .clk_set_rate = mpc52xx_clk_set_rate,
+ .clk_set_parent = mpc52xx_clk_set_parent,
+ .clk_get_parent = mpc52xx_clk_get_parent,
+ };
+ return 0;
+}
Index: work-powerpc.git/arch/powerpc/platforms/52xx/mpc52xx_common.c
===================================================================
--- work-powerpc.git.orig/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ work-powerpc.git/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -110,6 +110,9 @@ mpc52xx_setup_cpu(void)
transaction and re-enable it afterwards ...) */
out_be32(&xlb->config, in_be32(&xlb->config) | MPC52xx_XLB_CFG_PLDIS);
+ /* setup clk system */
+ mpc52xx_clock_init();
+
/* Unmap zones */
unmap_regs:
if (cdm) iounmap(cdm);
Index: work-powerpc.git/include/asm-powerpc/mpc52xx.h
===================================================================
--- work-powerpc.git.orig/include/asm-powerpc/mpc52xx.h
+++ work-powerpc.git/include/asm-powerpc/mpc52xx.h
@@ -274,5 +274,7 @@ extern char saved_sram[0x4000]; /* reuse
#endif
#endif /* CONFIG_PM */
+extern int __init mpc52xx_clock_init(void);
+
#endif /* __ASM_POWERPC_MPC52xx_H__ */
^ permalink raw reply
* [PATCH 3/3] mpc52xx_psc_spi: use clk.h subsystem
From: Domen Puncer @ 2007-07-11 9:34 UTC (permalink / raw)
To: linuxppc-dev; +Cc: David Brownell, Sylvain Munaut
In-Reply-To: <20070711093113.GE4375@moe.telargo.com>
Use clocks subsystem in spi driver.
Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
---
drivers/spi/mpc52xx_psc_spi.c | 64 +++++++++++++++++++++++++++++++++++++-----
1 file changed, 57 insertions(+), 7 deletions(-)
Index: work-powerpc.git/drivers/spi/mpc52xx_psc_spi.c
===================================================================
--- work-powerpc.git.orig/drivers/spi/mpc52xx_psc_spi.c
+++ work-powerpc.git/drivers/spi/mpc52xx_psc_spi.c
@@ -18,6 +18,7 @@
#if defined(CONFIG_PPC_MERGE)
#include <asm/of_platform.h>
+#include <linux/clk.h>
#else
#include <linux/platform_device.h>
#endif
@@ -53,6 +54,8 @@ struct mpc52xx_psc_spi {
spinlock_t lock;
struct completion done;
+
+ struct clk *clk;
};
/* controller state */
@@ -85,6 +88,13 @@ static void mpc52xx_psc_spi_activate_cs(
u32 sicr;
u16 ccr;
+#ifdef CONFIG_PPC_MERGE
+ u8 bitclkdiv = 2; /* minimum bitclkdiv */
+ int speed = cs->speed_hz ? cs->speed_hz : 1000000;
+ int mclk;
+ int system;
+#endif
+
sicr = in_be32(&psc->sicr);
/* Set clock phase and polarity */
@@ -106,13 +116,39 @@ static void mpc52xx_psc_spi_activate_cs(
/* Set clock frequency and bits per word
* Because psc->ccr is defined as 16bit register instead of 32bit
* just set the lower byte of BitClkDiv
+ * Because BitClkDiv is 8-bit on mpc5200. Lets stay compatible.
*/
ccr = in_be16(&psc->ccr);
ccr &= 0xFF00;
+
+#ifdef CONFIG_PPC_MERGE
+ /*
+ * pscclk = mclk/(bitclkdiv+1)) bitclkdiv is 8-bit, >= 2
+ * mclk = fsys/(mclkdiv+1) mclkdiv is 9-bit, >= 1
+ * as mclkdiv has higher precision, we want is as big as possible
+ * => we get < 0.002*clock error
+ */
+
+ system = clk_get_rate(clk_get_parent(mps->clk));
+ mclk = speed * (bitclkdiv+1);
+ if (system/mclk > 512) { /* bigger than mclkdiv */
+ bitclkdiv = (system/512) / speed;
+ mclk = speed * (bitclkdiv+1);
+ }
+
+ if (clk_set_rate(mps->clk, mclk))
+ dev_err(&spi->dev, "couldn't set psc_mclk's rate\n");
+
+ dev_info(&spi->dev, "clock: wanted: %i, got: %li\n", speed,
+ clk_round_rate(mps->clk, mclk) / (bitclkdiv+1));
+
+ ccr |= bitclkdiv;
+#else
if (cs->speed_hz)
ccr |= (MCLK / cs->speed_hz - 1) & 0xFF;
else /* by default SPI Clk 1MHz */
ccr |= (MCLK / 1000000 - 1) & 0xFF;
+#endif
out_be16(&psc->ccr, ccr);
mps->bits_per_word = cs->bits_per_word;
@@ -321,20 +357,17 @@ static void mpc52xx_psc_spi_cleanup(stru
static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
{
+ struct mpc52xx_psc __iomem *psc = mps->psc;
+ int ret = 0;
+
+#if !defined(CONFIG_PPC_MERGE)
struct mpc52xx_cdm __iomem *cdm;
struct mpc52xx_gpio __iomem *gpio;
- struct mpc52xx_psc __iomem *psc = mps->psc;
u32 ul;
u32 mclken_div;
- int ret = 0;
-#if defined(CONFIG_PPC_MERGE)
- cdm = mpc52xx_find_and_map("mpc5200-cdm");
- gpio = mpc52xx_find_and_map("mpc5200-gpio");
-#else
cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
-#endif
if (!cdm || !gpio) {
printk(KERN_ERR "Error mapping CDM/GPIO\n");
ret = -EFAULT;
@@ -390,6 +423,7 @@ static int mpc52xx_psc_spi_port_config(i
ret = -EINVAL;
goto unmap_regs;
}
+#endif
/* Reset the PSC into a known state */
out_8(&psc->command, MPC52xx_PSC_RST_RX);
@@ -413,11 +447,13 @@ static int mpc52xx_psc_spi_port_config(i
mps->bits_per_word = 8;
+#if !defined(CONFIG_PPC_MERGE)
unmap_regs:
if (cdm)
iounmap(cdm);
if (gpio)
iounmap(gpio);
+#endif
return ret;
}
@@ -502,11 +538,22 @@ static int __init mpc52xx_psc_spi_do_pro
ret = spi_register_master(master);
if (ret < 0)
+ goto destr_wq;
+
+#ifdef CONFIG_PPC_MERGE
+ mps->clk = clk_get(dev, "psc_mclk");
+ if (IS_ERR(mps->clk)) {
+ dev_err(dev, "couldn't get psc_mclk clock\n");
+ ret = -ENOENT;
goto unreg_master;
+ }
+#endif
return ret;
unreg_master:
+ spi_unregister_master(master);
+destr_wq:
destroy_workqueue(mps->workqueue);
free_irq:
free_irq(mps->irq, mps);
@@ -523,6 +570,9 @@ static int __exit mpc52xx_psc_spi_do_rem
struct spi_master *master = dev_get_drvdata(dev);
struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master);
+#ifdef CONFIG_PPC_MERGE
+ clk_put(mps->clk);
+#endif
flush_workqueue(mps->workqueue);
destroy_workqueue(mps->workqueue);
spi_unregister_master(master);
^ permalink raw reply
* [PATCH 1/3] powerpc clk.h interface for platforms
From: Domen Puncer @ 2007-07-11 9:32 UTC (permalink / raw)
To: linuxppc-dev; +Cc: David Brownell, Sylvain Munaut
In-Reply-To: <20070711093113.GE4375@moe.telargo.com>
clk interface for arch/powerpc, platforms should fill
clk_functions.
Signed-off-by: Domen Puncer <domen.puncer@telargo.com>
---
arch/powerpc/kernel/Makefile | 3 -
arch/powerpc/kernel/clock.c | 82 ++++++++++++++++++++++++++++++++++++
include/asm-powerpc/clk_interface.h | 20 ++++++++
3 files changed, 104 insertions(+), 1 deletion(-)
Index: work-powerpc.git/arch/powerpc/kernel/clock.c
===================================================================
--- /dev/null
+++ work-powerpc.git/arch/powerpc/kernel/clock.c
@@ -0,0 +1,82 @@
+/*
+ * Dummy clk implementations for powerpc.
+ * These need to be overridden in platform code.
+ */
+
+#include <linux/clk.h>
+#include <linux/err.h>
+#include <linux/errno.h>
+#include <linux/module.h>
+#include <asm/clk_interface.h>
+
+struct clk_interface clk_functions;
+
+struct clk *clk_get(struct device *dev, const char *id)
+{
+ if (clk_functions.clk_get)
+ return clk_functions.clk_get(dev, id);
+ return ERR_PTR(-ENOSYS);
+}
+EXPORT_SYMBOL(clk_get);
+
+void clk_put(struct clk *clk)
+{
+ if (clk_functions.clk_put)
+ clk_functions.clk_put(clk);
+}
+EXPORT_SYMBOL(clk_put);
+
+int clk_enable(struct clk *clk)
+{
+ if (clk_functions.clk_enable)
+ return clk_functions.clk_enable(clk);
+ return -ENOSYS;
+}
+EXPORT_SYMBOL(clk_enable);
+
+void clk_disable(struct clk *clk)
+{
+ if (clk_functions.clk_disable)
+ clk_functions.clk_disable(clk);
+}
+EXPORT_SYMBOL(clk_disable);
+
+unsigned long clk_get_rate(struct clk *clk)
+{
+ if (clk_functions.clk_get_rate)
+ return clk_functions.clk_get_rate(clk);
+ return 0;
+}
+EXPORT_SYMBOL(clk_get_rate);
+
+long clk_round_rate(struct clk *clk, unsigned long rate)
+{
+ if (clk_functions.clk_round_rate)
+ return clk_functions.clk_round_rate(clk, rate);
+ return -ENOSYS;
+}
+EXPORT_SYMBOL(clk_round_rate);
+
+int clk_set_rate(struct clk *clk, unsigned long rate)
+{
+ if (clk_functions.clk_set_rate)
+ return clk_functions.clk_set_rate(clk, rate);
+ return -ENOSYS;
+}
+EXPORT_SYMBOL(clk_set_rate);
+
+struct clk *clk_get_parent(struct clk *clk)
+{
+ if (clk_functions.clk_get_parent)
+ return clk_functions.clk_get_parent(clk);
+ return ERR_PTR(-ENOSYS);
+}
+EXPORT_SYMBOL(clk_get_parent);
+
+int clk_set_parent(struct clk *clk, struct clk *parent)
+{
+ if (clk_functions.clk_set_parent)
+ return clk_functions.clk_set_parent(clk, parent);
+ return -ENOSYS;
+}
+EXPORT_SYMBOL(clk_set_parent);
Index: work-powerpc.git/include/asm-powerpc/clk_interface.h
===================================================================
--- /dev/null
+++ work-powerpc.git/include/asm-powerpc/clk_interface.h
@@ -0,0 +1,20 @@
+#ifndef __ASM_POWERPC_CLK_INTERFACE_H
+#define __ASM_POWERPC_CLK_INTERFACE_H
+
+#include <linux/clk.h>
+
+struct clk_interface {
+ struct clk* (*clk_get) (struct device *dev, const char *id);
+ int (*clk_enable) (struct clk *clk);
+ void (*clk_disable) (struct clk *clk);
+ unsigned long (*clk_get_rate) (struct clk *clk);
+ void (*clk_put) (struct clk *clk);
+ long (*clk_round_rate) (struct clk *clk, unsigned long rate);
+ int (*clk_set_rate) (struct clk *clk, unsigned long rate);
+ int (*clk_set_parent) (struct clk *clk, struct clk *parent);
+ struct clk* (*clk_get_parent) (struct clk *clk);
+};
+
+extern struct clk_interface clk_functions;
+
+#endif /* __ASM_POWERPC_CLK_INTERFACE_H */
Index: work-powerpc.git/arch/powerpc/kernel/Makefile
===================================================================
--- work-powerpc.git.orig/arch/powerpc/kernel/Makefile
+++ work-powerpc.git/arch/powerpc/kernel/Makefile
@@ -12,7 +12,8 @@ endif
obj-y := semaphore.o cputable.o ptrace.o syscalls.o \
irq.o align.o signal_32.o pmc.o vdso.o \
- init_task.o process.o systbl.o idle.o
+ init_task.o process.o systbl.o idle.o \
+ clock.o
obj-y += vdso32/
obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \
signal_64.o ptrace32.o \
^ permalink raw reply
* RE: [PATCH 1/4] Add DMA sector to Documentation/powerpc/booting-without-of.txt file.
From: Zhang Wei-r63237 @ 2007-07-11 10:00 UTC (permalink / raw)
To: Wood Scott-B07421, Segher Boessenkool; +Cc: linuxppc-dev, paulus
In-Reply-To: <20070710161121.GA14556@ld0162-tx32.am.freescale.net>
Hi,=20
> -----Original Message-----
> From: Wood Scott-B07421=20
>=20
> On Tue, Jul 10, 2007 at 04:01:19PM +0200, Segher Boessenkool wrote:
> > > + - compatible : Should be "fsl,mpc8xxx-dma"
> >=20
> > Should _include_, not should _be_. And none of this xxx
> > business, of course.
>=20
> Especially since the 85xx/86xx version is not 100% compatible with the
> 83xx version. How about fsl,mpc8349-dma and fsl,mpc8548-dma=20
> for the two
> variants?
I want to use this one driver to fit for mpc8349 and mpc8548. But it
seems some register difference between them.
Ok, using "fsl,mpc8548-dma".
>=20
> > > + - extended : Set the DMA channel to work at extended=20
> chain mode.
> > > + If not set, the DMA channel will work at basic
> > > + chain mode.
> >=20
> > Call it "extended-chain-mode", perhaps?
>=20
It's clear, but maybe too long?
> Or don't call it anything. The ability to do extended chain mode is
> implicit in being compatible with fsl,mpc8548-dma.
The basic mode could be used for mpc83xx silicons.
>=20
> > > + - reserved : Reserve the DMA channel to device.
> >=20
> > What does this do? Reserve it for what device, and where?
> > The OS driver?
>=20
> Some hardware has DMA channels hardwired to certain=20
> peripherals, such as
> an audio codec. This keeps them from being used as general=20
> purpose DMA
> channels.
DMA channels could be used as ethernet phy. You can point to DMA
channel's 'phandle' in the device node for reserve use.
>=20
> I'd rather just treat the different DMA channels as=20
> independent devices,
> rather than children of a dma "bus", and change the compatible name if
> they're not general purpose. There's only one register that's shared
> among the channels, and it's a superfluous status summary register.
>=20
Your and my ideas are both sides of a coin. :-)
Thanks!
Wei.
^ permalink raw reply
* RE: [PATCH 1/4] Add DMA sector to Documentation/powerpc/booting-without-of.txt file.
From: Zhang Wei-r63237 @ 2007-07-11 10:06 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev, paulus
In-Reply-To: <14A08601-B779-45BF-BC22-D1A3C9997502@kernel.crashing.org>
Hi,=20
> -----Original Message-----
> From: Segher Boessenkool [mailto:segher@kernel.crashing.org]=20
>=20
> > + k) DMA
> > +
> > + This sector define DMA for dma-engine driver of Freescale
>=20
> It's called a "device node" or "node", not a "sector".
Ok, "node".
>=20
> > + - compatible : Should be "fsl,mpc8xxx-dma"
>=20
> Should _include_, not should _be_. And none of this xxx
> business, of course.
>=20
All right.
> > + - extended : Set the DMA channel to work at extended=20
> chain mode.
> > + If not set, the DMA channel will work at basic
> > + chain mode.
>=20
> Call it "extended-chain-mode", perhaps?
>=20
Is it maybe too long?
> > + - reserved : Reserve the DMA channel to device.
>=20
> What does this do? Reserve it for what device, and where?
> The OS driver?
>=20
Yes, it reserve for the special device, which must use the fixed
channel. Thus, reserve channels requested by that device.
And in the device node of dts file, you can use such as
"dma-channel=3D<&dma-ch0>" to reference the below channel:
dma-ch0: ch0@100 {
...
}
Thanks!
Wei.
^ permalink raw reply
* ask two question about e500 implementation in arch/ppc/kernel/head_fsl_booke.S
From: kang shuo @ 2007-07-11 10:21 UTC (permalink / raw)
To: galak; +Cc: linuxppc-embedded
hi,galak:
I have two question about e500 part of linux kernel. I
can not get reponse from maillist . So I sent the questions to you
directly.
1. in arch/ppc/kernel/head_fsl_booke.S
603 FIND_PTE
604 andi. r13, r11, _PAGE_PRESENT /* Is the page present? */
605 beq 2f /* Bail if not present */
That seems _PAGE_PRESENT should be set before enter DataTLBError
exception handler(Or the following finish_tlb_load function will not
execute), but in __ioremap function of e500 implementation,
_PAGE_PRESENT bit is not set for an io address map.Why?
2. still in arch/ppc/kernel/head_fsl_booke.S
791 #ifdef CONFIG_E200
792 /* Round robin TLB1 entries assignment */
793 mfspr r12, SPRN_MAS0
794
795 /* Extract TLB1CFG(NENTRY) */
796 mfspr r11, SPRN_TLB1CFG
797 andi. r11, r11, 0xfff
798
799 /* Extract MAS0(NV) */
800 andi. r13, r12, 0xfff
801 addi r13, r13, 1
802 cmpw 0, r13, r11
803 addi r12, r12, 1
804
805 /* check if we need to wrap */
806 blt 7f
807
808 /* wrap back to first free tlbcam entry */
809 lis r13, tlbcam_index@ha
810 lwz r13, tlbcam_index@l(r13)
811 rlwimi r12, r13, 0, 20, 31
812 7:
813 mtspr SPRN_MAS0,r12
814 #endif /* CONFIG_E200 */
815
816 tlbwe
That seems original tlb entry will be overwritten in the above code
for e500? Why , I thought a free tlb entry should be select and fill
for e500. Just like CONFIG_E200.
-- Thanks
-- Michael.Kang
^ permalink raw reply
* Re: [PATCH 1/1] libata: pata_pdc2027x PLL input clock fix
From: Mikael Pettersson @ 2007-07-11 10:26 UTC (permalink / raw)
To: albertl, mikpe; +Cc: dwm, jeff, linux-ide, bahadir.balban, linuxppc-dev, alan
On Wed, 11 Jul 2007 10:45:35 +0800, Albert Lee wrote:
> Mikael Pettersson wrote:
> >
> >
> > 2.6.22 + this prints the following on my G3:
> >
> > pata_pdc2027x 0000:00:0e.0: version 0.9
> > usec_elapsed for mdelay(37) [35431]
> > start time: [1184112028]s [775333]us
> > end time: [1184112028]s [810764]us
> > pata_pdc2027x 0000:00:0e.0: PLL input clock 1691741 kHz
> > pata_pdc2027x: Invalid PLL input clock 1691741kHz, give up!
> >
>
> My x86 box got this:
> Jul 11 10:02:17 p4ht-s kernel: [ 260.746980] ACPI: PCI Interrupt 0000:02:05.0[A] -> Link [LNK1] -> GSI 10 (level, low) -> IRQ 10
> Jul 11 10:02:17 p4ht-s kernel: [ 260.882905] usec_elapsed for mdelay(37) [36734]
> Jul 11 10:02:17 p4ht-s kernel: [ 260.882911] start time: [1184119336]s [999802]us
> Jul 11 10:02:17 p4ht-s kernel: [ 260.882914] end time: [1184119337]s [36536]us
> Jul 11 10:02:17 p4ht-s kernel: [ 260.882917] pata_pdc2027x 0000:02:05.0: PLL input clock 16829 kHz
>
> So, it seems both mdelay(37) and do_gettimeofday() are working properly on PowerMac G3.
> Maybe the calculated wrong PLL input is due to wrong reading of the counter register?
> Could you please try the attached debug patch for more clue, thanks.
This, supposedly debug-only, patch gives me much better PLL calibration:
pata_pdc2027x 0000:00:0e.0: version 0.9
bccrh [0] bccrl [0]
bccrhv[0] bccrlv[0]
bccrh [7FCF] bccrl [15ED]
bccrhv[7FCF] bccrlv[15D4]
start[0] end[1072141805]
usec_elapsed for mdelay(100) [105500]
start time: [1184152411]s [689475]us
end time: [1184152411]s [794975]us
PLL input clock[-1563248254]Hz
usec_elapsed for mdelay(37) [35432]
start time: [1184152411]s [818033]us
end time: [1184152411]s [853465]us
bccrh [7FC9] bccrl [1A4B]
bccrhv[7FC9] bccrlv[1A4B]
bccrh [7F98] bccrl [3038]
bccrhv[7F98] bccrlv[301F]
start[1071946315] end[1070346296]
usec_elapsed for mdelay(100) [103571]
start time: [1184152411]s [874717]us
end time: [1184152411]s [978288]us
PLL input clock[15440000]Hz
usec_elapsed for mdelay(37) [35431]
start time: [1184152411]s [997039]us
end time: [1184152412]s [32470]us
pata_pdc2027x 0000:00:0e.0: PLL input clock 15440 kHz
and from then on things are fine.
Weird. I'll try with an older gcc later (been using gcc-4.2.0 so far).
/Mikael
^ permalink raw reply
* Re: [PATCH] do firmware feature fixups after features are initialised
From: Benjamin Herrenschmidt @ 2007-07-11 10:28 UTC (permalink / raw)
To: Michael Neuling; +Cc: linuxppc-dev, paulus, Arnd Bergmann
In-Reply-To: <9094.1181275235@neuling.org>
On Fri, 2007-06-08 at 14:00 +1000, Michael Neuling wrote:
> On pSeries the firmware features are not setup until ppc_md.init_early,
> so we can't do the firmware feature sections fixups till after this.
>
> Currently firmware feature sections is only used on iSeries which inits
> the firmware features much earlier. This is a bug in waiting on
> pSeries.
>
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> ---
> paulus: since we aren't hitting this currently, it can wait for 2.6.23.
This patch will cause the kernel to blow up at boot on various machines,
I'm surprised we haven't hit that already.
The problem is that we can't service SLB miss on a !iseries machine if
CONFIG_PPC_ISERIES is set, before the fixup occurs. (Some iseries code
in there will not have been nop'ed out and SRR0 will be loaded with
crap).
Thus we die when unflattening the device-tree on some machines.
There are two possibly solutions I see in the long run:
- We could set the FW features earlier on pseries, though that is a bit
annoying because that means doing it before the device-tree is
unflattened.
- We could constraint lmb_alloc to the first segment until the FW fixup
occurs, either within lmb_alloc itself, or fixup the callers such as
unflatten_device_tree, to pass an explicit limit.
What do you think ?
Ben.
^ permalink raw reply
* Re: [PATCH] Consolidate mm_context_t definition in mmu.h
From: Christoph Hellwig @ 2007-07-11 10:33 UTC (permalink / raw)
To: Josh Boyer; +Cc: linuxppc-dev, paulus, david
In-Reply-To: <1184079709.32199.6.camel@weaponx.rchland.ibm.com>
On Tue, Jul 10, 2007 at 10:01:49AM -0500, Josh Boyer wrote:
> +
> +#ifdef CONFIG_PPC64
> +typedef unsigned long mm_context_id_t;
> +
> +typedef struct {
> + mm_context_id_t id;
> + u16 user_psize; /* page size index */
> +
> +#ifdef CONFIG_PPC_MM_SLICES
> + u64 low_slices_psize; /* SLB page size encodings */
> + u64 high_slices_psize; /* 4 bits per slice for now */
> +#else
> + u16 sllp; /* SLB page size encoding */
> +#endif
> + unsigned long vdso_base;
> +} mm_context_t;
> +
> +#else /* !CONFIG_PPC64 */
> +
> +typedef struct {
> + unsigned long id;
> + unsigned long vdso_base;
> +} mm_context_t;
mm_context_id_t isn't actually used anywhere but in te mm_context_t
definition. So if you kill it you have two common fields and a bunch
of additional ones for PPC64 leading to a defintion like:
typedef struct {
unsigned long id;
#ifdef CONFIG_PPC64
u16 user_psize; /* page size index */
#ifdef CONFIG_PPC_MM_SLICES
u64 low_slices_psize; /* SLB page size encodings */
u64 high_slices_psize; /* 4 bits per slice for now */
#else
u16 sllp; /* SLB page size encoding */
#endif
#endif
unsigned long vdso_base;
} mm_context_t;
^ permalink raw reply
* Re: MPC82xx ADS SCC ports initialisation
From: Vitaly Bordug @ 2007-07-11 10:34 UTC (permalink / raw)
To: Laurent Pinchart; +Cc: linuxppc-embedded
In-Reply-To: <200707110911.19477.laurent.pinchart@technotrade.biz>
[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]
On Wed, 11 Jul 2007 09:11:18 +0200
Laurent Pinchart wrote:
> On Tuesday 10 July 2007 20:11, Scott Wood wrote:
> > On Tue, Jul 10, 2007 at 04:19:51PM +0200, Laurent Pinchart wrote:
> > > clrbits32(&immap->im_cpmux.cmx_scr, (0x00000007 << (4 -
> > > data->clk_tx))); clrbits32(&immap->im_cpmux.cmx_scr, (0x00000038
> > > << (4 - data->clk_rx))); setbits32(&immap->im_cpmux.cmx_scr,
> > > ((data->clk_tx - 1) << (4 - data->clk_tx)));
> > > setbits32(&immap->im_cpmux.cmx_scr,
> > > ((data->clk_rx - 1) << (4 - data->clk_rx)));
> > >
> > > The shift right-hand operand doesn't seem to be correct. Could
> > > anyone confirm this ?
> >
> > You are correct; it's broken.
>
> That code should be replaced with calls to cpm2_clk_setup
> (arch/powerpc/sysdev/cpm2_common.c). cpm2_clk_setup currently
> supports FCC clock setup only, but I've got a patch to add SCC clock
> setup support. Should I send it ?
>
If you have functional approach, please feel free to send it...
> > > If my assumption is right, could anyone tell me if the MPC82xx
> > > processors are actually supported by the powerpc architecture, or
> > > if the MPC82xx ADS code is just a non-functional work in progress.
> >
once my last changes were committed, 82xx was supported and worked fine.
Pretty long time I had no access to the hardware, hence some minor things might require catch-up.
> > I have a bunch of 8xx/82xx changes pending; I hope to get them
> > cleaned up before the merge window ends.
>
Since I'm the only person covering 8xx/82xx for a while, I definitely want to look at those changes...
> That would be nice. I'll wait for your changes to continue my ppc ->
> powerpc port.
>
> > > I also noticed that U-Boot doesn't have flatten device tree
> > > support for the MPC82xx family.
> >
At the moment, I have a patch to add such a thing, but no ability to validate it still works. If you guys will assist a little,
I'll go ahead and submit it to the u-boot list.
> > No, but cuImage for 82xx is on its way.
>
> Ok, nice to know. Adding FDT support to U-Boot for the MPC82xx family
> will be on my todo-list once I get Linux working with cuImage.
>
> Laurent Pinchart
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: [PATCH 1/3] powerpc clk.h interface for platforms
From: Christoph Hellwig @ 2007-07-11 10:36 UTC (permalink / raw)
To: Domen Puncer; +Cc: David Brownell, linuxppc-dev, Sylvain Munaut, linux-mips
In-Reply-To: <20070711093220.GF4375@moe.telargo.com>
On Wed, Jul 11, 2007 at 11:32:20AM +0200, Domen Puncer wrote:
> clk interface for arch/powerpc, platforms should fill
> clk_functions.
Umm, this is about the fifth almost identical implementation of
the clk_ functions. Please, please put it into common code.
And talk to the mips folks which just got a similar comment from me.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox