Commit 773d7a09 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (35 commits)
  powerpc/5121: make clock debug output more readable
  powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function
  powerpc/5200: Update pcm030.dts to add i2c eeprom and delete cruft
  powerpc/5200: convert mpc52xx_psc_spi to use cs_control callback
  fbdev/xilinxfb: Fix improper casting and tighen up probe path
  usb/ps3: Add missing annotations
  powerpc: Add memory clobber to mtspr()
  powerpc: Fix invalid construct in our CPU selection Kconfig
  ps3rom: Use ps3_system_bus_[gs]et_drvdata() instead of direct access
  powerpc: Add configurable -Werror for arch/powerpc
  of_serial: Add UPF_FIXED_TYPE flag
  drivers/hvc: Add missing __devexit_p()
  net/ps3: gelic - Add missing annotations
  powerpc: Introduce macro spin_event_timeout()
  powerpc/warp: Fix ISA_DMA_THRESHOLD default
  powerpc/bootwrapper: Custom build options for XPedite52xx targets
  powerpc/85xx: Add defconfig for X-ES MPC85xx boards
  powerpc/85xx: Add dts files for X-ES MPC85xx boards
  powerpc/85xx: Add platform support for X-ES MPC85xx boards
  83xx: add support for the kmeter1 board.
  ...
