forked from Minki/linux
Merge branch 'upstream-fixes'
This commit is contained in:
commit
67cb6e842e
@ -14,10 +14,6 @@
|
||||
|
||||
HAS_BIARCH := $(call cc-option-yn, -m32)
|
||||
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
OLDARCH := ppc64
|
||||
SZ := 64
|
||||
|
||||
# Set default 32 bits cross compilers for vdso and boot wrapper
|
||||
CROSS32_COMPILE ?=
|
||||
|
||||
@ -37,6 +33,10 @@ endif
|
||||
|
||||
export CROSS32CC CROSS32AS CROSS32LD CROSS32OBJCOPY
|
||||
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
OLDARCH := ppc64
|
||||
SZ := 64
|
||||
|
||||
new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi)
|
||||
|
||||
ifeq ($(new_nm),y)
|
||||
@ -139,7 +139,7 @@ drivers-$(CONFIG_CPM2) += arch/ppc/8260_io/
|
||||
|
||||
drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/
|
||||
|
||||
defaultimage-$(CONFIG_PPC32) := uImage zImage
|
||||
defaultimage-$(CONFIG_PPC32) := zImage
|
||||
defaultimage-$(CONFIG_PPC_ISERIES) := vmlinux
|
||||
defaultimage-$(CONFIG_PPC_PSERIES) := zImage
|
||||
KBUILD_IMAGE := $(defaultimage-y)
|
||||
@ -154,23 +154,13 @@ BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm
|
||||
|
||||
.PHONY: $(BOOT_TARGETS)
|
||||
|
||||
boot := arch/$(OLDARCH)/boot
|
||||
boot := arch/$(ARCH)/boot
|
||||
|
||||
# urk
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
$(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
|
||||
else
|
||||
$(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) ARCH=ppc $(build)=$(boot) $@
|
||||
endif
|
||||
|
||||
uImage: vmlinux
|
||||
$(Q)$(MAKE) ARCH=$(OLDARCH) $(build)=$(boot)/images $(boot)/images/$@
|
||||
|
||||
define archhelp
|
||||
@echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/images/zImage.*)'
|
||||
@echo ' uImage - Create a bootable image for U-Boot / PPCBoot'
|
||||
@echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)'
|
||||
@echo ' install - Install kernel using'
|
||||
@echo ' (your) ~/bin/installkernel or'
|
||||
@echo ' (distribution) /sbin/installkernel or'
|
||||
@ -180,7 +170,6 @@ endef
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
# Temporary hack until we have migrated to asm-powerpc
|
||||
$(Q)rm -rf arch/$(ARCH)/include
|
||||
|
||||
archprepare: checkbin
|
||||
|
@ -22,7 +22,8 @@
|
||||
|
||||
|
||||
HOSTCC := gcc
|
||||
BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem $(shell $(CROSS32CC) -print-file-name=include) -fPIC
|
||||
BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \
|
||||
$(shell $(CROSS32CC) -print-file-name=include) -fPIC
|
||||
BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
|
||||
BOOTLFLAGS := -T $(srctree)/$(src)/zImage.lds
|
||||
OBJCOPYFLAGS := contents,alloc,load,readonly,data
|
||||
@ -98,7 +99,7 @@ quiet_cmd_ramdisk = RAMDISK $@
|
||||
cmd_ramdisk = $(obj)/addRamDisk $(obj)/ramdisk.image.gz $< $@
|
||||
|
||||
quiet_cmd_stripvm = STRIP $@
|
||||
cmd_stripvm = $(STRIP) -s $< -o $@
|
||||
cmd_stripvm = $(STRIP) -s -R .comment $< -o $@
|
||||
|
||||
vmlinux.strip: vmlinux
|
||||
$(call if_changed,stripvm)
|
@ -42,6 +42,8 @@ static struct addr_range vmlinux;
|
||||
static struct addr_range vmlinuz;
|
||||
static struct addr_range initrd;
|
||||
|
||||
static unsigned long elfoffset;
|
||||
|
||||
static char scratch[46912]; /* scratch space for gunzip, from zlib_inflate_workspacesize() */
|
||||
static char elfheader[256];
|
||||
|
||||
@ -131,13 +133,70 @@ static unsigned long try_claim(unsigned long size)
|
||||
return addr;
|
||||
}
|
||||
|
||||
static int is_elf64(void *hdr)
|
||||
{
|
||||
Elf64_Ehdr *elf64 = hdr;
|
||||
Elf64_Phdr *elf64ph;
|
||||
unsigned int i;
|
||||
|
||||
if (!(elf64->e_ident[EI_MAG0] == ELFMAG0 &&
|
||||
elf64->e_ident[EI_MAG1] == ELFMAG1 &&
|
||||
elf64->e_ident[EI_MAG2] == ELFMAG2 &&
|
||||
elf64->e_ident[EI_MAG3] == ELFMAG3 &&
|
||||
elf64->e_ident[EI_CLASS] == ELFCLASS64 &&
|
||||
elf64->e_ident[EI_DATA] == ELFDATA2MSB &&
|
||||
elf64->e_type == ET_EXEC &&
|
||||
elf64->e_machine == EM_PPC64))
|
||||
return 0;
|
||||
|
||||
elf64ph = (Elf64_Phdr *)((unsigned long)elf64 +
|
||||
(unsigned long)elf64->e_phoff);
|
||||
for (i = 0; i < (unsigned int)elf64->e_phnum; i++, elf64ph++)
|
||||
if (elf64ph->p_type == PT_LOAD && elf64ph->p_offset != 0)
|
||||
break;
|
||||
if (i >= (unsigned int)elf64->e_phnum)
|
||||
return 0;
|
||||
|
||||
elfoffset = (unsigned long)elf64ph->p_offset;
|
||||
vmlinux.size = (unsigned long)elf64ph->p_filesz + elfoffset;
|
||||
vmlinux.memsize = (unsigned long)elf64ph->p_memsz + elfoffset;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int is_elf32(void *hdr)
|
||||
{
|
||||
Elf32_Ehdr *elf32 = hdr;
|
||||
Elf32_Phdr *elf32ph;
|
||||
unsigned int i;
|
||||
|
||||
if (!(elf32->e_ident[EI_MAG0] == ELFMAG0 &&
|
||||
elf32->e_ident[EI_MAG1] == ELFMAG1 &&
|
||||
elf32->e_ident[EI_MAG2] == ELFMAG2 &&
|
||||
elf32->e_ident[EI_MAG3] == ELFMAG3 &&
|
||||
elf32->e_ident[EI_CLASS] == ELFCLASS32 &&
|
||||
elf32->e_ident[EI_DATA] == ELFDATA2MSB &&
|
||||
elf32->e_type == ET_EXEC &&
|
||||
elf32->e_machine == EM_PPC))
|
||||
return 0;
|
||||
|
||||
elf32 = (Elf32_Ehdr *)elfheader;
|
||||
elf32ph = (Elf32_Phdr *) ((unsigned long)elf32 + elf32->e_phoff);
|
||||
for (i = 0; i < elf32->e_phnum; i++, elf32ph++)
|
||||
if (elf32ph->p_type == PT_LOAD && elf32ph->p_offset != 0)
|
||||
break;
|
||||
if (i >= elf32->e_phnum)
|
||||
return 0;
|
||||
|
||||
elfoffset = elf32ph->p_offset;
|
||||
vmlinux.size = elf32ph->p_filesz + elf32ph->p_offset;
|
||||
vmlinux.memsize = elf32ph->p_memsz + elf32ph->p_offset;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
|
||||
{
|
||||
unsigned long i;
|
||||
int len;
|
||||
kernel_entry_t kernel_entry;
|
||||
Elf64_Ehdr *elf64;
|
||||
Elf64_Phdr *elf64ph;
|
||||
|
||||
memset(__bss_start, 0, _end - __bss_start);
|
||||
|
||||
@ -153,6 +212,22 @@ void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
|
||||
|
||||
printf("\n\rzImage starting: loaded at 0x%p (sp: 0x%p)\n\r", _start, sp);
|
||||
|
||||
vmlinuz.addr = (unsigned long)_vmlinux_start;
|
||||
vmlinuz.size = (unsigned long)(_vmlinux_end - _vmlinux_start);
|
||||
|
||||
/* gunzip the ELF header of the kernel */
|
||||
if (*(unsigned short *)vmlinuz.addr == 0x1f8b) {
|
||||
len = vmlinuz.size;
|
||||
gunzip(elfheader, sizeof(elfheader),
|
||||
(unsigned char *)vmlinuz.addr, &len);
|
||||
} else
|
||||
memcpy(elfheader, (const void *)vmlinuz.addr, sizeof(elfheader));
|
||||
|
||||
if (!is_elf64(elfheader) && !is_elf32(elfheader)) {
|
||||
printf("Error: not a valid PPC32 or PPC64 ELF file!\n\r");
|
||||
exit();
|
||||
}
|
||||
|
||||
/*
|
||||
* The first available claim_base must be above the end of the
|
||||
* the loaded kernel wrapper file (_start to _end includes the
|
||||
@ -172,46 +247,11 @@ void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
|
||||
claim_base = PROG_START;
|
||||
#endif
|
||||
|
||||
vmlinuz.addr = (unsigned long)_vmlinux_start;
|
||||
vmlinuz.size = (unsigned long)(_vmlinux_end - _vmlinux_start);
|
||||
|
||||
/* gunzip the ELF header of the kernel */
|
||||
if (*(unsigned short *)vmlinuz.addr == 0x1f8b) {
|
||||
len = vmlinuz.size;
|
||||
gunzip(elfheader, sizeof(elfheader),
|
||||
(unsigned char *)vmlinuz.addr, &len);
|
||||
} else
|
||||
memcpy(elfheader, (const void *)vmlinuz.addr, sizeof(elfheader));
|
||||
|
||||
elf64 = (Elf64_Ehdr *)elfheader;
|
||||
if ( elf64->e_ident[EI_MAG0] != ELFMAG0 ||
|
||||
elf64->e_ident[EI_MAG1] != ELFMAG1 ||
|
||||
elf64->e_ident[EI_MAG2] != ELFMAG2 ||
|
||||
elf64->e_ident[EI_MAG3] != ELFMAG3 ||
|
||||
elf64->e_ident[EI_CLASS] != ELFCLASS64 ||
|
||||
elf64->e_ident[EI_DATA] != ELFDATA2MSB ||
|
||||
elf64->e_type != ET_EXEC ||
|
||||
elf64->e_machine != EM_PPC64 )
|
||||
{
|
||||
printf("Error: not a valid PPC64 ELF file!\n\r");
|
||||
exit();
|
||||
}
|
||||
|
||||
elf64ph = (Elf64_Phdr *)((unsigned long)elf64 +
|
||||
(unsigned long)elf64->e_phoff);
|
||||
for(i=0; i < (unsigned int)elf64->e_phnum ;i++,elf64ph++) {
|
||||
if (elf64ph->p_type == PT_LOAD && elf64ph->p_offset != 0)
|
||||
break;
|
||||
}
|
||||
vmlinux.size = (unsigned long)elf64ph->p_filesz +
|
||||
(unsigned long)elf64ph->p_offset;
|
||||
/* We need to claim the memsize plus the file offset since gzip
|
||||
* will expand the header (file offset), then the kernel, then
|
||||
* possible rubbish we don't care about. But the kernel bss must
|
||||
* be claimed (it will be zero'd by the kernel itself)
|
||||
*/
|
||||
vmlinux.memsize = (unsigned long)elf64ph->p_memsz +
|
||||
(unsigned long)elf64ph->p_offset;
|
||||
printf("Allocating 0x%lx bytes for kernel ...\n\r", vmlinux.memsize);
|
||||
vmlinux.addr = try_claim(vmlinux.memsize);
|
||||
if (vmlinux.addr == 0) {
|
||||
@ -254,9 +294,9 @@ void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
|
||||
/* Skip over the ELF header */
|
||||
#ifdef DEBUG
|
||||
printf("... skipping 0x%lx bytes of ELF header\n\r",
|
||||
(unsigned long)elf64ph->p_offset);
|
||||
elfoffset);
|
||||
#endif
|
||||
vmlinux.addr += (unsigned long)elf64ph->p_offset;
|
||||
vmlinux.addr += elfoffset;
|
||||
|
||||
flush_cache((void *)vmlinux.addr, vmlinux.size);
|
||||
|
||||
@ -272,7 +312,7 @@ void start(unsigned long a1, unsigned long a2, void *promptr, void *sp)
|
||||
(unsigned long)prom, NULL);
|
||||
#endif
|
||||
|
||||
kernel_entry( a1, a2, prom, NULL );
|
||||
kernel_entry(a1, a2, prom, NULL);
|
||||
|
||||
printf("Error: Linux kernel returned to zImage bootloader!\n\r");
|
||||
|
@ -1,18 +1,33 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:29:10 2005
|
||||
# Linux kernel version: 2.6.15-rc1
|
||||
# Tue Nov 15 14:36:20 2005
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_PPC_MERGE=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
# Processor support
|
||||
#
|
||||
# CONFIG_POWER4_ONLY is not set
|
||||
CONFIG_POWER3=y
|
||||
CONFIG_POWER4=y
|
||||
CONFIG_PPC_FPU=y
|
||||
CONFIG_ALTIVEC=y
|
||||
CONFIG_PPC_STD_MMU=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
@ -66,31 +81,69 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
# CONFIG_KMOD is not set
|
||||
CONFIG_STOP_MACHINE=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
CONFIG_PPC_MULTIPLATFORM=y
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
# CONFIG_APUS is not set
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
CONFIG_PPC_BPA=y
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_PPC_CELL=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_BPA_IIC=y
|
||||
CONFIG_ALTIVEC=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_U3_DART is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_POWER4_ONLY is not set
|
||||
CONFIG_PPC_RTAS=y
|
||||
# CONFIG_RTAS_ERROR_LOGGING is not set
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_RTAS_FLASH=y
|
||||
CONFIG_MMIO_NVRAM=y
|
||||
CONFIG_CELL_IIC=y
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
# CONFIG_GENERIC_TBSYNC is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_PREEMPT_BKL=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
# CONFIG_IOMMU_VMERGE is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -98,30 +151,21 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_PREEMPT_BKL=y
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_PPC_RTAS=y
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_RTAS_FLASH=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus Options
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_INDIRECT_PCI is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
@ -136,6 +180,7 @@ CONFIG_PCI_LEGACY_PROC=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_KERNEL_START=0xc000000000000000
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -183,6 +228,10 @@ CONFIG_INET6_TUNNEL=m
|
||||
CONFIG_IPV6_TUNNEL=m
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
|
||||
#
|
||||
# Core Netfilter Configuration
|
||||
#
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
@ -284,6 +333,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
CONFIG_NET_CLS_ROUTE=y
|
||||
|
||||
@ -345,14 +398,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
@ -442,6 +487,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# Macintosh device drivers
|
||||
#
|
||||
# CONFIG_WINDFARM is not set
|
||||
|
||||
#
|
||||
# Network device support
|
||||
@ -495,7 +541,6 @@ CONFIG_SKGE=m
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_SPIDER_NET is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
@ -625,7 +670,7 @@ CONFIG_WATCHDOG=y
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_WATCHDOG_RTAS=y
|
||||
# CONFIG_WATCHDOG_RTAS is not set
|
||||
|
||||
#
|
||||
# PCI-based Watchdog Cards
|
||||
@ -633,6 +678,8 @@ CONFIG_WATCHDOG_RTAS=y
|
||||
# CONFIG_PCIPCWATCHDOG is not set
|
||||
# CONFIG_WDTPCI is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -649,6 +696,7 @@ CONFIG_WATCHDOG_RTAS=y
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
@ -699,6 +747,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_RTC_X1205_I2C is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
@ -756,6 +805,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
@ -943,9 +996,24 @@ CONFIG_NLS_ISO8859_15=m
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_KPROBES is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -962,13 +1030,14 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_KPROBES is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
CONFIG_DEBUGGER=y
|
||||
# CONFIG_XMON is not set
|
||||
# CONFIG_PPCDBG is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
@ -1008,17 +1077,3 @@ CONFIG_CRYPTO_DEFLATE=m
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.14
|
||||
# Mon Nov 7 13:37:59 2005
|
||||
# Linux kernel version: 2.6.15-rc1
|
||||
# Tue Nov 15 14:39:20 2005
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -82,6 +82,23 @@ CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_STOP_MACHINE=y
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
@ -137,6 +154,7 @@ CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -144,7 +162,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
@ -215,6 +233,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
|
||||
#
|
||||
# Core Netfilter Configuration
|
||||
#
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
@ -382,19 +404,6 @@ CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
@ -656,7 +665,6 @@ CONFIG_SUNGEM=y
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_NET_PCI is not set
|
||||
# CONFIG_FEC_8XX is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
@ -710,6 +718,7 @@ CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
# CONFIG_PPP_MPPE is not set
|
||||
CONFIG_PPPOE=m
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NET_FC is not set
|
||||
@ -804,6 +813,8 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -917,7 +928,6 @@ CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
CONFIG_FB_MACMODES=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
@ -932,6 +942,7 @@ CONFIG_FB_OF=y
|
||||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
CONFIG_FB_NVIDIA=y
|
||||
CONFIG_FB_NVIDIA_I2C=y
|
||||
# CONFIG_FB_RIVA is not set
|
||||
@ -950,7 +961,6 @@ CONFIG_FB_RADEON_I2C=y
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_CYBLA is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
@ -959,6 +969,7 @@ CONFIG_FB_RADEON_I2C=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
@ -1474,10 +1485,11 @@ CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
# Instrumentation Support
|
||||
#
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -1497,7 +1509,6 @@ CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_KPROBES is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUGGER is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
|
@ -1,18 +1,33 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:30:56 2005
|
||||
# Linux kernel version: 2.6.15-rc1
|
||||
# Tue Nov 15 14:38:09 2005
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_PPC_MERGE=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
# Processor support
|
||||
#
|
||||
# CONFIG_POWER4_ONLY is not set
|
||||
CONFIG_POWER3=y
|
||||
CONFIG_POWER4=y
|
||||
CONFIG_PPC_FPU=y
|
||||
# CONFIG_ALTIVEC is not set
|
||||
CONFIG_PPC_STD_MMU=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=32
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
@ -68,22 +83,60 @@ CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_STOP_MACHINE=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
CONFIG_PPC_ISERIES=y
|
||||
# CONFIG_PPC_MULTIPLATFORM is not set
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_PPC_ISERIES=y
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
# CONFIG_APUS is not set
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
CONFIG_IBMVIO=y
|
||||
# CONFIG_POWER4_ONLY is not set
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
# CONFIG_GENERIC_TBSYNC is not set
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_PREEMPT_BKL is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=32
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_LPARCFG=y
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -91,26 +144,20 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_PREEMPT_BKL is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus Options
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_INDIRECT_PCI is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
@ -125,6 +172,7 @@ CONFIG_PCI_LEGACY_PROC=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_KERNEL_START=0xc000000000000000
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -166,6 +214,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
|
||||
#
|
||||
# Core Netfilter Configuration
|
||||
#
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
@ -265,6 +317,10 @@ CONFIG_LLC=y
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
CONFIG_NET_CLS_ROUTE=y
|
||||
|
||||
@ -326,14 +382,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
@ -377,6 +425,7 @@ CONFIG_SCSI_FC_ATTRS=y
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||
# CONFIG_SCSI_3W_9XXX is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
@ -454,6 +503,7 @@ CONFIG_DM_ZERO=m
|
||||
#
|
||||
# Macintosh device drivers
|
||||
#
|
||||
# CONFIG_WINDFARM is not set
|
||||
|
||||
#
|
||||
# Network device support
|
||||
@ -561,6 +611,7 @@ CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
# CONFIG_PPP_MPPE is not set
|
||||
CONFIG_PPPOE=m
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NET_FC is not set
|
||||
@ -643,6 +694,8 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -660,6 +713,7 @@ CONFIG_MAX_RAW_DEVS=256
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
@ -712,6 +766,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
@ -917,10 +975,25 @@ CONFIG_VIOTAPE=m
|
||||
CONFIG_VIOPATH=y
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
#
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -937,11 +1010,11 @@ CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
# CONFIG_DEBUGGER is not set
|
||||
# CONFIG_PPCDBG is not set
|
||||
CONFIG_IRQSTACKS=y
|
||||
|
||||
#
|
||||
@ -982,17 +1055,3 @@ CONFIG_CRYPTO_TEST=m
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,18 +1,32 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:31:24 2005
|
||||
# Linux kernel version: 2.6.15-rc1
|
||||
# Tue Nov 15 14:38:58 2005
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_PPC_MERGE=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
# Processor support
|
||||
#
|
||||
CONFIG_POWER4_ONLY=y
|
||||
CONFIG_POWER4=y
|
||||
CONFIG_PPC_FPU=y
|
||||
# CONFIG_ALTIVEC is not set
|
||||
CONFIG_PPC_STD_MMU=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
@ -67,32 +81,67 @@ CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_STOP_MACHINE=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# Platform support
|
||||
#
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
CONFIG_PPC_MULTIPLATFORM=y
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
# CONFIG_EMBEDDED6xx is not set
|
||||
# CONFIG_APUS is not set
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
# CONFIG_PPC_BPA is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_PPC_MAPLE=y
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC64=y
|
||||
# CONFIG_PPC_CELL is not set
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_MPIC=y
|
||||
# CONFIG_ALTIVEC is not set
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_U3_DART=y
|
||||
CONFIG_MPIC=y
|
||||
# CONFIG_PPC_RTAS is not set
|
||||
# CONFIG_MMIO_NVRAM is not set
|
||||
CONFIG_MPIC_BROKEN_U3=y
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
CONFIG_POWER4_ONLY=y
|
||||
# CONFIG_PPC_MPC106 is not set
|
||||
CONFIG_GENERIC_TBSYNC=y
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
# CONFIG_WANT_EARLY_SERIAL is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_PREEMPT_BKL is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -100,27 +149,21 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_PREEMPT_BKL is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
# CONFIG_PM is not set
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# Bus Options
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
# CONFIG_PPC_INDIRECT_PCI is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
@ -135,6 +178,7 @@ CONFIG_PCI_LEGACY_PROC=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_KERNEL_START=0xc000000000000000
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -193,6 +237,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
@ -254,14 +302,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
@ -351,6 +391,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# Macintosh device drivers
|
||||
#
|
||||
# CONFIG_WINDFARM is not set
|
||||
|
||||
#
|
||||
# Network device support
|
||||
@ -533,6 +574,8 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_GEN_RTC=y
|
||||
# CONFIG_GEN_RTC_X is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
@ -549,6 +592,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
@ -599,6 +643,7 @@ CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_RTC_X1205_I2C is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
@ -681,12 +726,15 @@ CONFIG_USB_UHCI_HCD=y
|
||||
#
|
||||
# USB Device Class drivers
|
||||
#
|
||||
# CONFIG_USB_BLUETOOTH_TTY is not set
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
# CONFIG_USB_STORAGE is not set
|
||||
|
||||
@ -776,6 +824,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
# CONFIG_USB_SERIAL_KLSI is not set
|
||||
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
|
||||
# CONFIG_USB_SERIAL_MCT_U232 is not set
|
||||
# CONFIG_USB_SERIAL_NOKIA_DKU2 is not set
|
||||
# CONFIG_USB_SERIAL_PL2303 is not set
|
||||
# CONFIG_USB_SERIAL_HP4X is not set
|
||||
# CONFIG_USB_SERIAL_SAFE is not set
|
||||
@ -985,9 +1034,19 @@ CONFIG_NLS_DEFAULT="utf-8"
|
||||
CONFIG_NLS_UTF8=y
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=y
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_KPROBES is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -1004,14 +1063,15 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_DEBUGGER=y
|
||||
CONFIG_XMON=y
|
||||
CONFIG_XMON_DEFAULT=y
|
||||
# CONFIG_PPCDBG is not set
|
||||
# CONFIG_IRQSTACKS is not set
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
|
||||
#
|
||||
# Security options
|
||||
@ -1051,12 +1111,3 @@ CONFIG_CRYPTO_DES=y
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=y
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.15-rc1
|
||||
# Mon Nov 14 15:27:00 2005
|
||||
# Tue Nov 15 14:36:55 2005
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -144,7 +144,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_IOMMU_VMERGE=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_IRQ_ALL_CPUS is not set
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_PPC_SPLPAR=y
|
||||
CONFIG_EEH=y
|
||||
CONFIG_SCANLOG=m
|
||||
|
@ -30,10 +30,10 @@
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/ppc-pci.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
@ -187,7 +187,7 @@ static DEFINE_SPINLOCK(hose_spinlock);
|
||||
/*
|
||||
* pci_controller(phb) initialized common variables.
|
||||
*/
|
||||
void __devinit pci_setup_pci_controller(struct pci_controller *hose)
|
||||
static void __devinit pci_setup_pci_controller(struct pci_controller *hose)
|
||||
{
|
||||
memset(hose, 0, sizeof(struct pci_controller));
|
||||
|
||||
@ -197,6 +197,65 @@ void __devinit pci_setup_pci_controller(struct pci_controller *hose)
|
||||
spin_unlock(&hose_spinlock);
|
||||
}
|
||||
|
||||
static void add_linux_pci_domain(struct device_node *dev,
|
||||
struct pci_controller *phb)
|
||||
{
|
||||
struct property *of_prop;
|
||||
unsigned int size;
|
||||
|
||||
of_prop = (struct property *)
|
||||
get_property(dev, "linux,pci-domain", &size);
|
||||
if (of_prop != NULL)
|
||||
return;
|
||||
WARN_ON(of_prop && size < sizeof(int));
|
||||
if (of_prop && size < sizeof(int))
|
||||
of_prop = NULL;
|
||||
size = sizeof(struct property) + sizeof(int);
|
||||
if (of_prop == NULL) {
|
||||
if (mem_init_done)
|
||||
of_prop = kmalloc(size, GFP_KERNEL);
|
||||
else
|
||||
of_prop = alloc_bootmem(size);
|
||||
}
|
||||
memset(of_prop, 0, sizeof(struct property));
|
||||
of_prop->name = "linux,pci-domain";
|
||||
of_prop->length = sizeof(int);
|
||||
of_prop->value = (unsigned char *)&of_prop[1];
|
||||
*((int *)of_prop->value) = phb->global_number;
|
||||
prom_add_property(dev, of_prop);
|
||||
}
|
||||
|
||||
struct pci_controller * pcibios_alloc_controller(struct device_node *dev)
|
||||
{
|
||||
struct pci_controller *phb;
|
||||
|
||||
if (mem_init_done)
|
||||
phb = kmalloc(sizeof(struct pci_controller), GFP_KERNEL);
|
||||
else
|
||||
phb = alloc_bootmem(sizeof (struct pci_controller));
|
||||
if (phb == NULL)
|
||||
return NULL;
|
||||
pci_setup_pci_controller(phb);
|
||||
phb->arch_data = dev;
|
||||
phb->is_dynamic = mem_init_done;
|
||||
if (dev)
|
||||
add_linux_pci_domain(dev, phb);
|
||||
return phb;
|
||||
}
|
||||
|
||||
void pcibios_free_controller(struct pci_controller *phb)
|
||||
{
|
||||
if (phb->arch_data) {
|
||||
struct device_node *np = phb->arch_data;
|
||||
int *domain = (int *)get_property(np,
|
||||
"linux,pci-domain", NULL);
|
||||
if (domain)
|
||||
*domain = -1;
|
||||
}
|
||||
if (phb->is_dynamic)
|
||||
kfree(phb);
|
||||
}
|
||||
|
||||
static void __init pcibios_claim_one_bus(struct pci_bus *b)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
@ -907,9 +966,10 @@ void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose,
|
||||
* (size depending on dev->n_addr_cells)
|
||||
* cells 4+5 or 5+6: the size of the range
|
||||
*/
|
||||
rlen = 0;
|
||||
hose->io_base_phys = 0;
|
||||
ranges = (unsigned int *) get_property(dev, "ranges", &rlen);
|
||||
if (ranges == NULL)
|
||||
return;
|
||||
hose->io_base_phys = 0;
|
||||
while ((rlen -= np * sizeof(unsigned int)) >= 0) {
|
||||
res = NULL;
|
||||
pci_space = ranges[0];
|
||||
@ -1107,6 +1167,8 @@ int remap_bus_range(struct pci_bus *bus)
|
||||
|
||||
if (get_bus_io_range(bus, &start_phys, &start_virt, &size))
|
||||
return 1;
|
||||
if (start_phys == 0)
|
||||
return 1;
|
||||
printk("mapping IO %lx -> %lx, size: %lx\n", start_phys, start_virt, size);
|
||||
if (__ioremap_explicit(start_phys, start_virt, size,
|
||||
_PAGE_NO_CACHE | _PAGE_GUARDED))
|
||||
|
@ -304,75 +304,18 @@ static int __devinit setup_phb(struct device_node *dev,
|
||||
struct pci_controller *phb,
|
||||
unsigned int addr_size_words)
|
||||
{
|
||||
pci_setup_pci_controller(phb);
|
||||
|
||||
if (is_python(dev))
|
||||
python_countermeasures(dev, addr_size_words);
|
||||
|
||||
if (phb_set_bus_ranges(dev, phb))
|
||||
return 1;
|
||||
|
||||
phb->arch_data = dev;
|
||||
phb->ops = &rtas_pci_ops;
|
||||
phb->buid = get_phb_buid(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __devinit add_linux_pci_domain(struct device_node *dev,
|
||||
struct pci_controller *phb,
|
||||
struct property *of_prop)
|
||||
{
|
||||
memset(of_prop, 0, sizeof(struct property));
|
||||
of_prop->name = "linux,pci-domain";
|
||||
of_prop->length = sizeof(phb->global_number);
|
||||
of_prop->value = (unsigned char *)&of_prop[1];
|
||||
memcpy(of_prop->value, &phb->global_number, sizeof(phb->global_number));
|
||||
prom_add_property(dev, of_prop);
|
||||
}
|
||||
|
||||
static struct pci_controller * __init alloc_phb(struct device_node *dev,
|
||||
unsigned int addr_size_words)
|
||||
{
|
||||
struct pci_controller *phb;
|
||||
struct property *of_prop;
|
||||
|
||||
phb = alloc_bootmem(sizeof(struct pci_controller));
|
||||
if (phb == NULL)
|
||||
return NULL;
|
||||
|
||||
of_prop = alloc_bootmem(sizeof(struct property) +
|
||||
sizeof(phb->global_number));
|
||||
if (!of_prop)
|
||||
return NULL;
|
||||
|
||||
if (setup_phb(dev, phb, addr_size_words))
|
||||
return NULL;
|
||||
|
||||
add_linux_pci_domain(dev, phb, of_prop);
|
||||
|
||||
return phb;
|
||||
}
|
||||
|
||||
static struct pci_controller * __devinit alloc_phb_dynamic(struct device_node *dev, unsigned int addr_size_words)
|
||||
{
|
||||
struct pci_controller *phb;
|
||||
|
||||
phb = (struct pci_controller *)kmalloc(sizeof(struct pci_controller),
|
||||
GFP_KERNEL);
|
||||
if (phb == NULL)
|
||||
return NULL;
|
||||
|
||||
if (setup_phb(dev, phb, addr_size_words))
|
||||
return NULL;
|
||||
|
||||
phb->is_dynamic = 1;
|
||||
|
||||
/* TODO: linux,pci-domain? */
|
||||
|
||||
return phb;
|
||||
}
|
||||
|
||||
unsigned long __init find_and_init_phbs(void)
|
||||
{
|
||||
struct device_node *node;
|
||||
@ -397,10 +340,10 @@ unsigned long __init find_and_init_phbs(void)
|
||||
if (node->type == NULL || strcmp(node->type, "pci") != 0)
|
||||
continue;
|
||||
|
||||
phb = alloc_phb(node, root_size_cells);
|
||||
phb = pcibios_alloc_controller(node);
|
||||
if (!phb)
|
||||
continue;
|
||||
|
||||
setup_phb(node, phb, root_size_cells);
|
||||
pci_process_bridge_OF_ranges(phb, node, 0);
|
||||
pci_setup_phb_io(phb, index == 0);
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
@ -446,10 +389,10 @@ struct pci_controller * __devinit init_phb_dynamic(struct device_node *dn)
|
||||
root_size_cells = prom_n_size_cells(root);
|
||||
|
||||
primary = list_empty(&hose_list);
|
||||
phb = alloc_phb_dynamic(dn, root_size_cells);
|
||||
phb = pcibios_alloc_controller(dn);
|
||||
if (!phb)
|
||||
return NULL;
|
||||
|
||||
setup_phb(dn, phb, root_size_cells);
|
||||
pci_process_bridge_OF_ranges(phb, dn, primary);
|
||||
|
||||
pci_setup_phb_io_dynamic(phb, primary);
|
||||
@ -505,8 +448,7 @@ int pcibios_remove_root_bus(struct pci_controller *phb)
|
||||
}
|
||||
|
||||
list_del(&phb->list_node);
|
||||
if (phb->is_dynamic)
|
||||
kfree(phb);
|
||||
pcibios_free_controller(phb);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -59,6 +59,7 @@
|
||||
#undef DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
|
@ -49,15 +49,16 @@
|
||||
#include <asm/paca.h>
|
||||
#endif
|
||||
|
||||
int smp_hw_index[NR_CPUS];
|
||||
struct thread_info *secondary_ti;
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
#endif
|
||||
|
||||
int smp_hw_index[NR_CPUS];
|
||||
struct thread_info *secondary_ti;
|
||||
|
||||
cpumask_t cpu_possible_map = CPU_MASK_NONE;
|
||||
cpumask_t cpu_online_map = CPU_MASK_NONE;
|
||||
cpumask_t cpu_sibling_map[NR_CPUS] = { [0 ... NR_CPUS-1] = CPU_MASK_NONE };
|
||||
|
@ -35,6 +35,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5 /* ensure we get enough */
|
||||
srwi. r8,r8,7 /* compute line count */
|
||||
crclr cr0*4+so
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
mr r3,r6
|
||||
@ -58,6 +59,7 @@ V_FUNCTION_END(__kernel_sync_dicache)
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
|
||||
.cfi_startproc
|
||||
crclr cr0*4+so
|
||||
sync
|
||||
isync
|
||||
li r3,0
|
||||
|
@ -54,7 +54,6 @@ V_FUNCTION_BEGIN(__kernel_get_syscall_map)
|
||||
.cfi_startproc
|
||||
mflr r12
|
||||
.cfi_register lr,r12
|
||||
|
||||
mr r4,r3
|
||||
bl __get_datapage@local
|
||||
mtlr r12
|
||||
@ -63,6 +62,7 @@ V_FUNCTION_BEGIN(__kernel_get_syscall_map)
|
||||
beqlr
|
||||
li r0,__NR_syscalls
|
||||
stw r0,0(r4)
|
||||
crclr cr0*4+so
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_get_syscall_map)
|
||||
@ -80,6 +80,7 @@ V_FUNCTION_BEGIN(__kernel_get_tbfreq)
|
||||
lwz r4,(CFG_TB_TICKS_PER_SEC + 4)(r3)
|
||||
lwz r3,CFG_TB_TICKS_PER_SEC(r3)
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_get_tbfreq)
|
||||
|
@ -59,6 +59,7 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
|
||||
stw r5,TZONE_TZ_DSTTIME(r11)
|
||||
|
||||
1: mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
@ -117,6 +118,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
mulli r5,r5,1000
|
||||
stw r5,TSPC32_TV_NSEC(r11)
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
@ -185,6 +187,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
stw r4,TSPC32_TV_NSEC(r11)
|
||||
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
@ -219,6 +222,7 @@ V_FUNCTION_BEGIN(__kernel_clock_getres)
|
||||
|
||||
li r3,0
|
||||
cmpli cr0,r4,0
|
||||
crclr cr0*4+so
|
||||
beqlr
|
||||
lis r5,CLOCK_REALTIME_RES@h
|
||||
ori r5,r5,CLOCK_REALTIME_RES@l
|
||||
|
@ -35,6 +35,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
|
||||
subf r8,r6,r4 /* compute length */
|
||||
add r8,r8,r5 /* ensure we get enough */
|
||||
srwi. r8,r8,7 /* compute line count */
|
||||
crclr cr0*4+so
|
||||
beqlr /* nothing to do? */
|
||||
mtctr r8
|
||||
mr r3,r6
|
||||
@ -58,6 +59,7 @@ V_FUNCTION_END(__kernel_sync_dicache)
|
||||
*/
|
||||
V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
|
||||
.cfi_startproc
|
||||
crclr cr0*4+so
|
||||
sync
|
||||
isync
|
||||
li r3,0
|
||||
|
@ -54,12 +54,12 @@ V_FUNCTION_BEGIN(__kernel_get_syscall_map)
|
||||
.cfi_startproc
|
||||
mflr r12
|
||||
.cfi_register lr,r12
|
||||
|
||||
mr r4,r3
|
||||
bl V_LOCAL_FUNC(__get_datapage)
|
||||
mtlr r12
|
||||
addi r3,r3,CFG_SYSCALL_MAP64
|
||||
cmpli cr0,r4,0
|
||||
crclr cr0*4+so
|
||||
beqlr
|
||||
li r0,__NR_syscalls
|
||||
stw r0,0(r4)
|
||||
@ -80,6 +80,7 @@ V_FUNCTION_BEGIN(__kernel_get_tbfreq)
|
||||
bl V_LOCAL_FUNC(__get_datapage)
|
||||
ld r3,CFG_TB_TICKS_PER_SEC(r3)
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
blr
|
||||
.cfi_endproc
|
||||
V_FUNCTION_END(__kernel_get_tbfreq)
|
||||
|
@ -52,6 +52,7 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
|
||||
stw r4,TZONE_TZ_MINWEST(r10)
|
||||
stw r5,TZONE_TZ_DSTTIME(r10)
|
||||
1: mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0 /* always success */
|
||||
blr
|
||||
.cfi_endproc
|
||||
@ -99,6 +100,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
std r0,TSPC64_TV_NSEC(r11) /* store nsec in tp */
|
||||
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
@ -159,6 +161,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
|
||||
std r7,TSPC64_TV_NSEC(r11)
|
||||
|
||||
mtlr r12
|
||||
crclr cr0*4+so
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
@ -193,6 +196,7 @@ V_FUNCTION_BEGIN(__kernel_clock_getres)
|
||||
|
||||
li r3,0
|
||||
cmpli cr0,r4,0
|
||||
crclr cr0*4+so
|
||||
beqlr
|
||||
lis r5,CLOCK_REALTIME_RES@h
|
||||
ori r5,r5,CLOCK_REALTIME_RES@l
|
||||
|
@ -22,35 +22,38 @@
|
||||
#include "mmu_decl.h" /* for __max_low_memory */
|
||||
#endif
|
||||
|
||||
struct lmb lmb;
|
||||
|
||||
#undef DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
#endif
|
||||
|
||||
struct lmb lmb;
|
||||
|
||||
void lmb_dump_all(void)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
unsigned long i;
|
||||
|
||||
udbg_printf("lmb_dump_all:\n");
|
||||
udbg_printf(" memory.cnt = 0x%lx\n",
|
||||
lmb.memory.cnt);
|
||||
udbg_printf(" memory.size = 0x%lx\n",
|
||||
lmb.memory.size);
|
||||
DBG("lmb_dump_all:\n");
|
||||
DBG(" memory.cnt = 0x%lx\n", lmb.memory.cnt);
|
||||
DBG(" memory.size = 0x%lx\n", lmb.memory.size);
|
||||
for (i=0; i < lmb.memory.cnt ;i++) {
|
||||
udbg_printf(" memory.region[0x%x].base = 0x%lx\n",
|
||||
DBG(" memory.region[0x%x].base = 0x%lx\n",
|
||||
i, lmb.memory.region[i].base);
|
||||
udbg_printf(" .size = 0x%lx\n",
|
||||
DBG(" .size = 0x%lx\n",
|
||||
lmb.memory.region[i].size);
|
||||
}
|
||||
|
||||
udbg_printf("\n reserved.cnt = 0x%lx\n",
|
||||
lmb.reserved.cnt);
|
||||
udbg_printf(" reserved.size = 0x%lx\n",
|
||||
lmb.reserved.size);
|
||||
DBG("\n reserved.cnt = 0x%lx\n", lmb.reserved.cnt);
|
||||
DBG(" reserved.size = 0x%lx\n", lmb.reserved.size);
|
||||
for (i=0; i < lmb.reserved.cnt ;i++) {
|
||||
udbg_printf(" reserved.region[0x%x].base = 0x%lx\n",
|
||||
DBG(" reserved.region[0x%x].base = 0x%lx\n",
|
||||
i, lmb.reserved.region[i].base);
|
||||
udbg_printf(" .size = 0x%lx\n",
|
||||
DBG(" .size = 0x%lx\n",
|
||||
lmb.reserved.region[i].size);
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
|
@ -244,10 +244,9 @@ unsigned long __init find_and_init_phbs(void)
|
||||
if (ret == 0) {
|
||||
printk("bus %d appears to exist\n", bus);
|
||||
|
||||
phb = (struct pci_controller *)kmalloc(sizeof(struct pci_controller), GFP_KERNEL);
|
||||
phb = pcibios_alloc_controller(NULL);
|
||||
if (phb == NULL)
|
||||
return -ENOMEM;
|
||||
pci_setup_pci_controller(phb);
|
||||
|
||||
phb->pci_mem_offset = phb->local_number = bus;
|
||||
phb->first_busno = bus;
|
||||
|
@ -326,26 +326,12 @@ static int __init add_bridge(struct device_node *dev)
|
||||
dev->full_name);
|
||||
}
|
||||
|
||||
hose = alloc_bootmem(sizeof(struct pci_controller));
|
||||
hose = pcibios_alloc_controller(dev);
|
||||
if (hose == NULL)
|
||||
return -ENOMEM;
|
||||
pci_setup_pci_controller(hose);
|
||||
|
||||
hose->arch_data = dev;
|
||||
hose->first_busno = bus_range ? bus_range[0] : 0;
|
||||
hose->last_busno = bus_range ? bus_range[1] : 0xff;
|
||||
|
||||
of_prop = alloc_bootmem(sizeof(struct property) +
|
||||
sizeof(hose->global_number));
|
||||
if (of_prop) {
|
||||
memset(of_prop, 0, sizeof(struct property));
|
||||
of_prop->name = "linux,pci-domain";
|
||||
of_prop->length = sizeof(hose->global_number);
|
||||
of_prop->value = (unsigned char *)&of_prop[1];
|
||||
memcpy(of_prop->value, &hose->global_number, sizeof(hose->global_number));
|
||||
prom_add_property(dev, of_prop);
|
||||
}
|
||||
|
||||
disp_name = NULL;
|
||||
if (device_is_compatible(dev, "u3-agp")) {
|
||||
setup_u3_agp(hose);
|
||||
|
@ -2362,6 +2362,14 @@ static struct pmac_mb_def pmac_mb_defs[] = {
|
||||
PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
|
||||
PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
|
||||
},
|
||||
{ "PowerBook5,8", "PowerBook G4 15\"",
|
||||
PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
|
||||
PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
|
||||
},
|
||||
{ "PowerBook5,9", "PowerBook G4 17\"",
|
||||
PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
|
||||
PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
|
||||
},
|
||||
{ "PowerBook6,1", "PowerBook G4 12\"",
|
||||
PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
|
||||
PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
|
||||
|
@ -640,15 +640,16 @@ static void __init setup_u3_ht(struct pci_controller* hose)
|
||||
* the reg address cell, we shall fix that by killing struct
|
||||
* reg_property and using some accessor functions instead
|
||||
*/
|
||||
hose->cfg_data = (volatile unsigned char *)ioremap(0xf2000000, 0x02000000);
|
||||
hose->cfg_data = (volatile unsigned char *)ioremap(0xf2000000,
|
||||
0x02000000);
|
||||
|
||||
/*
|
||||
* /ht node doesn't expose a "ranges" property, so we "remove" regions that
|
||||
* have been allocated to AGP. So far, this version of the code doesn't assign
|
||||
* any of the 0xfxxxxxxx "fine" memory regions to /ht.
|
||||
* We need to fix that sooner or later by either parsing all child "ranges"
|
||||
* properties or figuring out the U3 address space decoding logic and
|
||||
* then read its configuration register (if any).
|
||||
* /ht node doesn't expose a "ranges" property, so we "remove"
|
||||
* regions that have been allocated to AGP. So far, this version of
|
||||
* the code doesn't assign any of the 0xfxxxxxxx "fine" memory regions
|
||||
* to /ht. We need to fix that sooner or later by either parsing all
|
||||
* child "ranges" properties or figuring out the U3 address space
|
||||
* decoding logic and then read its configuration register (if any).
|
||||
*/
|
||||
hose->io_base_phys = 0xf4000000;
|
||||
hose->pci_io_size = 0x00400000;
|
||||
@ -671,10 +672,10 @@ static void __init setup_u3_ht(struct pci_controller* hose)
|
||||
return;
|
||||
}
|
||||
|
||||
/* We "remove" the AGP resources from the resources allocated to HT, that
|
||||
* is we create "holes". However, that code does assumptions that so far
|
||||
* happen to be true (cross fingers...), typically that resources in the
|
||||
* AGP node are properly ordered
|
||||
/* We "remove" the AGP resources from the resources allocated to HT,
|
||||
* that is we create "holes". However, that code does assumptions
|
||||
* that so far happen to be true (cross fingers...), typically that
|
||||
* resources in the AGP node are properly ordered
|
||||
*/
|
||||
cur = 0;
|
||||
for (i=0; i<3; i++) {
|
||||
@ -684,23 +685,30 @@ static void __init setup_u3_ht(struct pci_controller* hose)
|
||||
/* We don't care about "fine" resources */
|
||||
if (res->start >= 0xf0000000)
|
||||
continue;
|
||||
/* Check if it's just a matter of "shrinking" us in one direction */
|
||||
/* Check if it's just a matter of "shrinking" us in one
|
||||
* direction
|
||||
*/
|
||||
if (hose->mem_resources[cur].start == res->start) {
|
||||
DBG("U3/HT: shrink start of %d, %08lx -> %08lx\n",
|
||||
cur, hose->mem_resources[cur].start, res->end + 1);
|
||||
cur, hose->mem_resources[cur].start,
|
||||
res->end + 1);
|
||||
hose->mem_resources[cur].start = res->end + 1;
|
||||
continue;
|
||||
}
|
||||
if (hose->mem_resources[cur].end == res->end) {
|
||||
DBG("U3/HT: shrink end of %d, %08lx -> %08lx\n",
|
||||
cur, hose->mem_resources[cur].end, res->start - 1);
|
||||
cur, hose->mem_resources[cur].end,
|
||||
res->start - 1);
|
||||
hose->mem_resources[cur].end = res->start - 1;
|
||||
continue;
|
||||
}
|
||||
/* No, it's not the case, we need a hole */
|
||||
if (cur == 2) {
|
||||
/* not enough resources for a hole, we drop part of the range */
|
||||
printk(KERN_WARNING "Running out of resources for /ht host !\n");
|
||||
/* not enough resources for a hole, we drop part
|
||||
* of the range
|
||||
*/
|
||||
printk(KERN_WARNING "Running out of resources"
|
||||
" for /ht host !\n");
|
||||
hose->mem_resources[cur].end = res->start - 1;
|
||||
continue;
|
||||
}
|
||||
@ -714,17 +722,6 @@ static void __init setup_u3_ht(struct pci_controller* hose)
|
||||
hose->mem_resources[cur-1].end = res->start - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX this needs to be converged between ppc32 and ppc64... */
|
||||
static struct pci_controller * __init pcibios_alloc_controller(void)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
|
||||
hose = alloc_bootmem(sizeof(struct pci_controller));
|
||||
if (hose)
|
||||
pci_setup_pci_controller(hose);
|
||||
return hose;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -756,11 +753,16 @@ static int __init add_bridge(struct device_node *dev)
|
||||
#endif
|
||||
bus_range = (int *) get_property(dev, "bus-range", &len);
|
||||
if (bus_range == NULL || len < 2 * sizeof(int)) {
|
||||
printk(KERN_WARNING "Can't get bus-range for %s, assume bus 0\n",
|
||||
dev->full_name);
|
||||
printk(KERN_WARNING "Can't get bus-range for %s, assume"
|
||||
" bus 0\n", dev->full_name);
|
||||
}
|
||||
|
||||
/* XXX Different prototypes, to be merged */
|
||||
#ifdef CONFIG_PPC64
|
||||
hose = pcibios_alloc_controller(dev);
|
||||
#else
|
||||
hose = pcibios_alloc_controller();
|
||||
#endif
|
||||
if (!hose)
|
||||
return -ENOMEM;
|
||||
hose->arch_data = dev;
|
||||
@ -768,7 +770,7 @@ static int __init add_bridge(struct device_node *dev)
|
||||
hose->last_busno = bus_range ? bus_range[1] : 0xff;
|
||||
|
||||
disp_name = NULL;
|
||||
#ifdef CONFIG_POWER4
|
||||
#ifdef CONFIG_PPC64
|
||||
if (device_is_compatible(dev, "u3-agp")) {
|
||||
setup_u3_agp(hose);
|
||||
disp_name = "U3-AGP";
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "plpar_wrappers.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <asm/udbg.h>
|
||||
#define DBG(fmt...) udbg_printf(fmt)
|
||||
#else
|
||||
#define DBG(fmt...)
|
||||
|
@ -602,7 +602,19 @@ void parse_bootinfo(struct bi_record *rec)
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
#ifdef CONFIG_PPC_MULTIPLATFORM
|
||||
case BI_MACHTYPE:
|
||||
_machine = data[0];
|
||||
/* Machine types changed with the merge. Since the
|
||||
* bootinfo are now deprecated, we can just hard code
|
||||
* the appropriate conversion here for when we are
|
||||
* called with yaboot which passes us a machine type
|
||||
* this way.
|
||||
*/
|
||||
switch(data[0]) {
|
||||
case 1: _machine = _MACH_prep; break;
|
||||
case 2: _machine = _MACH_Pmac; break;
|
||||
case 4: _machine = _MACH_chrp; break;
|
||||
default:
|
||||
_machine = data[0];
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case BI_MEMSIZE:
|
||||
|
@ -597,21 +597,20 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
|
||||
|
||||
if (pfn_valid(pfn)) {
|
||||
struct page *page = pfn_to_page(pfn);
|
||||
#ifdef CONFIG_8xx
|
||||
/* On 8xx, the TLB handlers work in 2 stages:
|
||||
* First, a zeroed entry is loaded by TLBMiss handler,
|
||||
* which causes the TLBError handler to be triggered.
|
||||
* That means the zeroed TLB has to be invalidated
|
||||
* whenever a page miss occurs.
|
||||
*/
|
||||
_tlbie(address);
|
||||
#endif
|
||||
if (!PageReserved(page)
|
||||
&& !test_bit(PG_arch_1, &page->flags)) {
|
||||
if (vma->vm_mm == current->active_mm) {
|
||||
#ifdef CONFIG_8xx
|
||||
/* On 8xx, cache control instructions (particularly
|
||||
* "dcbst" from flush_dcache_icache) fault as write
|
||||
* operation if there is an unpopulated TLB entry
|
||||
* for the address in question. To workaround that,
|
||||
* we invalidate the TLB here, thus avoiding dcbst
|
||||
* misbehaviour.
|
||||
*/
|
||||
_tlbie(address);
|
||||
#endif
|
||||
if (vma->vm_mm == current->active_mm)
|
||||
__flush_dcache_icache((void *) address);
|
||||
} else
|
||||
else
|
||||
flush_dcache_icache_page(page);
|
||||
set_bit(PG_arch_1, &page->flags);
|
||||
}
|
||||
|
@ -184,7 +184,9 @@ xmon_map_scc(void)
|
||||
sccc = base + (addr & ~PAGE_MASK);
|
||||
sccd = sccc + 0x10;
|
||||
|
||||
} else {
|
||||
}
|
||||
#ifdef CONFIG_PPC_CHRP
|
||||
else {
|
||||
base = (volatile unsigned char *) isa_io_base;
|
||||
if (_machine == _MACH_chrp)
|
||||
base = (volatile unsigned char *)
|
||||
@ -200,6 +202,7 @@ xmon_map_scc(void)
|
||||
RXRDY = 1;
|
||||
DLAB = 0x80;
|
||||
}
|
||||
#endif /* CONFIG_PPC_CHRP */
|
||||
#elif defined(CONFIG_GEMINI)
|
||||
/* should already be mapped by the kernel boot */
|
||||
sccc = (volatile unsigned char *) 0xffeffb0d;
|
||||
|
@ -276,7 +276,7 @@ static void cinergyt2_free_stream_urbs (struct cinergyt2 *cinergyt2)
|
||||
if (cinergyt2->stream_urb[i])
|
||||
usb_free_urb(cinergyt2->stream_urb[i]);
|
||||
|
||||
pci_free_consistent(NULL, STREAM_URB_COUNT*STREAM_BUF_SIZE,
|
||||
usb_buffer_free(cinergyt2->udev, STREAM_URB_COUNT*STREAM_BUF_SIZE,
|
||||
cinergyt2->streambuf, cinergyt2->streambuf_dmahandle);
|
||||
}
|
||||
|
||||
@ -284,9 +284,8 @@ static int cinergyt2_alloc_stream_urbs (struct cinergyt2 *cinergyt2)
|
||||
{
|
||||
int i;
|
||||
|
||||
cinergyt2->streambuf = pci_alloc_consistent(NULL,
|
||||
STREAM_URB_COUNT*STREAM_BUF_SIZE,
|
||||
&cinergyt2->streambuf_dmahandle);
|
||||
cinergyt2->streambuf = usb_buffer_alloc(cinergyt2->udev, STREAM_URB_COUNT*STREAM_BUF_SIZE,
|
||||
SLAB_KERNEL, &cinergyt2->streambuf_dmahandle);
|
||||
if (!cinergyt2->streambuf) {
|
||||
dprintk(1, "failed to alloc consistent stream memory area, bailing out!\n");
|
||||
return -ENOMEM;
|
||||
@ -780,6 +779,8 @@ static int cinergyt2_register_rc(struct cinergyt2 *cinergyt2)
|
||||
|
||||
input_register_device(cinergyt2->rc_input_dev);
|
||||
schedule_delayed_work(&cinergyt2->rc_query_work, HZ/2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cinergyt2_unregister_rc(struct cinergyt2 *cinergyt2)
|
||||
|
@ -497,7 +497,7 @@ config SCSI_ATA_PIIX
|
||||
If unsure, say N.
|
||||
|
||||
config SCSI_SATA_MV
|
||||
tristate "Marvell SATA support"
|
||||
tristate "Marvell SATA support (HIGHLY EXPERIMENTAL)"
|
||||
depends on SCSI_SATA && PCI && EXPERIMENTAL
|
||||
help
|
||||
This option enables support for the Marvell Serial ATA family.
|
||||
|
@ -1046,6 +1046,30 @@ static unsigned int ata_pio_modes(const struct ata_device *adev)
|
||||
return modes;
|
||||
}
|
||||
|
||||
static int ata_qc_wait_err(struct ata_queued_cmd *qc,
|
||||
struct completion *wait)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
if (wait_for_completion_timeout(wait, 30 * HZ) < 1) {
|
||||
/* timeout handling */
|
||||
unsigned int err_mask = ac_err_mask(ata_chk_status(qc->ap));
|
||||
|
||||
if (!err_mask) {
|
||||
printk(KERN_WARNING "ata%u: slow completion (cmd %x)\n",
|
||||
qc->ap->id, qc->tf.command);
|
||||
} else {
|
||||
printk(KERN_WARNING "ata%u: qc timeout (cmd %x)\n",
|
||||
qc->ap->id, qc->tf.command);
|
||||
rc = -EIO;
|
||||
}
|
||||
|
||||
ata_qc_complete(qc, err_mask);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_dev_identify - obtain IDENTIFY x DEVICE page
|
||||
* @ap: port on which device we wish to probe resides
|
||||
@ -1125,7 +1149,7 @@ retry:
|
||||
if (rc)
|
||||
goto err_out;
|
||||
else
|
||||
wait_for_completion(&wait);
|
||||
ata_qc_wait_err(qc, &wait);
|
||||
|
||||
spin_lock_irqsave(&ap->host_set->lock, flags);
|
||||
ap->ops->tf_read(ap, &qc->tf);
|
||||
@ -2269,7 +2293,7 @@ static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev)
|
||||
if (rc)
|
||||
ata_port_disable(ap);
|
||||
else
|
||||
wait_for_completion(&wait);
|
||||
ata_qc_wait_err(qc, &wait);
|
||||
|
||||
DPRINTK("EXIT\n");
|
||||
}
|
||||
@ -2317,7 +2341,7 @@ static void ata_dev_reread_id(struct ata_port *ap, struct ata_device *dev)
|
||||
if (rc)
|
||||
goto err_out;
|
||||
|
||||
wait_for_completion(&wait);
|
||||
ata_qc_wait_err(qc, &wait);
|
||||
|
||||
swap_buf_le16(dev->id, ATA_ID_WORDS);
|
||||
|
||||
@ -2373,7 +2397,7 @@ static void ata_dev_init_params(struct ata_port *ap, struct ata_device *dev)
|
||||
if (rc)
|
||||
ata_port_disable(ap);
|
||||
else
|
||||
wait_for_completion(&wait);
|
||||
ata_qc_wait_err(qc, &wait);
|
||||
|
||||
DPRINTK("EXIT\n");
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -121,6 +121,11 @@
|
||||
|
||||
#include <linux/hiddev.h>
|
||||
|
||||
#include <linux/dvb/audio.h>
|
||||
#include <linux/dvb/dmx.h>
|
||||
#include <linux/dvb/frontend.h>
|
||||
#include <linux/dvb/video.h>
|
||||
|
||||
#undef INCLUDES
|
||||
#endif
|
||||
|
||||
@ -413,6 +418,128 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
struct compat_dmx_event {
|
||||
dmx_event_t event;
|
||||
compat_time_t timeStamp;
|
||||
union
|
||||
{
|
||||
dmx_scrambling_status_t scrambling;
|
||||
} u;
|
||||
};
|
||||
|
||||
static int do_dmx_get_event(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct dmx_event kevent;
|
||||
mm_segment_t old_fs = get_fs();
|
||||
int err;
|
||||
|
||||
set_fs(KERNEL_DS);
|
||||
err = sys_ioctl(fd, cmd, (unsigned long) &kevent);
|
||||
set_fs(old_fs);
|
||||
|
||||
if (!err) {
|
||||
struct compat_dmx_event __user *up = compat_ptr(arg);
|
||||
|
||||
err = put_user(kevent.event, &up->event);
|
||||
err |= put_user(kevent.timeStamp, &up->timeStamp);
|
||||
err |= put_user(kevent.u.scrambling, &up->u.scrambling);
|
||||
if (err)
|
||||
err = -EFAULT;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
struct compat_video_event {
|
||||
int32_t type;
|
||||
compat_time_t timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
unsigned int frame_rate;
|
||||
} u;
|
||||
};
|
||||
|
||||
static int do_video_get_event(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct video_event kevent;
|
||||
mm_segment_t old_fs = get_fs();
|
||||
int err;
|
||||
|
||||
set_fs(KERNEL_DS);
|
||||
err = sys_ioctl(fd, cmd, (unsigned long) &kevent);
|
||||
set_fs(old_fs);
|
||||
|
||||
if (!err) {
|
||||
struct compat_video_event __user *up = compat_ptr(arg);
|
||||
|
||||
err = put_user(kevent.type, &up->type);
|
||||
err |= put_user(kevent.timestamp, &up->timestamp);
|
||||
err |= put_user(kevent.u.size.w, &up->u.size.w);
|
||||
err |= put_user(kevent.u.size.h, &up->u.size.h);
|
||||
err |= put_user(kevent.u.size.aspect_ratio,
|
||||
&up->u.size.aspect_ratio);
|
||||
if (err)
|
||||
err = -EFAULT;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
struct compat_video_still_picture {
|
||||
compat_uptr_t iFrame;
|
||||
int32_t size;
|
||||
};
|
||||
|
||||
static int do_video_stillpicture(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct compat_video_still_picture __user *up;
|
||||
struct video_still_picture __user *up_native;
|
||||
compat_uptr_t fp;
|
||||
int32_t size;
|
||||
int err;
|
||||
|
||||
up = (struct compat_video_still_picture __user *) arg;
|
||||
err = get_user(fp, &up->iFrame);
|
||||
err |= get_user(size, &up->size);
|
||||
if (err)
|
||||
return -EFAULT;
|
||||
|
||||
up_native =
|
||||
compat_alloc_user_space(sizeof(struct video_still_picture));
|
||||
|
||||
put_user(compat_ptr(fp), &up_native->iFrame);
|
||||
put_user(size, &up_native->size);
|
||||
|
||||
err = sys_ioctl(fd, cmd, (unsigned long) up_native);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
struct compat_video_spu_palette {
|
||||
int length;
|
||||
compat_uptr_t palette;
|
||||
};
|
||||
|
||||
static int do_video_set_spu_palette(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct compat_video_spu_palette __user *up;
|
||||
struct video_spu_palette __user *up_native;
|
||||
compat_uptr_t palp;
|
||||
int length, err;
|
||||
|
||||
up = (struct compat_video_spu_palette __user *) arg;
|
||||
err = get_user(palp, &up->palette);
|
||||
err |= get_user(length, &up->length);
|
||||
|
||||
up_native = compat_alloc_user_space(sizeof(struct video_spu_palette));
|
||||
put_user(compat_ptr(palp), &up_native->palette);
|
||||
put_user(length, &up_native->length);
|
||||
|
||||
err = sys_ioctl(fd, cmd, (unsigned long) up_native);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET
|
||||
static int do_siocgstamp(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
@ -2954,5 +3081,11 @@ HANDLE_IOCTL(NCP_IOC_GETPRIVATEDATA_32, do_ncp_getprivatedata)
|
||||
HANDLE_IOCTL(NCP_IOC_SETPRIVATEDATA_32, do_ncp_setprivatedata)
|
||||
#endif
|
||||
|
||||
/* dvb */
|
||||
HANDLE_IOCTL(DMX_GET_EVENT, do_dmx_get_event)
|
||||
HANDLE_IOCTL(VIDEO_GET_EVENT, do_video_get_event)
|
||||
HANDLE_IOCTL(VIDEO_STILLPICTURE, do_video_stillpicture)
|
||||
HANDLE_IOCTL(VIDEO_SET_SPU_PALETTE, do_video_set_spu_palette)
|
||||
|
||||
#undef DECLARES
|
||||
#endif
|
||||
|
@ -14,7 +14,6 @@
|
||||
|
||||
extern unsigned long isa_io_base;
|
||||
|
||||
extern void pci_setup_pci_controller(struct pci_controller *hose);
|
||||
extern void pci_setup_phb_io(struct pci_controller *hose, int primary);
|
||||
extern void pci_setup_phb_io_dynamic(struct pci_controller *hose, int primary);
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#define VDSO32_MBASE VDSO32_LBASE
|
||||
#define VDSO64_MBASE VDSO64_LBASE
|
||||
|
||||
#define VDSO_VERSION_STRING LINUX_2.6.12
|
||||
#define VDSO_VERSION_STRING LINUX_2.6.15
|
||||
|
||||
/* Define if 64 bits VDSO has procedure descriptors */
|
||||
#undef VDS64_HAS_DESCRIPTORS
|
||||
|
@ -28,7 +28,7 @@ extern void pgd_free(pgd_t *pgd);
|
||||
#define pmd_populate_kernel(mm, pmd, pte) \
|
||||
(pmd_val(*(pmd)) = (unsigned long)pte | _PMD_PRESENT)
|
||||
#define pmd_populate(mm, pmd, pte) \
|
||||
(pmd_val(*(pmd)) = (unsigned long)page_to_virt(pte) | _PMD_PRESENT)
|
||||
(pmd_val(*(pmd)) = (unsigned long)lowmem_page_address(pte) | _PMD_PRESENT)
|
||||
#endif
|
||||
|
||||
extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr);
|
||||
|
@ -61,12 +61,14 @@ struct pci_dn {
|
||||
int busno; /* for pci devices */
|
||||
int bussubno; /* for pci devices */
|
||||
int devfn; /* for pci devices */
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
int eeh_mode; /* See eeh.h for possible EEH_MODEs */
|
||||
int eeh_config_addr;
|
||||
int eeh_check_count; /* # times driver ignored error */
|
||||
int eeh_freeze_count; /* # times this device froze up. */
|
||||
int eeh_is_bridge; /* device is pci-to-pci bridge */
|
||||
|
||||
#endif
|
||||
int pci_ext_config_space; /* for pci devices */
|
||||
struct pci_controller *phb; /* for pci devices */
|
||||
struct iommu_table *iommu_table; /* for phb's or bridges */
|
||||
@ -74,9 +76,9 @@ struct pci_dn {
|
||||
struct device_node *node; /* back-pointer to the device_node */
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
struct list_head Device_List;
|
||||
int Irq; /* Assigned IRQ */
|
||||
int Flags; /* Possible flags(disable/bist)*/
|
||||
u8 LogicalSlot; /* Hv Slot Index for Tces */
|
||||
int Irq; /* Assigned IRQ */
|
||||
int Flags; /* Possible flags(disable/bist)*/
|
||||
u8 LogicalSlot; /* Hv Slot Index for Tces */
|
||||
#endif
|
||||
u32 config_space[16]; /* saved PCI config space */
|
||||
};
|
||||
@ -136,6 +138,10 @@ static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
|
||||
return PCI_DN(busdn)->phb;
|
||||
}
|
||||
|
||||
extern struct pci_controller *
|
||||
pcibios_alloc_controller(struct device_node *dev);
|
||||
extern void pcibios_free_controller(struct pci_controller *phb);
|
||||
|
||||
/* Return values for ppc_md.pci_probe_mode function */
|
||||
#define PCI_PROBE_NONE -1 /* Don't look at this bus at all */
|
||||
#define PCI_PROBE_NORMAL 0 /* Do normal PCI probing */
|
||||
|
@ -795,3 +795,70 @@ COMPATIBLE_IOCTL(HIDIOCGFLAG)
|
||||
COMPATIBLE_IOCTL(HIDIOCSFLAG)
|
||||
COMPATIBLE_IOCTL(HIDIOCGCOLLECTIONINDEX)
|
||||
COMPATIBLE_IOCTL(HIDIOCGCOLLECTIONINFO)
|
||||
/* dvb */
|
||||
COMPATIBLE_IOCTL(AUDIO_STOP)
|
||||
COMPATIBLE_IOCTL(AUDIO_PLAY)
|
||||
COMPATIBLE_IOCTL(AUDIO_PAUSE)
|
||||
COMPATIBLE_IOCTL(AUDIO_CONTINUE)
|
||||
COMPATIBLE_IOCTL(AUDIO_SELECT_SOURCE)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_MUTE)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_AV_SYNC)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_BYPASS_MODE)
|
||||
COMPATIBLE_IOCTL(AUDIO_CHANNEL_SELECT)
|
||||
COMPATIBLE_IOCTL(AUDIO_GET_STATUS)
|
||||
COMPATIBLE_IOCTL(AUDIO_GET_CAPABILITIES)
|
||||
COMPATIBLE_IOCTL(AUDIO_CLEAR_BUFFER)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_ID)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_MIXER)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_STREAMTYPE)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_EXT_ID)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_ATTRIBUTES)
|
||||
COMPATIBLE_IOCTL(AUDIO_SET_KARAOKE)
|
||||
COMPATIBLE_IOCTL(DMX_START)
|
||||
COMPATIBLE_IOCTL(DMX_STOP)
|
||||
COMPATIBLE_IOCTL(DMX_SET_FILTER)
|
||||
COMPATIBLE_IOCTL(DMX_SET_PES_FILTER)
|
||||
COMPATIBLE_IOCTL(DMX_SET_BUFFER_SIZE)
|
||||
COMPATIBLE_IOCTL(DMX_GET_PES_PIDS)
|
||||
COMPATIBLE_IOCTL(DMX_GET_CAPS)
|
||||
COMPATIBLE_IOCTL(DMX_SET_SOURCE)
|
||||
COMPATIBLE_IOCTL(DMX_GET_STC)
|
||||
COMPATIBLE_IOCTL(FE_GET_INFO)
|
||||
COMPATIBLE_IOCTL(FE_DISEQC_RESET_OVERLOAD)
|
||||
COMPATIBLE_IOCTL(FE_DISEQC_SEND_MASTER_CMD)
|
||||
COMPATIBLE_IOCTL(FE_DISEQC_RECV_SLAVE_REPLY)
|
||||
COMPATIBLE_IOCTL(FE_DISEQC_SEND_BURST)
|
||||
COMPATIBLE_IOCTL(FE_SET_TONE)
|
||||
COMPATIBLE_IOCTL(FE_SET_VOLTAGE)
|
||||
COMPATIBLE_IOCTL(FE_ENABLE_HIGH_LNB_VOLTAGE)
|
||||
COMPATIBLE_IOCTL(FE_READ_STATUS)
|
||||
COMPATIBLE_IOCTL(FE_READ_BER)
|
||||
COMPATIBLE_IOCTL(FE_READ_SIGNAL_STRENGTH)
|
||||
COMPATIBLE_IOCTL(FE_READ_SNR)
|
||||
COMPATIBLE_IOCTL(FE_READ_UNCORRECTED_BLOCKS)
|
||||
COMPATIBLE_IOCTL(FE_SET_FRONTEND)
|
||||
COMPATIBLE_IOCTL(FE_GET_FRONTEND)
|
||||
COMPATIBLE_IOCTL(FE_GET_EVENT)
|
||||
COMPATIBLE_IOCTL(FE_DISHNETWORK_SEND_LEGACY_CMD)
|
||||
COMPATIBLE_IOCTL(VIDEO_STOP)
|
||||
COMPATIBLE_IOCTL(VIDEO_PLAY)
|
||||
COMPATIBLE_IOCTL(VIDEO_FREEZE)
|
||||
COMPATIBLE_IOCTL(VIDEO_CONTINUE)
|
||||
COMPATIBLE_IOCTL(VIDEO_SELECT_SOURCE)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_BLANK)
|
||||
COMPATIBLE_IOCTL(VIDEO_GET_STATUS)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_DISPLAY_FORMAT)
|
||||
COMPATIBLE_IOCTL(VIDEO_FAST_FORWARD)
|
||||
COMPATIBLE_IOCTL(VIDEO_SLOWMOTION)
|
||||
COMPATIBLE_IOCTL(VIDEO_GET_CAPABILITIES)
|
||||
COMPATIBLE_IOCTL(VIDEO_CLEAR_BUFFER)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_ID)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_STREAMTYPE)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_FORMAT)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_SYSTEM)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_HIGHLIGHT)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_SPU)
|
||||
COMPATIBLE_IOCTL(VIDEO_GET_NAVI)
|
||||
COMPATIBLE_IOCTL(VIDEO_SET_ATTRIBUTES)
|
||||
COMPATIBLE_IOCTL(VIDEO_GET_SIZE)
|
||||
COMPATIBLE_IOCTL(VIDEO_GET_FRAME_RATE)
|
||||
|
@ -1194,8 +1194,14 @@ static void tumbler_resume(pmac_t *chip)
|
||||
tumbler_set_master_volume(mix);
|
||||
if (chip->update_automute)
|
||||
chip->update_automute(chip, 0);
|
||||
if (mix->headphone_irq >= 0)
|
||||
if (mix->headphone_irq >= 0) {
|
||||
unsigned char val;
|
||||
|
||||
enable_irq(mix->headphone_irq);
|
||||
/* activate headphone status interrupts */
|
||||
val = do_gpio_read(&mix->hp_detect);
|
||||
do_gpio_write(&mix->hp_detect, val | 0x80);
|
||||
}
|
||||
if (mix->lineout_irq >= 0)
|
||||
enable_irq(mix->lineout_irq);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user