Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Bolt in SLB entry for kernel stack on secondary cpus [POWERPC] PS3: Update ps3_defconfig [POWERPC] PS3: Remove unsupported wakeup sources [POWERPC] PS3: Make ps3_virq_setup and ps3_virq_destroy static [POWERPC] PS3: Add time include to lpm [POWERPC] Fix slb.c compile warnings [POWERPC] Xilinx: Fix compile warnings [POWERPC] Squash build warning for print of resource_size_t in fsl_soc.c [RAPIDIO] fix current kernel-doc notation [POWERPC] 86xx: mpc8610_hpcd: add support for PCI Express x8 slot Fix a potential issue in mpc52xx uart driver [POWERPC] mpc5200: Allow for fixed speed MII configurations [POWERPC] 86xx: Fix the wrong serial1 interrupt for 8610 board
This commit is contained in:
commit
c36c804559
@ -237,6 +237,17 @@ Each GPIO controller node should have the empty property gpio-controller and
|
||||
according to the bit numbers in the GPIO control registers. The second cell
|
||||
is for flags which is currently unsused.
|
||||
|
||||
8) FEC nodes
|
||||
The FEC node can specify one of the following properties to configure
|
||||
the MII link:
|
||||
"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire
|
||||
mode instead of MII
|
||||
"current-speed" - Specifies that the MII should be configured for a fixed
|
||||
speed. This property should contain two cells. The
|
||||
first cell specifies the speed in Mbps and the second
|
||||
should be '0' for half duplex and '1' for full duplex
|
||||
"phy-handle" - Contains a phandle to an Ethernet PHY.
|
||||
|
||||
IV - Extra Notes
|
||||
================
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
serial1 = &serial1;
|
||||
pci0 = &pci0;
|
||||
pci1 = &pci1;
|
||||
pci2 = &pci2;
|
||||
};
|
||||
|
||||
cpus {
|
||||
@ -105,7 +106,7 @@
|
||||
compatible = "ns16550";
|
||||
reg = <0x4600 0x100>;
|
||||
clock-frequency = <0>;
|
||||
interrupts = <28 2>;
|
||||
interrupts = <42 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
@ -322,4 +323,24 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pci2: pcie@e0009000 {
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
device_type = "pci";
|
||||
compatible = "fsl,mpc8641-pcie";
|
||||
reg = <0xe0009000 0x00001000>;
|
||||
ranges = <0x02000000 0 0x90000000 0x90000000 0 0x10000000
|
||||
0x01000000 0 0x00000000 0xe2000000 0 0x00100000>;
|
||||
bus-range = <0 255>;
|
||||
interrupt-map-mask = <0xf800 0 0 7>;
|
||||
interrupt-map = <0x0000 0 0 1 &mpic 4 1
|
||||
0x0000 0 0 2 &mpic 5 1
|
||||
0x0000 0 0 3 &mpic 6 1
|
||||
0x0000 0 0 4 &mpic 7 1>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <25 2>;
|
||||
clock-frequency = <33333333>;
|
||||
};
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.25-rc6
|
||||
# Thu Mar 20 11:07:04 2008
|
||||
# Linux kernel version: 2.6.25
|
||||
# Mon Apr 28 12:39:10 2008
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
|
||||
@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
|
||||
CONFIG_IRQ_PER_CPU=y
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_ARCH_HAS_ILOG2_U32=y
|
||||
CONFIG_ARCH_HAS_ILOG2_U64=y
|
||||
@ -73,8 +76,6 @@ CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_CGROUPS is not set
|
||||
# CONFIG_GROUP_SCHED is not set
|
||||
# CONFIG_USER_SCHED is not set
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
@ -161,7 +162,6 @@ CONFIG_PPC_MULTIPLATFORM=y
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
# CONFIG_PPC_CELLEB is not set
|
||||
CONFIG_PPC_PS3=y
|
||||
|
||||
#
|
||||
@ -181,6 +181,7 @@ CONFIG_PS3_LPM=m
|
||||
CONFIG_PPC_CELL=y
|
||||
# CONFIG_PPC_CELL_NATIVE is not set
|
||||
# CONFIG_PPC_IBM_CELL_BLADE is not set
|
||||
# CONFIG_PPC_CELLEB is not set
|
||||
|
||||
#
|
||||
# Cell Broadband Engine options
|
||||
@ -205,9 +206,9 @@ CONFIG_SPU_BASE=y
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_TICK_ONESHOT is not set
|
||||
CONFIG_TICK_ONESHOT=y
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
@ -221,7 +222,6 @@ CONFIG_PREEMPT_NONE=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_COMPAT_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
# CONFIG_IOMMU_VMERGE is not set
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
||||
@ -255,6 +255,7 @@ CONFIG_BOUNCE=y
|
||||
CONFIG_ARCH_MEMORY_PROBE=y
|
||||
# CONFIG_PPC_HAS_HASH_64K is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
@ -272,7 +273,9 @@ CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_PCI_SYSCALL is not set
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
CONFIG_PAGE_OFFSET=0xc000000000000000
|
||||
CONFIG_KERNEL_START=0xc000000000000000
|
||||
CONFIG_PHYSICAL_START=0x00000000
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -292,7 +295,7 @@ CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
@ -301,6 +304,7 @@ CONFIG_IP_PNP_DHCP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_IP_MROUTE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
@ -332,8 +336,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET6_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
|
||||
CONFIG_IPV6_SIT=y
|
||||
CONFIG_IPV6_NDISC_NODETYPE=y
|
||||
# CONFIG_IPV6_TUNNEL is not set
|
||||
# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
||||
# CONFIG_IPV6_MROUTE is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
@ -392,8 +398,6 @@ CONFIG_IEEE80211=m
|
||||
CONFIG_IEEE80211_CRYPT_WEP=m
|
||||
CONFIG_IEEE80211_CRYPT_CCMP=m
|
||||
CONFIG_IEEE80211_CRYPT_TKIP=m
|
||||
CONFIG_IEEE80211_SOFTMAC=m
|
||||
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
@ -507,6 +511,7 @@ CONFIG_WLAN_80211=y
|
||||
# CONFIG_LIBERTAS is not set
|
||||
# CONFIG_USB_ZD1201 is not set
|
||||
# CONFIG_USB_NET_RNDIS_WLAN is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
# CONFIG_HOSTAP is not set
|
||||
|
||||
#
|
||||
@ -578,6 +583,7 @@ CONFIG_INPUT_JOYSTICK=y
|
||||
# CONFIG_JOYSTICK_SPACEBALL is not set
|
||||
# CONFIG_JOYSTICK_STINGER is not set
|
||||
# CONFIG_JOYSTICK_TWIDJOY is not set
|
||||
# CONFIG_JOYSTICK_ZHENHUA is not set
|
||||
# CONFIG_JOYSTICK_JOYDUMP is not set
|
||||
# CONFIG_JOYSTICK_XPAD is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
@ -641,6 +647,7 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -760,10 +767,6 @@ CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
|
||||
#
|
||||
# CONFIG_SND_SOC is not set
|
||||
|
||||
#
|
||||
# SoC Audio support for SuperH
|
||||
#
|
||||
|
||||
#
|
||||
# ALSA SoC audio for Freescale SOCs
|
||||
#
|
||||
@ -849,6 +852,7 @@ CONFIG_USB_STORAGE=m
|
||||
# CONFIG_USB_STORAGE_ALAUDA is not set
|
||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
||||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
|
||||
#
|
||||
@ -893,10 +897,6 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_EDAC is not set
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
# CONFIG_DMADEVICES is not set
|
||||
|
||||
#
|
||||
# Userspace I/O
|
||||
#
|
||||
# CONFIG_UIO is not set
|
||||
|
||||
#
|
||||
@ -986,7 +986,6 @@ CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
CONFIG_NFS_V4=y
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
@ -1059,9 +1058,10 @@ CONFIG_NLS_ISO8859_1=y
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
CONFIG_CRC_ITU_T=m
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC7 is not set
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
@ -1071,6 +1071,7 @@ CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAVE_LMB=y
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -1078,6 +1079,7 @@ CONFIG_HAS_DMA=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_FRAME_WARN=2048
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
@ -1093,12 +1095,16 @@ CONFIG_SCHED_DEBUG=y
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_DEBUG_LOCK_ALLOC is not set
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_LIST=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
@ -1121,51 +1127,81 @@ CONFIG_IRQSTACKS=y
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
# Crypto core or helper
|
||||
#
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=m
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_SEQIV=m
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_GF128MUL=m
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
# Authenticated Encryption with Associated Data
|
||||
#
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_SEQIV=m
|
||||
|
||||
#
|
||||
# Block modes
|
||||
#
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_CTR=m
|
||||
# CONFIG_CRYPTO_CTS is not set
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
|
||||
#
|
||||
# Hash modes
|
||||
#
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
|
||||
#
|
||||
# Digest
|
||||
#
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
CONFIG_CRYPTO_GF128MUL=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
CONFIG_CRYPTO_CTR=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
|
||||
#
|
||||
# Ciphers
|
||||
#
|
||||
CONFIG_CRYPTO_AES=m
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
CONFIG_CRYPTO_SALSA20=m
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
|
||||
#
|
||||
# Compression
|
||||
#
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_PPC_CLOCK is not set
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
|
@ -386,6 +386,8 @@ static void __init smp_create_idle(unsigned int cpu)
|
||||
panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p));
|
||||
#ifdef CONFIG_PPC64
|
||||
paca[cpu].__current = p;
|
||||
paca[cpu].kstack = (unsigned long) task_thread_info(p)
|
||||
+ THREAD_SIZE - STACK_FRAME_OVERHEAD;
|
||||
#endif
|
||||
current_set[cpu] = task_thread_info(p);
|
||||
task_thread_info(p)->cpu = cpu;
|
||||
|
@ -30,7 +30,7 @@
|
||||
#ifdef DEBUG
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
#define DBG pr_debug
|
||||
#endif
|
||||
|
||||
extern void slb_allocate_realmode(unsigned long ea);
|
||||
@ -44,13 +44,13 @@ static void slb_allocate(unsigned long ea)
|
||||
slb_allocate_realmode(ea);
|
||||
}
|
||||
|
||||
#define slb_esid_mask(ssize) \
|
||||
(((ssize) == MMU_SEGSIZE_256M)? ESID_MASK: ESID_MASK_1T)
|
||||
|
||||
static inline unsigned long mk_esid_data(unsigned long ea, int ssize,
|
||||
unsigned long slot)
|
||||
{
|
||||
unsigned long mask;
|
||||
|
||||
mask = (ssize == MMU_SEGSIZE_256M)? ESID_MASK: ESID_MASK_1T;
|
||||
return (ea & mask) | SLB_ESID_V | slot;
|
||||
return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
|
||||
}
|
||||
|
||||
#define slb_vsid_shift(ssize) \
|
||||
@ -279,8 +279,8 @@ void slb_initialize(void)
|
||||
patch_slb_encoding(slb_compare_rr_to_size,
|
||||
mmu_slb_size);
|
||||
|
||||
DBG("SLB: linear LLP = %04x\n", linear_llp);
|
||||
DBG("SLB: io LLP = %04x\n", io_llp);
|
||||
DBG("SLB: linear LLP = %04lx\n", linear_llp);
|
||||
DBG("SLB: io LLP = %04lx\n", io_llp);
|
||||
}
|
||||
|
||||
get_paca()->stab_rr = SLB_NUM_BOLTED;
|
||||
@ -301,11 +301,16 @@ void slb_initialize(void)
|
||||
|
||||
create_shadowed_slbe(VMALLOC_START, mmu_kernel_ssize, vflags, 1);
|
||||
|
||||
/* For the boot cpu, we're running on the stack in init_thread_union,
|
||||
* which is in the first segment of the linear mapping, and also
|
||||
* get_paca()->kstack hasn't been initialized yet.
|
||||
* For secondary cpus, we need to bolt the kernel stack entry now.
|
||||
*/
|
||||
slb_shadow_clear(2);
|
||||
if (raw_smp_processor_id() != boot_cpuid &&
|
||||
(get_paca()->kstack & slb_esid_mask(mmu_kernel_ssize)) > PAGE_OFFSET)
|
||||
create_shadowed_slbe(get_paca()->kstack,
|
||||
mmu_kernel_ssize, lflags, 2);
|
||||
|
||||
/* We don't bolt the stack for the time being - we're in boot,
|
||||
* so the stack is in the bolted segment. By the time it goes
|
||||
* elsewhere, we'll call _switch() which will bolt in the new
|
||||
* one. */
|
||||
asm volatile("isync":::"memory");
|
||||
}
|
||||
|
@ -167,8 +167,8 @@ static struct irq_chip ps3_irq_chip = {
|
||||
* ps3_private data.
|
||||
*/
|
||||
|
||||
int ps3_virq_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
|
||||
unsigned int *virq)
|
||||
static int ps3_virq_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
|
||||
unsigned int *virq)
|
||||
{
|
||||
int result;
|
||||
struct ps3_private *pd;
|
||||
@ -217,7 +217,7 @@ fail_create:
|
||||
* Clears chip data and calls irq_dispose_mapping() for the virq.
|
||||
*/
|
||||
|
||||
int ps3_virq_destroy(unsigned int virq)
|
||||
static int ps3_virq_destroy(unsigned int virq)
|
||||
{
|
||||
const struct ps3_private *pd = get_irq_chip_data(virq);
|
||||
|
||||
|
@ -176,6 +176,7 @@ struct rio_priv {
|
||||
|
||||
/**
|
||||
* fsl_rio_doorbell_send - Send a MPC85xx doorbell message
|
||||
* @mport: RapidIO master port info
|
||||
* @index: ID of RapidIO interface
|
||||
* @destid: Destination ID of target device
|
||||
* @data: 16-bit info field of RapidIO doorbell message
|
||||
@ -211,6 +212,7 @@ static int fsl_rio_doorbell_send(struct rio_mport *mport,
|
||||
|
||||
/**
|
||||
* fsl_local_config_read - Generate a MPC85xx local config space read
|
||||
* @mport: RapidIO master port info
|
||||
* @index: ID of RapdiIO interface
|
||||
* @offset: Offset into configuration space
|
||||
* @len: Length (in bytes) of the maintenance transaction
|
||||
@ -232,6 +234,7 @@ static int fsl_local_config_read(struct rio_mport *mport,
|
||||
|
||||
/**
|
||||
* fsl_local_config_write - Generate a MPC85xx local config space write
|
||||
* @mport: RapidIO master port info
|
||||
* @index: ID of RapdiIO interface
|
||||
* @offset: Offset into configuration space
|
||||
* @len: Length (in bytes) of the maintenance transaction
|
||||
@ -254,6 +257,7 @@ static int fsl_local_config_write(struct rio_mport *mport,
|
||||
|
||||
/**
|
||||
* fsl_rio_config_read - Generate a MPC85xx read maintenance transaction
|
||||
* @mport: RapidIO master port info
|
||||
* @index: ID of RapdiIO interface
|
||||
* @destid: Destination ID of transaction
|
||||
* @hopcount: Number of hops to target device
|
||||
@ -295,6 +299,7 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid,
|
||||
|
||||
/**
|
||||
* fsl_rio_config_write - Generate a MPC85xx write maintenance transaction
|
||||
* @mport: RapidIO master port info
|
||||
* @index: ID of RapdiIO interface
|
||||
* @destid: Destination ID of transaction
|
||||
* @hopcount: Number of hops to target device
|
||||
@ -985,8 +990,8 @@ static inline void fsl_rio_info(struct device *dev, u32 ccsr)
|
||||
}
|
||||
|
||||
/**
|
||||
* fsl_rio_setup - Setup MPC85xx RapidIO interface
|
||||
* @fsl_rio_setup - Setup Freescale PowerPC RapidIO interface
|
||||
* fsl_rio_setup - Setup Freescale PowerPC RapidIO interface
|
||||
* @dev: of_device pointer
|
||||
*
|
||||
* Initializes MPC85xx RapidIO hardware interface, configures
|
||||
* master port with system-specific info, and registers the
|
||||
|
@ -389,8 +389,8 @@ static int __init gfar_of_init(void)
|
||||
}
|
||||
|
||||
gfar_data.phy_id = *id;
|
||||
snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "%x",
|
||||
res.start);
|
||||
snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "%llx",
|
||||
(unsigned long long)res.start);
|
||||
|
||||
of_node_put(phy);
|
||||
of_node_put(mdio);
|
||||
|
@ -107,7 +107,7 @@ xilinx_intc_init(struct device_node *np)
|
||||
}
|
||||
regs = ioremap(res.start, 32);
|
||||
|
||||
printk(KERN_INFO "Xilinx intc at 0x%08X mapped to 0x%p\n",
|
||||
printk(KERN_INFO "Xilinx intc at 0x%08LX mapped to 0x%p\n",
|
||||
res.start, regs);
|
||||
|
||||
/* Setup interrupt controller */
|
||||
|
@ -623,8 +623,8 @@ static int __devinit hwicap_setup(struct device *dev, int id,
|
||||
|
||||
if (!request_mem_region(drvdata->mem_start,
|
||||
drvdata->mem_size, DRIVER_NAME)) {
|
||||
dev_err(dev, "Couldn't lock memory region at %p\n",
|
||||
(void *)regs_res->start);
|
||||
dev_err(dev, "Couldn't lock memory region at %Lx\n",
|
||||
regs_res->start);
|
||||
retval = -EBUSY;
|
||||
goto failed1;
|
||||
}
|
||||
@ -643,7 +643,7 @@ static int __devinit hwicap_setup(struct device *dev, int id,
|
||||
mutex_init(&drvdata->sem);
|
||||
drvdata->is_open = 0;
|
||||
|
||||
dev_info(dev, "ioremap %lx to %p with size %x\n",
|
||||
dev_info(dev, "ioremap %lx to %p with size %Lx\n",
|
||||
(unsigned long int)drvdata->mem_start,
|
||||
drvdata->base_address, drvdata->mem_size);
|
||||
|
||||
|
@ -43,6 +43,29 @@
|
||||
|
||||
#define DRIVER_NAME "mpc52xx-fec"
|
||||
|
||||
#define FEC5200_PHYADDR_NONE (-1)
|
||||
#define FEC5200_PHYADDR_7WIRE (-2)
|
||||
|
||||
/* Private driver data structure */
|
||||
struct mpc52xx_fec_priv {
|
||||
int duplex;
|
||||
int speed;
|
||||
int r_irq;
|
||||
int t_irq;
|
||||
struct mpc52xx_fec __iomem *fec;
|
||||
struct bcom_task *rx_dmatsk;
|
||||
struct bcom_task *tx_dmatsk;
|
||||
spinlock_t lock;
|
||||
int msg_enable;
|
||||
|
||||
/* MDIO link details */
|
||||
int phy_addr;
|
||||
unsigned int phy_speed;
|
||||
struct phy_device *phydev;
|
||||
enum phy_state link;
|
||||
};
|
||||
|
||||
|
||||
static irqreturn_t mpc52xx_fec_interrupt(int, void *);
|
||||
static irqreturn_t mpc52xx_fec_rx_interrupt(int, void *);
|
||||
static irqreturn_t mpc52xx_fec_tx_interrupt(int, void *);
|
||||
@ -223,7 +246,7 @@ static int mpc52xx_fec_phy_start(struct net_device *dev)
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
int err;
|
||||
|
||||
if (!priv->has_phy)
|
||||
if (priv->phy_addr < 0)
|
||||
return 0;
|
||||
|
||||
err = mpc52xx_fec_init_phy(dev);
|
||||
@ -243,7 +266,7 @@ static void mpc52xx_fec_phy_stop(struct net_device *dev)
|
||||
{
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
|
||||
if (!priv->has_phy)
|
||||
if (!priv->phydev)
|
||||
return;
|
||||
|
||||
phy_disconnect(priv->phydev);
|
||||
@ -255,7 +278,7 @@ static void mpc52xx_fec_phy_stop(struct net_device *dev)
|
||||
static int mpc52xx_fec_phy_mii_ioctl(struct mpc52xx_fec_priv *priv,
|
||||
struct mii_ioctl_data *mii_data, int cmd)
|
||||
{
|
||||
if (!priv->has_phy)
|
||||
if (!priv->phydev)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return phy_mii_ioctl(priv->phydev, mii_data, cmd);
|
||||
@ -265,7 +288,7 @@ static void mpc52xx_fec_phy_hw_init(struct mpc52xx_fec_priv *priv)
|
||||
{
|
||||
struct mpc52xx_fec __iomem *fec = priv->fec;
|
||||
|
||||
if (!priv->has_phy)
|
||||
if (priv->phydev)
|
||||
return;
|
||||
|
||||
out_be32(&fec->mii_speed, priv->phy_speed);
|
||||
@ -704,7 +727,7 @@ static void mpc52xx_fec_start(struct net_device *dev)
|
||||
rcntrl = FEC_RX_BUFFER_SIZE << 16; /* max frame length */
|
||||
rcntrl |= FEC_RCNTRL_FCE;
|
||||
|
||||
if (priv->has_phy)
|
||||
if (priv->phy_addr != FEC5200_PHYADDR_7WIRE)
|
||||
rcntrl |= FEC_RCNTRL_MII_MODE;
|
||||
|
||||
if (priv->duplex == DUPLEX_FULL)
|
||||
@ -864,7 +887,10 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
|
||||
struct net_device *ndev;
|
||||
struct mpc52xx_fec_priv *priv = NULL;
|
||||
struct resource mem;
|
||||
const phandle *ph;
|
||||
struct device_node *phy_node;
|
||||
const phandle *phy_handle;
|
||||
const u32 *prop;
|
||||
int prop_size;
|
||||
|
||||
phys_addr_t rx_fifo;
|
||||
phys_addr_t tx_fifo;
|
||||
@ -948,26 +974,37 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
|
||||
mpc52xx_fec_get_paddr(ndev, ndev->dev_addr);
|
||||
|
||||
priv->msg_enable = netif_msg_init(debug, MPC52xx_MESSAGES_DEFAULT);
|
||||
priv->duplex = DUPLEX_FULL;
|
||||
|
||||
/* is the phy present in device tree? */
|
||||
ph = of_get_property(op->node, "phy-handle", NULL);
|
||||
if (ph) {
|
||||
const unsigned int *prop;
|
||||
struct device_node *phy_dn;
|
||||
priv->has_phy = 1;
|
||||
/*
|
||||
* Link mode configuration
|
||||
*/
|
||||
|
||||
phy_dn = of_find_node_by_phandle(*ph);
|
||||
prop = of_get_property(phy_dn, "reg", NULL);
|
||||
priv->phy_addr = *prop;
|
||||
/* Start with safe defaults for link connection */
|
||||
priv->phy_addr = FEC5200_PHYADDR_NONE;
|
||||
priv->speed = 100;
|
||||
priv->duplex = DUPLEX_HALF;
|
||||
priv->phy_speed = ((mpc52xx_find_ipb_freq(op->node) >> 20) / 5) << 1;
|
||||
|
||||
of_node_put(phy_dn);
|
||||
/* the 7-wire property means don't use MII mode */
|
||||
if (of_find_property(op->node, "fsl,7-wire-mode", NULL))
|
||||
priv->phy_addr = FEC5200_PHYADDR_7WIRE;
|
||||
|
||||
/* Phy speed */
|
||||
priv->phy_speed = ((mpc52xx_find_ipb_freq(op->node) >> 20) / 5) << 1;
|
||||
} else {
|
||||
dev_info(&ndev->dev, "can't find \"phy-handle\" in device"
|
||||
" tree, using 7-wire mode\n");
|
||||
/* The current speed preconfigures the speed of the MII link */
|
||||
prop = of_get_property(op->node, "current-speed", &prop_size);
|
||||
if (prop && (prop_size >= sizeof(u32) * 2)) {
|
||||
priv->speed = prop[0];
|
||||
priv->duplex = prop[1] ? DUPLEX_FULL : DUPLEX_HALF;
|
||||
}
|
||||
|
||||
/* If there is a phy handle, setup link to that phy */
|
||||
phy_handle = of_get_property(op->node, "phy-handle", &prop_size);
|
||||
if (phy_handle && (prop_size >= sizeof(phandle))) {
|
||||
phy_node = of_find_node_by_phandle(*phy_handle);
|
||||
prop = of_get_property(phy_node, "reg", &prop_size);
|
||||
if (prop && (prop_size >= sizeof(u32)))
|
||||
if ((*prop >= 0) && (*prop < PHY_MAX_ADDR))
|
||||
priv->phy_addr = *prop;
|
||||
of_node_put(phy_node);
|
||||
}
|
||||
|
||||
/* Hardware init */
|
||||
@ -982,6 +1019,20 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
|
||||
if (rv < 0)
|
||||
goto probe_error;
|
||||
|
||||
/* Now report the link setup */
|
||||
switch (priv->phy_addr) {
|
||||
case FEC5200_PHYADDR_NONE:
|
||||
dev_info(&ndev->dev, "Fixed speed MII link: %i%cD\n",
|
||||
priv->speed, priv->duplex ? 'F' : 'H');
|
||||
break;
|
||||
case FEC5200_PHYADDR_7WIRE:
|
||||
dev_info(&ndev->dev, "using 7-wire PHY mode\n");
|
||||
break;
|
||||
default:
|
||||
dev_info(&ndev->dev, "Using PHY at MDIO address %i\n",
|
||||
priv->phy_addr);
|
||||
}
|
||||
|
||||
/* We're done ! */
|
||||
dev_set_drvdata(&op->dev, ndev);
|
||||
|
||||
|
@ -26,25 +26,6 @@
|
||||
|
||||
#define FEC_WATCHDOG_TIMEOUT ((400*HZ)/1000)
|
||||
|
||||
struct mpc52xx_fec_priv {
|
||||
int duplex;
|
||||
int r_irq;
|
||||
int t_irq;
|
||||
struct mpc52xx_fec __iomem *fec;
|
||||
struct bcom_task *rx_dmatsk;
|
||||
struct bcom_task *tx_dmatsk;
|
||||
spinlock_t lock;
|
||||
int msg_enable;
|
||||
|
||||
int has_phy;
|
||||
unsigned int phy_speed;
|
||||
unsigned int phy_addr;
|
||||
struct phy_device *phydev;
|
||||
enum phy_state link;
|
||||
int speed;
|
||||
};
|
||||
|
||||
|
||||
/* ======================================================================== */
|
||||
/* Hardware register sets & bits */
|
||||
/* ======================================================================== */
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/ps3.h>
|
||||
#include <asm/lv1call.h>
|
||||
#include <asm/cell-pmu.h>
|
||||
|
@ -184,10 +184,7 @@ enum ps3_sys_manager_next_op {
|
||||
|
||||
/**
|
||||
* enum ps3_sys_manager_wake_source - Next-op wakeup source (bit position mask).
|
||||
* @PS3_SM_WAKE_DEFAULT: Disk insert, power button, eject button, IR
|
||||
* controller, and bluetooth controller.
|
||||
* @PS3_SM_WAKE_RTC:
|
||||
* @PS3_SM_WAKE_RTC_ERROR:
|
||||
* @PS3_SM_WAKE_DEFAULT: Disk insert, power button, eject button.
|
||||
* @PS3_SM_WAKE_W_O_L: Ether or wireless LAN.
|
||||
* @PS3_SM_WAKE_P_O_R: Power on reset.
|
||||
*
|
||||
@ -200,8 +197,6 @@ enum ps3_sys_manager_next_op {
|
||||
enum ps3_sys_manager_wake_source {
|
||||
/* version 3 */
|
||||
PS3_SM_WAKE_DEFAULT = 0,
|
||||
PS3_SM_WAKE_RTC = 0x00000040,
|
||||
PS3_SM_WAKE_RTC_ERROR = 0x00000080,
|
||||
PS3_SM_WAKE_W_O_L = 0x00000400,
|
||||
PS3_SM_WAKE_P_O_R = 0x80000000,
|
||||
};
|
||||
|
@ -783,7 +783,9 @@ mpc52xx_uart_int_rx_chars(struct uart_port *port)
|
||||
}
|
||||
}
|
||||
|
||||
spin_unlock(&port->lock);
|
||||
tty_flip_buffer_push(tty);
|
||||
spin_lock(&port->lock);
|
||||
|
||||
return psc_ops->raw_rx_rdy(port);
|
||||
}
|
||||
|
@ -178,9 +178,6 @@ enum ps3_cpu_binding {
|
||||
PS3_BINDING_CPU_1 = 1,
|
||||
};
|
||||
|
||||
int ps3_virq_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
|
||||
unsigned int *virq);
|
||||
int ps3_virq_destroy(unsigned int virq);
|
||||
int ps3_irq_plug_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
|
||||
unsigned int *virq);
|
||||
int ps3_irq_plug_destroy(unsigned int virq);
|
||||
|
@ -161,6 +161,8 @@ enum rio_phy_type {
|
||||
* @ops: configuration space functions
|
||||
* @id: Port ID, unique among all ports
|
||||
* @index: Port index, unique among all port interfaces of the same type
|
||||
* @sys_size: RapidIO common transport system size
|
||||
* @phy_type: RapidIO phy type
|
||||
* @name: Port name string
|
||||
* @priv: Master port private data
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user