parents 17fad520 b71a107c
...@@ -2,6 +2,23 @@ menu "Kernel hacking" ...@@ -2,6 +2,23 @@ menu "Kernel hacking"
source "lib/Kconfig.debug" source "lib/Kconfig.debug"
config PPC_DISABLE_WERROR
bool "Don't build arch/powerpc code with -Werror"
default n
help
This option tells the compiler NOT to build the code under
arch/powerpc with the -Werror flag (which means warnings
are treated as errors).
Only enable this if you are hitting a build failure in the
arch/powerpc code caused by a warning, and you don't feel
inclined to fix it.
config PPC_WERROR
bool
depends on !PPC_DISABLE_WERROR
default y
config PRINT_STACK_DEPTH config PRINT_STACK_DEPTH
int "Stack depth to print" if DEBUG_KERNEL int "Stack depth to print" if DEBUG_KERNEL
default 64 default 64
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "cuboot.h" #include "cuboot.h"
#define TARGET_85xx #define TARGET_85xx
#define TARGET_HAS_ETH3
#include "ppcboot.h" #include "ppcboot.h"
static bd_t bd; static bd_t bd;
...@@ -27,6 +28,7 @@ static void platform_fixups(void) ...@@ -27,6 +28,7 @@ static void platform_fixups(void)
dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr);
dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr);
dt_fixup_mac_address_by_alias("ethernet3", bd.bi_enet3addr);
dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq);
/* Unfortunately, the specific model number is encoded in the /* Unfortunately, the specific model number is encoded in the
......
...@@ -167,7 +167,7 @@ usb@22000 { ...@@ -167,7 +167,7 @@ usb@22000 {
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <39 0x8>; interrupts = <39 0x8>;
phy_type = "ulpi"; phy_type = "ulpi";
port1; port0;
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
......
...@@ -152,6 +152,16 @@ i2c1: i2c@3000 { ...@@ -152,6 +152,16 @@ i2c1: i2c@3000 {
interrupt-parent = <&mpic>; interrupt-parent = <&mpic>;
dfsrr; dfsrr;
hwmon@48 {
compatible = "national,lm92";
reg = <0x48>;
};
hwmon@4c {
compatible = "adi,adt7461";
reg = <0x4c>;
};
rtc@51 { rtc@51 {
compatible = "epson,rx8581"; compatible = "epson,rx8581";
reg = <0x00000051>; reg = <0x00000051>;
......
This diff is collapsed.
...@@ -17,6 +17,13 @@ / { ...@@ -17,6 +17,13 @@ / {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
aliases {
ethernet0 = &eth0;
ethernet1 = &eth1;
serial0 = &scc1;
serial1 = &scc4;
};
cpus { cpus {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
...@@ -46,13 +53,13 @@ localbus@f0010100 { ...@@ -46,13 +53,13 @@ localbus@f0010100 {
#size-cells = <1>; #size-cells = <1>;
reg = <0xf0010100 0x40>; reg = <0xf0010100 0x40>;
ranges = <0x0 0x0 0xfe000000 0x2000000 ranges = <0x0 0x0 0xff800000 0x00800000
0x1 0x0 0xf4500000 0x8000 0x1 0x0 0xf4500000 0x8000
0x3 0x0 0xf8200000 0x8000>; 0x3 0x0 0xf8200000 0x8000>;
flash@0,0 { flash@0,0 {
compatible = "jedec-flash"; compatible = "jedec-flash";
reg = <0x0 0x0 0x2000000>; reg = <0x0 0x0 0x00800000>;
bank-width = <4>; bank-width = <4>;
device-width = <1>; device-width = <1>;
}; };
...@@ -144,7 +151,7 @@ brg@119f0 { ...@@ -144,7 +151,7 @@ brg@119f0 {
reg = <0x119f0 0x10 0x115f0 0x10>; reg = <0x119f0 0x10 0x115f0 0x10>;
}; };
serial@11a00 { scc1: serial@11a00 {
device_type = "serial"; device_type = "serial";
compatible = "fsl,mpc8272-scc-uart", compatible = "fsl,mpc8272-scc-uart",
"fsl,cpm2-scc-uart"; "fsl,cpm2-scc-uart";
...@@ -155,7 +162,7 @@ serial@11a00 { ...@@ -155,7 +162,7 @@ serial@11a00 {
fsl,cpm-command = <0x800000>; fsl,cpm-command = <0x800000>;
}; };
serial@11a60 { scc4: serial@11a60 {
device_type = "serial"; device_type = "serial";
compatible = "fsl,mpc8272-scc-uart", compatible = "fsl,mpc8272-scc-uart",
"fsl,cpm2-scc-uart"; "fsl,cpm2-scc-uart";
...@@ -192,7 +199,7 @@ PHY1: ethernet-phy@1 { ...@@ -192,7 +199,7 @@ PHY1: ethernet-phy@1 {
}; };
}; };
ethernet@11300 { eth0: ethernet@11300 {
device_type = "network"; device_type = "network";
compatible = "fsl,mpc8272-fcc-enet", compatible = "fsl,mpc8272-fcc-enet",
"fsl,cpm2-fcc-enet"; "fsl,cpm2-fcc-enet";
...@@ -205,7 +212,7 @@ ethernet@11300 { ...@@ -205,7 +212,7 @@ ethernet@11300 {
fsl,cpm-command = <0x12000300>; fsl,cpm-command = <0x12000300>;
}; };
ethernet@11320 { eth1: ethernet@11320 {
device_type = "network"; device_type = "network";
compatible = "fsl,mpc8272-fcc-enet", compatible = "fsl,mpc8272-fcc-enet",
"fsl,cpm2-fcc-enet"; "fsl,cpm2-fcc-enet";
......
...@@ -322,6 +322,21 @@ ipic: interrupt-controller@700 { ...@@ -322,6 +322,21 @@ ipic: interrupt-controller@700 {
reg = <0x700 0x100>; reg = <0x700 0x100>;
device_type = "ipic"; device_type = "ipic";
}; };
ipic-msi@7c0 {
compatible = "fsl,ipic-msi";
reg = <0x7c0 0x40>;
msi-available-ranges = <0 0x100>;
interrupts = <0x43 0x8
0x4 0x8
0x51 0x8
0x52 0x8
0x56 0x8
0x57 0x8
0x58 0x8
0x59 0x8>;
interrupt-parent = < &ipic >;
};
}; };
pci0: pci@e0008500 { pci0: pci@e0008500 {
......
...@@ -156,7 +156,7 @@ usb@22000 { ...@@ -156,7 +156,7 @@ usb@22000 {
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <39 0x8>; interrupts = <39 0x8>;
phy_type = "ulpi"; phy_type = "ulpi";
port1; port0;
}; };
usb@23000 { usb@23000 {
......
...@@ -153,7 +153,7 @@ usb@22000 { ...@@ -153,7 +153,7 @@ usb@22000 {
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <39 0x8>; interrupts = <39 0x8>;
phy_type = "ulpi"; phy_type = "ulpi";
port1; port0;
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
......
...@@ -155,7 +155,7 @@ rtc@68 { ...@@ -155,7 +155,7 @@ rtc@68 {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8377-esdhc", "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8377-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -169,7 +169,7 @@ mcu_pio: mcu@a { ...@@ -169,7 +169,7 @@ mcu_pio: mcu@a {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8377-esdhc", "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8377-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -155,7 +155,7 @@ rtc@68 { ...@@ -155,7 +155,7 @@ rtc@68 {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8378-esdhc", "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8378-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -169,7 +169,7 @@ mcu_pio: mcu@a { ...@@ -169,7 +169,7 @@ mcu_pio: mcu@a {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8378-esdhc", "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8378-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -153,7 +153,7 @@ rtc@68 { ...@@ -153,7 +153,7 @@ rtc@68 {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8379-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -167,7 +167,7 @@ mcu_pio: mcu@a { ...@@ -167,7 +167,7 @@ mcu_pio: mcu@a {
}; };
sdhci@2e000 { sdhci@2e000 {
compatible = "fsl,mpc8379-esdhc"; compatible = "fsl,mpc8379-esdhc", "fsl,esdhc";
reg = <0x2e000 0x1000>; reg = <0x2e000 0x1000>;
interrupts = <42 0x8>; interrupts = <42 0x8>;
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
......
...@@ -24,6 +24,8 @@ aliases { ...@@ -24,6 +24,8 @@ aliases {
ethernet1 = &enet1; ethernet1 = &enet1;
ethernet2 = &enet2; ethernet2 = &enet2;
ethernet3 = &enet3; ethernet3 = &enet3;
ethernet5 = &enet5;
ethernet7 = &enet7;
pci1 = &pci1; pci1 = &pci1;
rapidio0 = &rio0; rapidio0 = &rio0;
}; };
...@@ -70,8 +72,30 @@ nor@0,0 { ...@@ -70,8 +72,30 @@ nor@0,0 {
#size-cells = <1>; #size-cells = <1>;
compatible = "cfi-flash"; compatible = "cfi-flash";
reg = <0x0 0x0 0x02000000>; reg = <0x0 0x0 0x02000000>;
bank-width = <2>; bank-width = <1>;
device-width = <1>; device-width = <1>;
partition@0 {
label = "ramdisk";
reg = <0x00000000 0x01c00000>;
};
partition@1c00000 {
label = "kernel";
reg = <0x01c00000 0x002e0000>;
};
partiton@1ee0000 {
label = "dtb";
reg = <0x01ee0000 0x00020000>;
};
partition@1f00000 {
label = "firmware";
reg = <0x01f00000 0x00080000>;
read-only;
};
partition@1f80000 {
label = "u-boot";
reg = <0x01f80000 0x00080000>;
read-only;
};
}; };
bcsr@1,0 { bcsr@1,0 {
...@@ -466,6 +490,37 @@ qe_phy3: ethernet-phy@03 { ...@@ -466,6 +490,37 @@ qe_phy3: ethernet-phy@03 {
reg = <0x3>; reg = <0x3>;
device_type = "ethernet-phy"; device_type = "ethernet-phy";
}; };
qe_phy5: ethernet-phy@04 {
interrupt-parent = <&mpic>;
reg = <0x04>;
device_type = "ethernet-phy";
};
qe_phy7: ethernet-phy@06 {
interrupt-parent = <&mpic>;
reg = <0x6>;
device_type = "ethernet-phy";
};
};
mdio@3520 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x3520 0x18>;
compatible = "fsl,ucc-mdio";
tbi0: tbi-phy@15 {
reg = <0x15>;
device_type = "tbi-phy";
};
};
mdio@3720 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x3720 0x38>;
compatible = "fsl,ucc-mdio";
tbi1: tbi-phy@17 {
reg = <0x17>;
device_type = "tbi-phy";
};
}; };
enet2: ucc@2200 { enet2: ucc@2200 {
...@@ -513,6 +568,36 @@ enet3: ucc@3200 { ...@@ -513,6 +568,36 @@ enet3: ucc@3200 {
phy-connection-type = "rgmii-id"; phy-connection-type = "rgmii-id";
}; };
enet5: ucc@3400 {
device_type = "network";
compatible = "ucc_geth";
cell-index = <6>;
reg = <0x3400 0x200>;
interrupts = <41>;
interrupt-parent = <&qeic>;
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock-name = "none";
tx-clock-name = "none";
tbi-handle = <&tbi0>;
phy-handle = <&qe_phy5>;
phy-connection-type = "sgmii";
};
enet7: ucc@3600 {
device_type = "network";
compatible = "ucc_geth";
cell-index = <8>;
reg = <0x3600 0x200>;
interrupts = <43>;
interrupt-parent = <&qeic>;
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock-name = "none";
tx-clock-name = "none";
tbi-handle = <&tbi1>;
phy-handle = <&qe_phy7>;
phy-connection-type = "sgmii";
};
muram@10000 { muram@10000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -258,34 +258,16 @@ rtc@51 { ...@@ -258,34 +258,16 @@ rtc@51 {
compatible = "nxp,pcf8563"; compatible = "nxp,pcf8563";
reg = <0x51>; reg = <0x51>;
}; };
/* FIXME: EEPROM */ eeprom@52 {
compatible = "catalyst,24c32";
reg = <0x52>;
};
}; };
sram@8000 { sram@8000 {
compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram"; compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
reg = <0x8000 0x4000>; reg = <0x8000 0x4000>;
}; };
/* This is only an example device to show the usage of gpios. It maps all available
* gpios to the "gpio-provider" device.
*/
gpio {
compatible = "gpio-provider";
/* mpc52xx exp.con patchfield */
gpios = <&gpio_wkup 0 0 /* GPIO_WKUP_7 11d jp13-3 */
&gpio_wkup 1 0 /* GPIO_WKUP_6 14c */
&gpio_wkup 6 0 /* PSC2_4 43c x5-11 */
&gpio_simple 2 0 /* IRDA_1 24c x7-6 set GPS_PORT_CONFIG[IRDA] = 0 */
&gpio_simple 3 0 /* IRDA_0 x8-5 set GPS_PORT_CONFIG[IRDA] = 0 */
&gpt2 0 0 /* timer2 12d x4-4 */
&gpt3 0 0 /* timer3 13d x6-4 */
&gpt4 0 0 /* timer4 61c x2-16 */
&gpt5 0 0 /* timer5 44c x7-11 */
&gpt6 0 0 /* timer6 60c x8-15 */
&gpt7 0 0 /* timer7 36a x17-9 */
>;
};
}; };
pci@f0000d00 { pci@f0000d00 {
......
...@@ -144,7 +144,7 @@ usb@22000 { ...@@ -144,7 +144,7 @@ usb@22000 {
interrupt-parent = <&ipic>; interrupt-parent = <&ipic>;
interrupts = <39 0x8>; interrupts = <39 0x8>;
phy_type = "ulpi"; phy_type = "ulpi";
port1; port0;
}; };
/* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
usb@23000 { usb@23000 {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -225,6 +225,10 @@ asp834x-redboot) ...@@ -225,6 +225,10 @@ asp834x-redboot)
platformo="$object/fixed-head.o $object/redboot-83xx.o" platformo="$object/fixed-head.o $object/redboot-83xx.o"
binary=y binary=y
;; ;;
xpedite52*)
link_address='0x1400000'
platformo=$object/cuboot-85xx.o
;;
esac esac
vmz="$tmpdir/`basename \"$kernel\"`.$ext" vmz="$tmpdir/`basename \"$kernel\"`.$ext"
......
This diff is collapsed.
This diff is collapsed.
...@@ -2,8 +2,11 @@ ...@@ -2,8 +2,11 @@
#define _ASM_POWERPC_DELAY_H #define _ASM_POWERPC_DELAY_H
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <asm/time.h>
/* /*
* Copyright 1996, Paul Mackerras. * Copyright 1996, Paul Mackerras.
* Copyright (C) 2009 Freescale Semiconductor, Inc. All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -30,5 +33,38 @@ extern void udelay(unsigned long usecs); ...@@ -30,5 +33,38 @@ extern void udelay(unsigned long usecs);
#define mdelay(n) udelay((n) * 1000) #define mdelay(n) udelay((n) * 1000)
#endif #endif
/**
* spin_event_timeout - spin until a condition gets true or a timeout elapses
* @condition: a C expression to evalate
* @timeout: timeout, in microseconds
* @delay: the number of microseconds to delay between each evaluation of
* @condition
*
* The process spins until the condition evaluates to true (non-zero) or the
* timeout elapses. The return value of this macro is the value of
* @condition when the loop terminates. This allows you to determine the cause
* of the loop terminates. If the return value is zero, then you know a
* timeout has occurred.
*
* This primary purpose of this macro is to poll on a hardware register
* until a status bit changes. The timeout ensures that the loop still
* terminates even if the bit never changes. The delay is for devices that
* need a delay in between successive reads.
*
* gcc will optimize out the if-statement if @delay is a constant.
*/
#define spin_event_timeout(condition, timeout, delay) \
({ \
typeof(condition) __ret; \
unsigned long __loops = tb_ticks_per_usec * timeout; \
unsigned long __start = get_tbl(); \
while (!(__ret = (condition)) && (tb_ticks_since(__start) <= __loops)) \
if (delay) \
udelay(delay); \
else \
cpu_relax(); \
__ret; \
})
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_DELAY_H */ #endif /* _ASM_POWERPC_DELAY_H */
...@@ -95,8 +95,8 @@ struct fsl_lbc_bank { ...@@ -95,8 +95,8 @@ struct fsl_lbc_bank {
}; };
struct fsl_lbc_regs { struct fsl_lbc_regs {
struct fsl_lbc_bank bank[8]; struct fsl_lbc_bank bank[12];
u8 res0[0x28]; u8 res0[0x8];
__be32 mar; /**< UPM Address Register */ __be32 mar; /**< UPM Address Register */
u8 res1[0x4]; u8 res1[0x4];
__be32 mamr; /**< UPMA Mode Register */ __be32 mamr; /**< UPMA Mode Register */
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/types.h> #include <asm/types.h>
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/mpc5xxx.h>
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#include <linux/suspend.h> #include <linux/suspend.h>
...@@ -268,7 +269,6 @@ struct mpc52xx_intr { ...@@ -268,7 +269,6 @@ struct mpc52xx_intr {
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/* mpc52xx_common.c */ /* mpc52xx_common.c */
extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
extern void mpc5200_setup_xlb_arbiter(void); extern void mpc5200_setup_xlb_arbiter(void);
extern void mpc52xx_declare_of_platform_devices(void); extern void mpc52xx_declare_of_platform_devices(void);
extern void mpc52xx_map_common_devices(void); extern void mpc52xx_map_common_devices(void);
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* Author: John Rigby, <jrigby@freescale.com>, Friday Apr 13 2007 * Author: John Rigby, <jrigby@freescale.com>, Friday Apr 13 2007
* *
* Description: * Description:
* MPC5121 Prototypes and definitions * MPC5xxx Prototypes and definitions
* *
* This is free software; you can redistribute it and/or modify it * This is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by * under the terms of the GNU General Public License as published by
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
* *
*/ */
#ifndef __ASM_POWERPC_MPC512x_H__ #ifndef __ASM_POWERPC_MPC5xxx_H__
#define __ASM_POWERPC_MPC512x_H__ #define __ASM_POWERPC_MPC5xxx_H__
extern unsigned long mpc512x_find_ips_freq(struct device_node *node); extern unsigned long mpc5xxx_get_bus_frequency(struct device_node *node);
#endif /* __ASM_POWERPC_MPC512x_H__ */ #endif /* __ASM_POWERPC_MPC5xxx_H__ */
...@@ -755,7 +755,8 @@ ...@@ -755,7 +755,8 @@
#define mfspr(rn) ({unsigned long rval; \ #define mfspr(rn) ({unsigned long rval; \
asm volatile("mfspr %0," __stringify(rn) \ asm volatile("mfspr %0," __stringify(rn) \
: "=r" (rval)); rval;}) : "=r" (rval)); rval;})
#define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v)) #define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v)\
: "memory")
#ifdef __powerpc64__ #ifdef __powerpc64__
#ifdef CONFIG_PPC_CELL #ifdef CONFIG_PPC_CELL
......
...@@ -389,12 +389,14 @@ ...@@ -389,12 +389,14 @@
#define ICCR_CACHE 1 /* Cacheable */ #define ICCR_CACHE 1 /* Cacheable */
/* Bit definitions for L1CSR0. */ /* Bit definitions for L1CSR0. */
#define L1CSR0_CPE 0x00010000 /* Data Cache Parity Enable */
#define L1CSR0_CLFC 0x00000100 /* Cache Lock Bits Flash Clear */ #define L1CSR0_CLFC 0x00000100 /* Cache Lock Bits Flash Clear */
#define L1CSR0_DCFI 0x00000002 /* Data Cache Flash Invalidate */ #define L1CSR0_DCFI 0x00000002 /* Data Cache Flash Invalidate */
#define L1CSR0_CFI 0x00000002 /* Cache Flash Invalidate */ #define L1CSR0_CFI 0x00000002 /* Cache Flash Invalidate */
#define L1CSR0_DCE 0x00000001 /* Data Cache Enable */ #define L1CSR0_DCE 0x00000001 /* Data Cache Enable */
/* Bit definitions for L1CSR1. */ /* Bit definitions for L1CSR1. */
#define L1CSR1_CPE 0x00010000 /* Instruction Cache Parity Enable */
#define L1CSR1_ICLFR 0x00000100 /* Instr Cache Lock Bits Flash Reset */ #define L1CSR1_ICLFR 0x00000100 /* Instr Cache Lock Bits Flash Reset */
#define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */ #define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */
#define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */ #define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"' CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
CFLAGS_prom_init.o += -mno-minimal-toc CFLAGS_prom_init.o += -mno-minimal-toc
endif endif
......
...@@ -239,6 +239,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_L3CR) ...@@ -239,6 +239,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_L3CR)
ori r11,r11,HID0_SGE | HID0_FOLD | HID0_BHTE ori r11,r11,HID0_SGE | HID0_FOLD | HID0_BHTE
ori r11,r11,HID0_LRSTK | HID0_BTIC ori r11,r11,HID0_LRSTK | HID0_BTIC
oris r11,r11,HID0_DPM@h oris r11,r11,HID0_DPM@h
BEGIN_MMU_FTR_SECTION
oris r11,r11,HID0_HIGH_BAT@h
END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
BEGIN_FTR_SECTION BEGIN_FTR_SECTION
xori r11,r11,HID0_BTIC xori r11,r11,HID0_BTIC
END_FTR_SECTION_IFSET(CPU_FTR_NO_BTIC) END_FTR_SECTION_IFSET(CPU_FTR_NO_BTIC)
......
...@@ -17,6 +17,40 @@ ...@@ -17,6 +17,40 @@
#include <asm/cputable.h> #include <asm/cputable.h>
#include <asm/ppc_asm.h> #include <asm/ppc_asm.h>
_GLOBAL(__e500_icache_setup)
mfspr r0, SPRN_L1CSR1
andi. r3, r0, L1CSR1_ICE
bnelr /* Already enabled */
oris r0, r0, L1CSR1_CPE@h
ori r0, r0, (L1CSR1_ICFI | L1CSR1_ICLFR | L1CSR1_ICE)
mtspr SPRN_L1CSR1, r0 /* Enable I-Cache */
isync
blr
_GLOBAL(__e500_dcache_setup)
mfspr r0, SPRN_L1CSR0
andi. r3, r0, L1CSR0_DCE
bnelr /* Already enabled */
msync
isync
li r0, 0
mtspr SPRN_L1CSR0, r0 /* Disable */
msync
isync
li r0, (L1CSR0_DCFI | L1CSR0_CLFC)
mtspr SPRN_L1CSR0, r0 /* Invalidate */
isync
1: mfspr r0, SPRN_L1CSR0
andi. r3, r0, L1CSR0_CLFC
bne+ 1b /* Wait for lock bits reset */
oris r0, r0, L1CSR0_CPE@h
ori r0, r0, L1CSR0_DCE
msync
isync
mtspr SPRN_L1CSR0, r0 /* Enable */
isync
blr
_GLOBAL(__setup_cpu_e200) _GLOBAL(__setup_cpu_e200)
/* enable dedicated debug exception handling resources (Debug APU) */ /* enable dedicated debug exception handling resources (Debug APU) */
mfspr r3,SPRN_HID0 mfspr r3,SPRN_HID0
...@@ -25,7 +59,16 @@ _GLOBAL(__setup_cpu_e200) ...@@ -25,7 +59,16 @@ _GLOBAL(__setup_cpu_e200)
b __setup_e200_ivors b __setup_e200_ivors
_GLOBAL(__setup_cpu_e500v1) _GLOBAL(__setup_cpu_e500v1)
_GLOBAL(__setup_cpu_e500v2) _GLOBAL(__setup_cpu_e500v2)
b __setup_e500_ivors mflr r4
bl __e500_icache_setup
bl __e500_dcache_setup
bl __setup_e500_ivors
mtlr r4
blr
_GLOBAL(__setup_cpu_e500mc) _GLOBAL(__setup_cpu_e500mc)
b __setup_e500mc_ivors mflr r4
bl __e500_icache_setup
bl __e500_dcache_setup
bl __setup_e500mc_ivors
mtlr r4
blr
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# Makefile for Kernel-based Virtual Machine module # Makefile for Kernel-based Virtual Machine module
# #
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
EXTRA_CFLAGS += -Ivirt/kvm -Iarch/powerpc/kvm EXTRA_CFLAGS += -Ivirt/kvm -Iarch/powerpc/kvm
common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# Makefile for ppc-specific library files.. # Makefile for ppc-specific library files..
# #
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
EXTRA_CFLAGS += -mno-minimal-toc EXTRA_CFLAGS += -mno-minimal-toc
endif endif
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# Makefile for the linux ppc-specific parts of the memory manager. # Makefile for the linux ppc-specific parts of the memory manager.
# #
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
EXTRA_CFLAGS += -mno-minimal-toc EXTRA_CFLAGS += -mno-minimal-toc
endif endif
......
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
ifeq ($(CONFIG_PPC64),y) ifeq ($(CONFIG_PPC64),y)
EXTRA_CFLAGS += -mno-minimal-toc EXTRA_CFLAGS += -mno-minimal-toc
endif endif
......
...@@ -43,7 +43,13 @@ static int __init warp_probe(void) ...@@ -43,7 +43,13 @@ static int __init warp_probe(void)
{ {
unsigned long root = of_get_flat_dt_root(); unsigned long root = of_get_flat_dt_root();
return of_flat_dt_is_compatible(root, "pika,warp"); if (!of_flat_dt_is_compatible(root, "pika,warp"))
return 0;
/* For __dma_alloc_coherent */
ISA_DMA_THRESHOLD = ~0L;
return 1;
} }
define_machine(warp) { define_machine(warp) {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <asm/mpc512x.h> #include <asm/mpc5xxx.h>
#include <asm/clk_interface.h> #include <asm/clk_interface.h>
#undef CLK_DEBUG #undef CLK_DEBUG
...@@ -83,13 +83,13 @@ static void dump_clocks(void) ...@@ -83,13 +83,13 @@ static void dump_clocks(void)
mutex_lock(&clocks_mutex); mutex_lock(&clocks_mutex);
printk(KERN_INFO "CLOCKS:\n"); printk(KERN_INFO "CLOCKS:\n");
list_for_each_entry(p, &clocks, node) { list_for_each_entry(p, &clocks, node) {
printk(KERN_INFO " %s %ld", p->name, p->rate); pr_info(" %s=%ld", p->name, p->rate);
if (p->parent) if (p->parent)
printk(KERN_INFO " %s %ld", p->parent->name, pr_cont(" %s=%ld", p->parent->name,
p->parent->rate); p->parent->rate);
if (p->flags & CLK_HAS_CTRL) if (p->flags & CLK_HAS_CTRL)
printk(KERN_INFO " reg/bit %d/%d", p->reg, p->bit); pr_cont(" reg/bit=%d/%d", p->reg, p->bit);
printk("\n"); pr_cont("\n");
} }
mutex_unlock(&clocks_mutex); mutex_unlock(&clocks_mutex);
} }
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#ifndef __MPC512X_H__ #ifndef __MPC512X_H__
#define __MPC512X_H__ #define __MPC512X_H__
extern unsigned long mpc512x_find_ips_freq(struct device_node *node);
extern void __init mpc512x_init_IRQ(void); extern void __init mpc512x_init_IRQ(void);
void __init mpc512x_declare_of_platform_devices(void); void __init mpc512x_declare_of_platform_devices(void);
#endif /* __MPC512X_H__ */ #endif /* __MPC512X_H__ */
...@@ -24,29 +24,6 @@ ...@@ -24,29 +24,6 @@
#include "mpc512x.h" #include "mpc512x.h"
unsigned long
mpc512x_find_ips_freq(struct device_node *node)
{
struct device_node *np;
const unsigned int *p_ips_freq = NULL;
of_node_get(node);
while (node) {
p_ips_freq = of_get_property(node, "bus-frequency", NULL);
if (p_ips_freq)
break;
np = of_get_parent(node);
of_node_put(node);
node = np;
}
if (node)
of_node_put(node);
return p_ips_freq ? *p_ips_freq : 0;
}
EXPORT_SYMBOL(mpc512x_find_ips_freq);
void __init mpc512x_init_IRQ(void) void __init mpc512x_init_IRQ(void)
{ {
struct device_node *np; struct device_node *np;
......
...@@ -47,36 +47,6 @@ static DEFINE_SPINLOCK(mpc52xx_lock); ...@@ -47,36 +47,6 @@ static DEFINE_SPINLOCK(mpc52xx_lock);
static struct mpc52xx_gpt __iomem *mpc52xx_wdt; static struct mpc52xx_gpt __iomem *mpc52xx_wdt;
static struct mpc52xx_cdm __iomem *mpc52xx_cdm; static struct mpc52xx_cdm __iomem *mpc52xx_cdm;
/**
* mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
* @node: device node
*
* Returns IPB bus frequency, or 0 if the bus frequency cannot be found.
*/
unsigned int
mpc52xx_find_ipb_freq(struct device_node *node)
{
struct device_node *np;
const unsigned int *p_ipb_freq = NULL;
of_node_get(node);
while (node) {
p_ipb_freq = of_get_property(node, "bus-frequency", NULL);
if (p_ipb_freq)
break;
np = of_get_parent(node);
of_node_put(node);
node = np;
}
if (node)
of_node_put(node);
return p_ipb_freq ? *p_ipb_freq : 0;
}
EXPORT_SYMBOL(mpc52xx_find_ipb_freq);
/* /*
* Configure the XLB arbiter settings to match what Linux expects. * Configure the XLB arbiter settings to match what Linux expects.
*/ */
...@@ -221,7 +191,7 @@ unsigned int mpc52xx_get_xtal_freq(struct device_node *node) ...@@ -221,7 +191,7 @@ unsigned int mpc52xx_get_xtal_freq(struct device_node *node)
if (!mpc52xx_cdm) if (!mpc52xx_cdm)
return 0; return 0;
freq = mpc52xx_find_ipb_freq(node); freq = mpc5xxx_get_bus_frequency(node);
if (!freq) if (!freq)
return 0; return 0;
......
...@@ -96,6 +96,13 @@ config ASP834x ...@@ -96,6 +96,13 @@ config ASP834x
This enables support for the Analogue & Micro ASP 83xx This enables support for the Analogue & Micro ASP 83xx
board. board.
config KMETER1
bool "Keymile KMETER1"
select DEFAULT_UIMAGE
select QUICC_ENGINE
help
This enables support for the Keymile KMETER1 board.
endif endif
......
...@@ -15,3 +15,4 @@ obj-$(CONFIG_MPC837x_MDS) += mpc837x_mds.o ...@@ -15,3 +15,4 @@ obj-$(CONFIG_MPC837x_MDS) += mpc837x_mds.o
obj-$(CONFIG_SBC834x) += sbc834x.o obj-$(CONFIG_SBC834x) += sbc834x.o
obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o
obj-$(CONFIG_ASP834x) += asp834x.o obj-$(CONFIG_ASP834x) += asp834x.o
obj-$(CONFIG_KMETER1) += kmeter1.o
This diff is collapsed.
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
/* system i/o configuration register low */ /* system i/o configuration register low */
#define MPC83XX_SICRL_OFFS 0x114 #define MPC83XX_SICRL_OFFS 0x114
#define MPC834X_SICRL_USB_MASK 0x60000000 #define MPC834X_SICRL_USB_MASK 0x60000000
#define MPC834X_SICRL_USB0 0x40000000 #define MPC834X_SICRL_USB0 0x20000000
#define MPC834X_SICRL_USB1 0x20000000 #define MPC834X_SICRL_USB1 0x40000000
#define MPC831X_SICRL_USB_MASK 0x00000c00 #define MPC831X_SICRL_USB_MASK 0x00000c00
#define MPC831X_SICRL_USB_ULPI 0x00000800 #define MPC831X_SICRL_USB_ULPI 0x00000800
#define MPC8315_SICRL_USB_MASK 0x000000fc #define MPC8315_SICRL_USB_MASK 0x000000fc
......
...@@ -47,25 +47,25 @@ int mpc834x_usb_cfg(void) ...@@ -47,25 +47,25 @@ int mpc834x_usb_cfg(void)
sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */
prop = of_get_property(np, "phy_type", NULL); prop = of_get_property(np, "phy_type", NULL);
port1_is_dr = 1;
if (prop && (!strcmp(prop, "utmi") || if (prop && (!strcmp(prop, "utmi") ||
!strcmp(prop, "utmi_wide"))) { !strcmp(prop, "utmi_wide"))) {
sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
sicrh |= MPC834X_SICRH_USB_UTMI; sicrh |= MPC834X_SICRH_USB_UTMI;
port1_is_dr = 1; port0_is_dr = 1;
} else if (prop && !strcmp(prop, "serial")) { } else if (prop && !strcmp(prop, "serial")) {
dr_mode = of_get_property(np, "dr_mode", NULL); dr_mode = of_get_property(np, "dr_mode", NULL);
if (dr_mode && !strcmp(dr_mode, "otg")) { if (dr_mode && !strcmp(dr_mode, "otg")) {
sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
port1_is_dr = 1; port0_is_dr = 1;
} else { } else {
sicrl |= MPC834X_SICRL_USB0; sicrl |= MPC834X_SICRL_USB1;
} }
} else if (prop && !strcmp(prop, "ulpi")) { } else if (prop && !strcmp(prop, "ulpi")) {
sicrl |= MPC834X_SICRL_USB0; sicrl |= MPC834X_SICRL_USB1;
} else { } else {
printk(KERN_WARNING "834x USB PHY type not supported\n"); printk(KERN_WARNING "834x USB PHY type not supported\n");
} }
port0_is_dr = 1;
of_node_put(np); of_node_put(np);
} }
np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph"); np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph");
......
...@@ -35,12 +35,14 @@ config MPC85xx_MDS ...@@ -35,12 +35,14 @@ config MPC85xx_MDS
select DEFAULT_UIMAGE select DEFAULT_UIMAGE
select PHYLIB select PHYLIB
select HAS_RAPIDIO select HAS_RAPIDIO
select SWIOTLB
help help
This option enables support for the MPC85xx MDS board This option enables support for the MPC85xx MDS board
config MPC8536_DS config MPC8536_DS
bool "Freescale MPC8536 DS" bool "Freescale MPC8536 DS"
select DEFAULT_UIMAGE select DEFAULT_UIMAGE
select SWIOTLB
help help
This option enables support for the MPC8536 DS board This option enables support for the MPC8536 DS board
...@@ -49,6 +51,7 @@ config MPC85xx_DS ...@@ -49,6 +51,7 @@ config MPC85xx_DS
select PPC_I8259 select PPC_I8259
select DEFAULT_UIMAGE select DEFAULT_UIMAGE
select FSL_ULI1575 select FSL_ULI1575
select SWIOTLB
help help
This option enables support for the MPC85xx DS (MPC8544 DS) board This option enables support for the MPC85xx DS (MPC8544 DS) board
...@@ -64,6 +67,16 @@ config KSI8560 ...@@ -64,6 +67,16 @@ config KSI8560
help help
This option enables support for the Emerson KSI8560 board This option enables support for the Emerson KSI8560 board
config XES_MPC85xx
bool "X-ES single-board computer"
select DEFAULT_UIMAGE
help
This option enables support for the various single-board
computers from Extreme Engineering Solutions (X-ES) based on
Freescale MPC85xx processors.
Manufacturer: Extreme Engineering Solutions, Inc.
URL: <http://www.xes-inc.com/>
config STX_GP3 config STX_GP3
bool "Silicon Turnkey Express GP3" bool "Silicon Turnkey Express GP3"
help help
......
...@@ -15,3 +15,4 @@ obj-$(CONFIG_SBC8560) += sbc8560.o ...@@ -15,3 +15,4 @@ obj-$(CONFIG_SBC8560) += sbc8560.o
obj-$(CONFIG_SBC8548) += sbc8548.o obj-$(CONFIG_SBC8548) += sbc8548.o
obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o
obj-$(CONFIG_KSI8560) += ksi8560.o obj-$(CONFIG_KSI8560) += ksi8560.o
obj-$(CONFIG_XES_MPC85xx) += xes_mpc85xx.o
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -15,6 +15,7 @@ config MPC8641_HPCN ...@@ -15,6 +15,7 @@ config MPC8641_HPCN
select DEFAULT_UIMAGE select DEFAULT_UIMAGE
select FSL_ULI1575 select FSL_ULI1575
select HAS_RAPIDIO select HAS_RAPIDIO
select SWIOTLB
help help
This option enables support for the MPC8641 HPCN board. This option enables support for the MPC8641 HPCN board.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment