Merge branch 'next' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx

This commit is contained in:
Paul Mackerras 2008-09-21 18:17:25 -05:00
commit ff4be78bb7
13 changed files with 135 additions and 405 deletions

View File

@ -14,7 +14,7 @@
#address-cells = <2>; #address-cells = <2>;
#size-cells = <1>; #size-cells = <1>;
model = "amcc,glacier"; model = "amcc,glacier";
compatible = "amcc,glacier", "amcc,canyonlands"; compatible = "amcc,glacier";
dcr-parent = <&{/cpus/cpu@0}>; dcr-parent = <&{/cpus/cpu@0}>;
aliases { aliases {

View File

@ -246,13 +246,22 @@
}; };
IIC0: i2c@ef600700 { IIC0: i2c@ef600700 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ibm,iic-440epx", "ibm,iic"; compatible = "ibm,iic-440epx", "ibm,iic";
reg = <0xef600700 0x00000014>; reg = <0xef600700 0x00000014>;
interrupt-parent = <&UIC0>; interrupt-parent = <&UIC0>;
interrupts = <0x2 0x4>; interrupts = <0x2 0x4>;
hwmon@48 {
compatible = "adi,ad7414";
reg = <0x48>;
};
}; };
IIC1: i2c@ef600800 { IIC1: i2c@ef600800 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ibm,iic-440epx", "ibm,iic"; compatible = "ibm,iic-440epx", "ibm,iic";
reg = <0xef600800 0x00000014>; reg = <0xef600800 0x00000014>;
interrupt-parent = <&UIC0>; interrupt-parent = <&UIC0>;

View File

@ -15,7 +15,7 @@
#address-cells = <2>; #address-cells = <2>;
#size-cells = <1>; #size-cells = <1>;
model = "amcc,yosemite"; model = "amcc,yosemite";
compatible = "amcc,yosemite","amcc,bamboo"; compatible = "amcc,yosemite";
dcr-parent = <&{/cpus/cpu@0}>; dcr-parent = <&{/cpus/cpu@0}>;
aliases { aliases {

View File

@ -2,6 +2,7 @@ config BAMBOO
bool "Bamboo" bool "Bamboo"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440EP select 440EP
select PCI select PCI
help help
@ -30,6 +31,7 @@ config SEQUOIA
bool "Sequoia" bool "Sequoia"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440EPX select 440EPX
help help
This option enables support for the AMCC PPC440EPX evaluation board. This option enables support for the AMCC PPC440EPX evaluation board.
@ -38,6 +40,7 @@ config TAISHAN
bool "Taishan" bool "Taishan"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440GX select 440GX
select PCI select PCI
help help
@ -48,6 +51,7 @@ config KATMAI
bool "Katmai" bool "Katmai"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440SPe select 440SPe
select PCI select PCI
select PPC4xx_PCI_EXPRESS select PPC4xx_PCI_EXPRESS
@ -58,6 +62,7 @@ config RAINIER
bool "Rainier" bool "Rainier"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440GRX select 440GRX
select PCI select PCI
help help
@ -80,16 +85,29 @@ config CANYONLANDS
bool "Canyonlands" bool "Canyonlands"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 460EX select 460EX
select PCI select PCI
select PPC4xx_PCI_EXPRESS select PPC4xx_PCI_EXPRESS
help help
This option enables support for the AMCC PPC460EX evaluation board. This option enables support for the AMCC PPC460EX evaluation board.
config GLACIER
bool "Glacier"
depends on 44x
default n
select PPC44x_SIMPLE
select 460EX # Odd since it uses 460GT but the effects are the same
select PCI
select PPC4xx_PCI_EXPRESS
help
This option enables support for the AMCC PPC460GT evaluation board.
config YOSEMITE config YOSEMITE
bool "Yosemite" bool "Yosemite"
depends on 44x depends on 44x
default n default n
select PPC44x_SIMPLE
select 440EP select 440EP
select PCI select PCI
help help
@ -127,6 +145,13 @@ config XILINX_VIRTEX440_GENERIC_BOARD
Most Virtex 5 designs should use this unless it needs to do some Most Virtex 5 designs should use this unless it needs to do some
special configuration at board probe time. special configuration at board probe time.
config PPC44x_SIMPLE
bool "Simple PowerPC 44x board support"
depends on 44x
default n
help
This option enables the simple PowerPC 44x platform support.
# 44x specific CPU modules, selected based on the board above. # 44x specific CPU modules, selected based on the board above.
config 440EP config 440EP
bool bool

View File

@ -1,13 +1,7 @@
obj-$(CONFIG_44x) := misc_44x.o idle.o obj-$(CONFIG_44x) := misc_44x.o idle.o
obj-$(CONFIG_PPC44x_SIMPLE) += ppc44x_simple.o
obj-$(CONFIG_EBONY) += ebony.o obj-$(CONFIG_EBONY) += ebony.o
obj-$(CONFIG_TAISHAN) += taishan.o
obj-$(CONFIG_BAMBOO) += bamboo.o
obj-$(CONFIG_YOSEMITE) += bamboo.o
obj-$(CONFIG_SAM440EP) += sam440ep.o obj-$(CONFIG_SAM440EP) += sam440ep.o
obj-$(CONFIG_SEQUOIA) += sequoia.o
obj-$(CONFIG_KATMAI) += katmai.o
obj-$(CONFIG_RAINIER) += rainier.o
obj-$(CONFIG_WARP) += warp.o obj-$(CONFIG_WARP) += warp.o
obj-$(CONFIG_WARP) += warp-nand.o obj-$(CONFIG_WARP) += warp-nand.o
obj-$(CONFIG_CANYONLANDS) += canyonlands.o
obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o

View File

@ -1,62 +0,0 @@
/*
* Bamboo board specific routines
*
* Wade Farnsworth <wfarnsworth@mvista.com>
* Copyright 2004 MontaVista Software Inc.
*
* Rewritten and ported to the merged powerpc tree:
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id bamboo_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init bamboo_device_probe(void)
{
of_platform_bus_probe(NULL, bamboo_of_bus, NULL);
return 0;
}
machine_device_initcall(bamboo, bamboo_device_probe);
static int __init bamboo_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,bamboo"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(bamboo) {
.name = "Bamboo",
.probe = bamboo_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -1,63 +0,0 @@
/*
* Canyonlands board specific routines
*
* Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
*
* Based on the Katmai code by
* Benjamin Herrenschmidt <benh@kernel.crashing.org>
* Copyright 2007 IBM Corp.
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id canyonlands_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init canyonlands_device_probe(void)
{
of_platform_bus_probe(NULL, canyonlands_of_bus, NULL);
return 0;
}
machine_device_initcall(canyonlands, canyonlands_device_probe);
static int __init canyonlands_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,canyonlands"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(canyonlands) {
.name = "Canyonlands",
.probe = canyonlands_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -1,62 +0,0 @@
/*
* Katmai board specific routines
*
* Benjamin Herrenschmidt <benh@kernel.crashing.org>
* Copyright 2007 IBM Corp.
*
* Based on the Bamboo code by
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id katmai_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init katmai_device_probe(void)
{
of_platform_bus_probe(NULL, katmai_of_bus, NULL);
return 0;
}
machine_device_initcall(katmai, katmai_device_probe);
static int __init katmai_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,katmai"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(katmai) {
.name = "Katmai",
.probe = katmai_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -0,0 +1,87 @@
/*
* Generic PowerPC 44x platform support
*
* Copyright 2008 IBM Corporation
*
* 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; version 2 of the License.
*
* This implements simple platform support for PowerPC 44x chips. This is
* mostly used for eval boards or other simple and "generic" 44x boards. If
* your board has custom functions or hardware, then you will likely want to
* implement your own board.c file to accommodate it.
*/
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
#include <asm/prom.h>
#include <asm/time.h>
#include <asm/udbg.h>
#include <asm/uic.h>
#include <linux/init.h>
#include <linux/of_platform.h>
static __initdata struct of_device_id ppc44x_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{ .compatible = "simple-bus", },
{},
};
static int __init ppc44x_device_probe(void)
{
of_platform_bus_probe(NULL, ppc44x_of_bus, NULL);
return 0;
}
machine_device_initcall(ppc44x_simple, ppc44x_device_probe);
/* This is the list of boards that can be supported by this simple
* platform code. This does _not_ mean the boards are compatible,
* as they most certainly are not from a device tree perspective.
* However, their differences are handled by the device tree and the
* drivers and therefore they don't need custom board support files.
*
* Again, if your board needs to do things differently then create a
* board.c file for it rather than adding it to this list.
*/
static char *board[] __initdata = {
"amcc,bamboo",
"amcc,cayonlands",
"amcc,glacier",
"ibm,ebony",
"amcc,katmai",
"amcc,rainier",
"amcc,sequoia",
"amcc,taishan",
"amcc,yosemite"
};
static int __init ppc44x_probe(void)
{
unsigned long root = of_get_flat_dt_root();
int i = 0;
for (i = 0; i < ARRAY_SIZE(board); i++) {
if (of_flat_dt_is_compatible(root, board[i])) {
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
}
return 0;
}
define_machine(ppc44x_simple) {
.name = "PowerPC 44x Platform",
.probe = ppc44x_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -1,62 +0,0 @@
/*
* Rainier board specific routines
*
* Valentine Barshak <vbarshak@ru.mvista.com>
* Copyright 2007 MontaVista Software Inc.
*
* Based on the Bamboo code by
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id rainier_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init rainier_device_probe(void)
{
of_platform_bus_probe(NULL, rainier_of_bus, NULL);
return 0;
}
machine_device_initcall(rainier, rainier_device_probe);
static int __init rainier_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,rainier"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(rainier) {
.name = "Rainier",
.probe = rainier_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -1,63 +0,0 @@
/*
* Sequoia board specific routines
*
* Valentine Barshak <vbarshak@ru.mvista.com>
* Copyright 2007 MontaVista Software Inc.
*
* Based on the Bamboo code by
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id sequoia_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init sequoia_device_probe(void)
{
of_platform_bus_probe(NULL, sequoia_of_bus, NULL);
return 0;
}
machine_device_initcall(sequoia, sequoia_device_probe);
static int __init sequoia_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,sequoia"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(sequoia) {
.name = "Sequoia",
.probe = sequoia_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -1,72 +0,0 @@
/*
* Taishan board specific routines based off ebony.c code
* original copyrights below
*
* Matt Porter <mporter@kernel.crashing.org>
* Copyright 2002-2005 MontaVista Software Inc.
*
* Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
* Copyright (c) 2003-2005 Zultys Technologies
*
* Rewritten and ported to the merged powerpc tree:
* Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
*
* Modified from ebony.c for taishan:
* Copyright 2007 Hugh Blemings <hugh@au.ibm.com>, IBM Corporation.
*
* 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 <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
static __initdata struct of_device_id taishan_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init taishan_device_probe(void)
{
of_platform_bus_probe(NULL, taishan_of_bus, NULL);
return 0;
}
machine_device_initcall(taishan, taishan_device_probe);
/*
* Called very early, MMU is off, device-tree isn't unflattened
*/
static int __init taishan_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,taishan"))
return 0;
ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC;
return 1;
}
define_machine(taishan) {
.name = "Taishan",
.probe = taishan_probe,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc4xx_reset_system,
.calibrate_decr = generic_calibrate_decr,
};

View File

@ -30,14 +30,12 @@
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/dcr.h> #include <asm/dcr.h>
#include <asm/dcr-regs.h> #include <asm/dcr-regs.h>
#include <mm/mmu_decl.h>
#include "ppc4xx_pci.h" #include "ppc4xx_pci.h"
static int dma_offset_set; static int dma_offset_set;
/* Move that to a useable header */
extern unsigned long total_memory;
#define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL)) #define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL))
#define U64_TO_U32_HIGH(val) ((u32)((val) >> 32)) #define U64_TO_U32_HIGH(val) ((u32)((val) >> 32))
@ -105,7 +103,8 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
/* Default */ /* Default */
res->start = 0; res->start = 0;
res->end = size = 0x80000000; size = 0x80000000;
res->end = size - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH; res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
/* Get dma-ranges property */ /* Get dma-ranges property */
@ -167,13 +166,13 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
*/ */
if (size < total_memory) { if (size < total_memory) {
printk(KERN_ERR "%s: dma-ranges too small " printk(KERN_ERR "%s: dma-ranges too small "
"(size=%llx total_memory=%lx)\n", "(size=%llx total_memory=%llx)\n",
hose->dn->full_name, size, total_memory); hose->dn->full_name, size, (u64)total_memory);
return -ENXIO; return -ENXIO;
} }
/* Check we are a power of 2 size and that base is a multiple of size*/ /* Check we are a power of 2 size and that base is a multiple of size*/
if (!is_power_of_2(size) || if ((size & (size - 1)) != 0 ||
(res->start & (size - 1)) != 0) { (res->start & (size - 1)) != 0) {
printk(KERN_ERR "%s: dma-ranges unaligned\n", printk(KERN_ERR "%s: dma-ranges unaligned\n",
hose->dn->full_name); hose->dn->full_name);
@ -810,7 +809,7 @@ static int ppc460ex_pciex_init_port_hw(struct ppc4xx_pciex_port *port)
switch (port->index) { switch (port->index) {
case 0: case 0:
mtdcri(SDR0, PESDR0_460EX_L0CDRCTL, 0x00003230); mtdcri(SDR0, PESDR0_460EX_L0CDRCTL, 0x00003230);
mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000136); mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000130);
mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006); mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006);
mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST,0x10000000); mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST,0x10000000);
@ -821,10 +820,10 @@ static int ppc460ex_pciex_init_port_hw(struct ppc4xx_pciex_port *port)
mtdcri(SDR0, PESDR1_460EX_L1CDRCTL, 0x00003230); mtdcri(SDR0, PESDR1_460EX_L1CDRCTL, 0x00003230);
mtdcri(SDR0, PESDR1_460EX_L2CDRCTL, 0x00003230); mtdcri(SDR0, PESDR1_460EX_L2CDRCTL, 0x00003230);
mtdcri(SDR0, PESDR1_460EX_L3CDRCTL, 0x00003230); mtdcri(SDR0, PESDR1_460EX_L3CDRCTL, 0x00003230);
mtdcri(SDR0, PESDR1_460EX_L0DRV, 0x00000136); mtdcri(SDR0, PESDR1_460EX_L0DRV, 0x00000130);
mtdcri(SDR0, PESDR1_460EX_L1DRV, 0x00000136); mtdcri(SDR0, PESDR1_460EX_L1DRV, 0x00000130);
mtdcri(SDR0, PESDR1_460EX_L2DRV, 0x00000136); mtdcri(SDR0, PESDR1_460EX_L2DRV, 0x00000130);
mtdcri(SDR0, PESDR1_460EX_L3DRV, 0x00000136); mtdcri(SDR0, PESDR1_460EX_L3DRV, 0x00000130);
mtdcri(SDR0, PESDR1_460EX_L0CLK, 0x00000006); mtdcri(SDR0, PESDR1_460EX_L0CLK, 0x00000006);
mtdcri(SDR0, PESDR1_460EX_L1CLK, 0x00000006); mtdcri(SDR0, PESDR1_460EX_L1CLK, 0x00000006);
mtdcri(SDR0, PESDR1_460EX_L2CLK, 0x00000006); mtdcri(SDR0, PESDR1_460EX_L2CLK, 0x00000006);