Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
1963fd3f
Commit
1963fd3f
authored
Mar 15, 2004
by
David Mosberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge tiger.hpl.hp.com:/data1/bk/vanilla/linux-2.5
into tiger.hpl.hp.com:/data1/bk/lia64/to-linus-2.5
parents
d3fdc9ac
6737083d
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
637 additions
and
301 deletions
+637
-301
arch/ia64/Kconfig
arch/ia64/Kconfig
+99
-94
arch/ia64/configs/sn2_defconfig
arch/ia64/configs/sn2_defconfig
+420
-156
arch/ia64/hp/common/sba_iommu.c
arch/ia64/hp/common/sba_iommu.c
+3
-3
arch/ia64/kernel/Makefile
arch/ia64/kernel/Makefile
+1
-2
arch/ia64/kernel/acpi.c
arch/ia64/kernel/acpi.c
+18
-0
arch/ia64/kernel/efi.c
arch/ia64/kernel/efi.c
+0
-4
arch/ia64/kernel/setup.c
arch/ia64/kernel/setup.c
+0
-2
arch/ia64/kernel/smpboot.c
arch/ia64/kernel/smpboot.c
+0
-2
arch/ia64/mm/contig.c
arch/ia64/mm/contig.c
+2
-0
arch/ia64/mm/discontig.c
arch/ia64/mm/discontig.c
+2
-0
arch/ia64/mm/init.c
arch/ia64/mm/init.c
+4
-5
arch/ia64/sn/kernel/setup.c
arch/ia64/sn/kernel/setup.c
+0
-3
drivers/char/agp/hp-agp.c
drivers/char/agp/hp-agp.c
+84
-28
drivers/char/sn_serial.c
drivers/char/sn_serial.c
+2
-1
include/asm-ia64/acpi.h
include/asm-ia64/acpi.h
+2
-1
No files found.
arch/ia64/Kconfig
View file @
1963fd3f
...
...
@@ -38,24 +38,6 @@ config EFI
bool
default y
choice
prompt "Processor type"
default ITANIUM
config ITANIUM
bool "Itanium"
help
Select your IA-64 processor type. The default is Itanium.
This choice is safe for all IA-64 systems, but may not perform
optimally on systems with, say, Itanium 2 or newer processors.
config MCKINLEY
bool "Itanium 2"
help
Select this to configure for an Itanium 2 (McKinley) processor.
endchoice
choice
prompt "System type"
default IA64_GENERIC
...
...
@@ -96,6 +78,24 @@ config IA64_HP_SIM
endchoice
choice
prompt "Processor type"
default ITANIUM
config ITANIUM
bool "Itanium"
help
Select your IA-64 processor type. The default is Itanium.
This choice is safe for all IA-64 systems, but may not perform
optimally on systems with, say, Itanium 2 or newer processors.
config MCKINLEY
bool "Itanium 2"
help
Select this to configure for an Itanium 2 (McKinley) processor.
endchoice
choice
prompt "Kernel page size"
default IA64_PAGE_SIZE_16KB
...
...
@@ -129,52 +129,6 @@ config IA64_PAGE_SIZE_64KB
endchoice
config ACPI
bool
depends on !IA64_HP_SIM
default y
help
ACPI/OSPM support for Linux is currently under development. As such,
this support is preliminary and EXPERIMENTAL. Configuring ACPI
support enables kernel interfaces that allow higher level software
(OSPM) to manipulate ACPI defined hardware and software interfaces,
including the evaluation of ACPI control methods. If unsure, choose
N here. Note, this option will enlarge your kernel by about 120K.
This support requires an ACPI compliant platform (hardware/firmware).
If both ACPI and Advanced Power Management (APM) support are
configured, whichever is loaded first shall be used.
This code DOES NOT currently provide a complete OSPM implementation
-- it has not yet reached APM's level of functionality. When fully
implemented, Linux ACPI/OSPM will provide a more robust functional
replacement for legacy configuration and power management
interfaces, including the Plug-and-Play BIOS specification (PnP
BIOS), the Multi-Processor Specification (MPS), and the Advanced
Power Management specification (APM).
Linux support for ACPI/OSPM is based on Intel Corporation's ACPI
Component Architecture (ACPI CA). The latest ACPI CA source code,
documentation, debug builds, and implementation status information
can be downloaded from:
<http://developer.intel.com/technology/iapc/acpi/downloads.htm>.
The ACPI Sourceforge project may also be of interest:
<http://sf.net/projects/acpi/>
config ACPI_INTERPRETER
bool
depends on !IA64_HP_SIM
default y
config ACPI_KERNEL_CONFIG
bool
depends on !IA64_HP_SIM
default y
help
If you say `Y' here, Linux's ACPI support will use the
hardware-level system descriptions found on IA-64 systems.
config IA64_BRL_EMU
bool
depends on ITANIUM
...
...
@@ -238,40 +192,12 @@ config DISCONTIGMEM
or have huge holes in the physical address space for other reasons.
See <file:Documentation/vm/numa> for more.
config IA64_MCA
bool "Machine Check Abort"
default y if !IA64_HP_SIM
help
Say Y here to enable machine check support for IA-64. If you're
unsure, answer Y.
config IA64_CYCLONE
bool "Support Cyclone(EXA) Time Source"
help
Say Y here to enable support for IBM EXA Cyclone time source.
If you're unsure, answer N.
config PM
bool "Power Management support"
depends on IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
default y
help
"Power Management" means that parts of your computer are shut
off or put into a power conserving "sleep" mode if they are not
being used. There are two competing standards for doing this: APM
and ACPI. If you want to use either one, say Y here and then also
to the requisite support below.
Power Management is most important for battery powered laptop
computers; if you have a laptop, check out the Linux Laptop home
page on the WWW at <http://www.linux-on-laptops.com/> and the
Battery Powered Linux mini-HOWTO, available from
<http://www.tldp.org/docs.html#howto>.
Note that, even if you say N here, Linux on the x86 architecture
will issue the hlt instruction if nothing is to be done, thereby
sending the processor to sleep and saving power.
config IOSAPIC
bool
depends on !IA64_HP_SIM
...
...
@@ -389,10 +315,89 @@ config EFI_VARS
source "fs/Kconfig.binfmt"
endmenu
menu "Power management and ACPI"
config PM
bool "Power Management support"
depends on IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
default y
help
"Power Management" means that parts of your computer are shut
off or put into a power conserving "sleep" mode if they are not
being used. There are two competing standards for doing this: APM
and ACPI. If you want to use either one, say Y here and then also
to the requisite support below.
Power Management is most important for battery powered laptop
computers; if you have a laptop, check out the Linux Laptop home
page on the WWW at <http://www.linux-on-laptops.com/> and the
Battery Powered Linux mini-HOWTO, available from
<http://www.tldp.org/docs.html#howto>.
Note that, even if you say N here, Linux on the x86 architecture
will issue the hlt instruction if nothing is to be done, thereby
sending the processor to sleep and saving power.
config ACPI
bool
depends on !IA64_HP_SIM
default y
help
ACPI/OSPM support for Linux is currently under development. As such,
this support is preliminary and EXPERIMENTAL. Configuring ACPI
support enables kernel interfaces that allow higher level software
(OSPM) to manipulate ACPI defined hardware and software interfaces,
including the evaluation of ACPI control methods. If unsure, choose
N here. Note, this option will enlarge your kernel by about 120K.
This support requires an ACPI compliant platform (hardware/firmware).
If both ACPI and Advanced Power Management (APM) support are
configured, whichever is loaded first shall be used.
This code DOES NOT currently provide a complete OSPM implementation
-- it has not yet reached APM's level of functionality. When fully
implemented, Linux ACPI/OSPM will provide a more robust functional
replacement for legacy configuration and power management
interfaces, including the Plug-and-Play BIOS specification (PnP
BIOS), the Multi-Processor Specification (MPS), and the Advanced
Power Management specification (APM).
Linux support for ACPI/OSPM is based on Intel Corporation's ACPI
Component Architecture (ACPI CA). The latest ACPI CA source code,
documentation, debug builds, and implementation status information
can be downloaded from:
<http://developer.intel.com/technology/iapc/acpi/downloads.htm>.
The ACPI Sourceforge project may also be of interest:
<http://sf.net/projects/acpi/>
config ACPI_INTERPRETER
bool
depends on !IA64_HP_SIM
default y
config ACPI_KERNEL_CONFIG
bool
depends on !IA64_HP_SIM
default y
help
If you say `Y' here, Linux's ACPI support will use the
hardware-level system descriptions found on IA-64 systems.
if !IA64_HP_SIM
source "drivers/acpi/Kconfig"
endif
endmenu
if !IA64_HP_SIM
menu "Bus options (PCI, PCMCIA)"
config PCI
bool "PCI support"
help
...
...
@@ -416,10 +421,10 @@ source "drivers/pci/hotplug/Kconfig"
source "drivers/pcmcia/Kconfig"
endif
endmenu
endif
source "drivers/Kconfig"
source "fs/Kconfig"
...
...
arch/ia64/configs/sn2_defconfig
View file @
1963fd3f
This diff is collapsed.
Click to expand it.
arch/ia64/hp/common/sba_iommu.c
View file @
1963fd3f
...
...
@@ -1055,13 +1055,13 @@ sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, int
*
dma_handle
=
virt_to_phys
(
addr
);
#ifdef ALLOW_IOV_BYPASS
ASSERT
(
to_pci_dev
(
dev
)
->
consist
ent_dma_mask
);
ASSERT
(
dev
->
coher
ent_dma_mask
);
/*
** Check if the PCI device can DMA to ptr... if so, just return ptr
*/
if
(
likely
((
*
dma_handle
&
~
to_pci_dev
(
dev
)
->
consist
ent_dma_mask
)
==
0
))
{
if
(
likely
((
*
dma_handle
&
~
dev
->
coher
ent_dma_mask
)
==
0
))
{
DBG_BYPASS
(
"sba_alloc_coherent() bypass mask/addr: 0x%lx/0x%lx
\n
"
,
to_pci_dev
(
dev
)
->
consist
ent_dma_mask
,
*
dma_handle
);
dev
->
coher
ent_dma_mask
,
*
dma_handle
);
return
addr
;
}
...
...
arch/ia64/kernel/Makefile
View file @
1963fd3f
...
...
@@ -6,13 +6,12 @@ extra-y := head.o init_task.o vmlinux.lds.s
obj-y
:=
acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o
\
irq_lsapic.o ivt.o machvec.o pal.o patch.o process.o perfmon.o ptrace.o sal.o
\
salinfo.o semaphore.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o unwind.o
salinfo.o semaphore.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o unwind.o
mca.o mca_asm.o
obj-$(CONFIG_EFI_VARS)
+=
efivars.o
obj-$(CONFIG_IA64_BRL_EMU)
+=
brl_emu.o
obj-$(CONFIG_IA64_GENERIC)
+=
acpi-ext.o
obj-$(CONFIG_IA64_HP_ZX1)
+=
acpi-ext.o
obj-$(CONFIG_IA64_MCA)
+=
mca.o mca_asm.o
obj-$(CONFIG_IA64_PALINFO)
+=
palinfo.o
obj-$(CONFIG_IOSAPIC)
+=
iosapic.o
obj-$(CONFIG_MODULES)
+=
module.o
...
...
arch/ia64/kernel/acpi.c
View file @
1963fd3f
...
...
@@ -626,6 +626,7 @@ acpi_boot_init (void)
return
0
;
}
/* deprecated in favor of acpi_gsi_to_irq */
int
acpi_irq_to_vector
(
u32
gsi
)
{
...
...
@@ -635,6 +636,23 @@ acpi_irq_to_vector (u32 gsi)
return
gsi_to_vector
(
gsi
);
}
int
acpi_gsi_to_irq
(
u32
gsi
,
unsigned
int
*
irq
)
{
int
vector
;
if
(
has_8259
&&
gsi
<
16
)
*
irq
=
isa_irq_to_vector
(
gsi
);
else
{
vector
=
gsi_to_vector
(
gsi
);
if
(
vector
==
-
1
)
return
-
1
;
*
irq
=
vector
;
}
return
0
;
}
int
acpi_register_irq
(
u32
gsi
,
u32
polarity
,
u32
trigger
)
{
...
...
arch/ia64/kernel/efi.c
View file @
1963fd3f
...
...
@@ -399,9 +399,7 @@ efi_map_pal_code (void)
int
pal_code_count
=
0
;
u64
mask
,
psr
;
u64
vaddr
;
#ifdef CONFIG_IA64_MCA
int
cpu
;
#endif
efi_map_start
=
__va
(
ia64_boot_param
->
efi_memmap
);
efi_map_end
=
efi_map_start
+
ia64_boot_param
->
efi_memmap_size
;
...
...
@@ -463,13 +461,11 @@ efi_map_pal_code (void)
ia64_set_psr
(
psr
);
/* restore psr */
ia64_srlz_i
();
#ifdef CONFIG_IA64_MCA
cpu
=
smp_processor_id
();
/* insert this TR into our list for MCA recovery purposes */
ia64_mca_tlb_list
[
cpu
].
pal_base
=
vaddr
&
mask
;
ia64_mca_tlb_list
[
cpu
].
pal_paddr
=
pte_val
(
mk_pte_phys
(
md
->
phys_addr
,
PAGE_KERNEL
));
#endif
}
}
...
...
arch/ia64/kernel/setup.c
View file @
1963fd3f
...
...
@@ -355,10 +355,8 @@ setup_arch (char **cmdline_p)
# endif
#endif
#ifdef CONFIG_IA64_MCA
/* enable IA-64 Machine Check Abort Handling */
ia64_mca_init
();
#endif
platform_setup
(
cmdline_p
);
paging_init
();
...
...
arch/ia64/kernel/smpboot.c
View file @
1963fd3f
...
...
@@ -300,9 +300,7 @@ smp_callin (void)
*/
ia64_set_kr
(
IA64_KR_IO_BASE
,
__pa
(
ia64_iobase
));
#ifdef CONFIG_IA64_MCA
ia64_mca_cmc_vector_setup
();
/* Setup vector on AP & enable */
#endif
#ifdef CONFIG_PERFMON
pfm_init_percpu
();
...
...
arch/ia64/mm/contig.c
View file @
1963fd3f
...
...
@@ -46,6 +46,8 @@ show_mem (void)
printk
(
"Free swap: %6dkB
\n
"
,
nr_swap_pages
<<
(
PAGE_SHIFT
-
10
));
i
=
max_mapnr
;
while
(
i
--
>
0
)
{
if
(
!
pfn_valid
(
i
))
continue
;
total
++
;
if
(
PageReserved
(
mem_map
+
i
))
reserved
++
;
...
...
arch/ia64/mm/discontig.c
View file @
1963fd3f
...
...
@@ -499,6 +499,8 @@ void show_mem(void)
for_each_pgdat
(
pgdat
)
{
printk
(
"Node ID: %d
\n
"
,
pgdat
->
node_id
);
for
(
i
=
0
;
i
<
pgdat
->
node_spanned_pages
;
i
++
)
{
if
(
!
ia64_pfn_valid
(
pgdat
->
node_start_pfn
+
i
))
continue
;
if
(
PageReserved
(
pgdat
->
node_mem_map
+
i
))
reserved
++
;
else
if
(
PageSwapCache
(
pgdat
->
node_mem_map
+
i
))
...
...
arch/ia64/mm/init.c
View file @
1963fd3f
...
...
@@ -279,9 +279,7 @@ ia64_mmu_init (void *my_cpu_data)
{
unsigned
long
psr
,
pta
,
impl_va_bits
;
extern
void
__init
tlb_init
(
void
);
#ifdef CONFIG_IA64_MCA
int
cpu
;
#endif
#ifdef CONFIG_DISABLE_VHPT
# define VHPT_ENABLE_BIT 0
...
...
@@ -346,7 +344,6 @@ ia64_mmu_init (void *my_cpu_data)
ia64_set_rr
(
HPAGE_REGION_BASE
,
HPAGE_SHIFT
<<
2
);
#endif
#ifdef CONFIG_IA64_MCA
cpu
=
smp_processor_id
();
/* mca handler uses cr.lid as key to pick the right entry */
...
...
@@ -360,7 +357,6 @@ ia64_mmu_init (void *my_cpu_data)
ia64_mca_tlb_list
[
cpu
].
ptce_count
[
1
]
=
local_cpu_data
->
ptce_count
[
1
];
ia64_mca_tlb_list
[
cpu
].
ptce_stride
[
0
]
=
local_cpu_data
->
ptce_stride
[
0
];
ia64_mca_tlb_list
[
cpu
].
ptce_stride
[
1
]
=
local_cpu_data
->
ptce_stride
[
1
];
#endif
}
#ifdef CONFIG_VIRTUAL_MEM_MAP
...
...
@@ -459,8 +455,11 @@ int
ia64_pfn_valid
(
unsigned
long
pfn
)
{
char
byte
;
struct
page
*
pg
=
pfn_to_page
(
pfn
);
return
__get_user
(
byte
,
(
char
*
)
pfn_to_page
(
pfn
))
==
0
;
return
(
__get_user
(
byte
,
(
char
*
)
pg
)
==
0
)
&&
((((
u64
)
pg
&
PAGE_MASK
)
==
(((
u64
)(
pg
+
1
)
-
1
)
&
PAGE_MASK
))
||
(
__get_user
(
byte
,
(
char
*
)
(
pg
+
1
)
-
1
)
==
0
));
}
EXPORT_SYMBOL
(
ia64_pfn_valid
);
...
...
arch/ia64/sn/kernel/setup.c
View file @
1963fd3f
...
...
@@ -194,10 +194,7 @@ early_sn_setup(void)
}
}
#ifdef CONFIG_IA64_MCA
extern
int
platform_intr_list
[];
#endif
extern
nasid_t
master_nasid
;
static
int
shub_1_1_found
__initdata
;
...
...
drivers/char/agp/hp-agp.c
View file @
1963fd3f
...
...
@@ -27,10 +27,6 @@
#define HP_ZX1_TCNFG 0x318
#define HP_ZX1_PDIR_BASE 0x320
/* HP ZX1 LBA registers */
#define HP_ZX1_AGP_STATUS 0x64
#define HP_ZX1_AGP_COMMAND 0x68
#define HP_ZX1_IOVA_BASE GB(1UL)
#define HP_ZX1_IOVA_SIZE GB(1UL)
#define HP_ZX1_GART_SIZE (HP_ZX1_IOVA_SIZE / 2)
...
...
@@ -39,6 +35,9 @@
#define HP_ZX1_PDIR_VALID_BIT 0x8000000000000000UL
#define HP_ZX1_IOVA_TO_PDIR(va) ((va - hp_private.iova_base) >> hp_private.io_tlb_shift)
#define AGP8X_MODE_BIT 3
#define AGP8X_MODE (1 << AGP8X_MODE_BIT)
/* AGP bridge need not be PCI device, but DRM thinks it is. */
static
struct
pci_dev
fake_bridge_dev
;
...
...
@@ -57,6 +56,7 @@ static struct gatt_mask hp_zx1_masks[] =
static
struct
_hp_private
{
volatile
u8
*
ioc_regs
;
volatile
u8
*
lba_regs
;
int
lba_cap_offset
;
u64
*
io_pdir
;
// PDIR for entire IOVA
u64
*
gatt
;
// PDIR just for GART (subset of above)
u64
gatt_entries
;
...
...
@@ -109,6 +109,7 @@ static int __init hp_zx1_ioc_shared(void)
hp
->
gatt
=
&
hp
->
io_pdir
[
HP_ZX1_IOVA_TO_PDIR
(
hp
->
gart_base
)];
if
(
hp
->
gatt
[
0
]
!=
HP_ZX1_SBA_IOMMU_COOKIE
)
{
/* Normal case when no AGP device in system */
hp
->
gatt
=
0
;
hp
->
gatt_entries
=
0
;
printk
(
KERN_ERR
PFX
"No reserved IO PDIR entry found; "
...
...
@@ -156,12 +157,13 @@ hp_zx1_ioc_owner (void)
}
static
int
__init
hp_zx1_ioc_init
(
u64
ioc_hpa
,
u64
lba_
hpa
)
hp_zx1_ioc_init
(
u64
hpa
)
{
struct
_hp_private
*
hp
=
&
hp_private
;
hp
->
ioc_regs
=
ioremap
(
ioc_hpa
,
1024
);
hp
->
lba_regs
=
ioremap
(
lba_hpa
,
256
);
hp
->
ioc_regs
=
ioremap
(
hpa
,
1024
);
if
(
!
hp
->
ioc_regs
)
return
-
ENOMEM
;
/*
* If the IOTLB is currently disabled, we can take it over.
...
...
@@ -175,6 +177,51 @@ hp_zx1_ioc_init (u64 ioc_hpa, u64 lba_hpa)
return
hp_zx1_ioc_shared
();
}
static
int
hp_zx1_lba_find_capability
(
volatile
u8
*
hpa
,
int
cap
)
{
u16
status
;
u8
pos
,
id
;
int
ttl
=
48
;
status
=
INREG16
(
hpa
,
PCI_STATUS
);
if
(
!
(
status
&
PCI_STATUS_CAP_LIST
))
return
0
;
pos
=
INREG8
(
hpa
,
PCI_CAPABILITY_LIST
);
while
(
ttl
--
&&
pos
>=
0x40
)
{
pos
&=
~
3
;
id
=
INREG8
(
hpa
,
pos
+
PCI_CAP_LIST_ID
);
if
(
id
==
0xff
)
break
;
if
(
id
==
cap
)
return
pos
;
pos
=
INREG8
(
hpa
,
pos
+
PCI_CAP_LIST_NEXT
);
}
return
0
;
}
static
int
__init
hp_zx1_lba_init
(
u64
hpa
)
{
struct
_hp_private
*
hp
=
&
hp_private
;
int
cap
;
hp
->
lba_regs
=
ioremap
(
hpa
,
256
);
if
(
!
hp
->
lba_regs
)
return
-
ENOMEM
;
hp
->
lba_cap_offset
=
hp_zx1_lba_find_capability
(
hp
->
lba_regs
,
PCI_CAP_ID_AGP
);
cap
=
INREG32
(
hp
->
lba_regs
,
hp
->
lba_cap_offset
)
&
0xff
;
if
(
cap
!=
PCI_CAP_ID_AGP
)
{
printk
(
KERN_ERR
PFX
"Invalid capability ID 0x%02x at 0x%x
\n
"
,
cap
,
hp
->
lba_cap_offset
);
return
-
ENODEV
;
}
return
0
;
}
static
int
hp_zx1_fetch_size
(
void
)
{
...
...
@@ -192,13 +239,8 @@ hp_zx1_configure (void)
struct
_hp_private
*
hp
=
&
hp_private
;
agp_bridge
->
gart_bus_addr
=
hp
->
gart_base
;
#if 0
/* ouch!! can't do that with a non-PCI AGP bridge... */
agp_bridge->capndx = pci_find_capability(agp_bridge->dev, PCI_CAP_ID_AGP);
#else
agp_bridge
->
capndx
=
0
;
#endif
agp_bridge
->
mode
=
INREG32
(
hp
->
lba_regs
,
HP_ZX1_AGP_STATUS
);
agp_bridge
->
capndx
=
hp
->
lba_cap_offset
;
agp_bridge
->
mode
=
INREG32
(
hp
->
lba_regs
,
hp
->
lba_cap_offset
+
PCI_AGP_STATUS
);
if
(
hp
->
io_pdir_owner
)
{
OUTREG64
(
hp
->
ioc_regs
,
HP_ZX1_PDIR_BASE
,
virt_to_phys
(
hp
->
io_pdir
));
...
...
@@ -217,9 +259,13 @@ hp_zx1_cleanup (void)
{
struct
_hp_private
*
hp
=
&
hp_private
;
if
(
hp
->
io_pdir_owner
)
OUTREG64
(
hp
->
ioc_regs
,
HP_ZX1_IBASE
,
0
);
iounmap
((
void
*
)
hp
->
ioc_regs
);
if
(
hp
->
ioc_regs
)
{
if
(
hp
->
io_pdir_owner
)
OUTREG64
(
hp
->
ioc_regs
,
HP_ZX1_IBASE
,
0
);
iounmap
((
void
*
)
hp
->
ioc_regs
);
}
if
(
hp
->
lba_regs
)
iounmap
((
void
*
)
hp
->
lba_regs
);
}
static
void
...
...
@@ -350,14 +396,14 @@ hp_zx1_enable (u32 mode)
struct
_hp_private
*
hp
=
&
hp_private
;
u32
command
;
command
=
INREG32
(
hp
->
lba_regs
,
HP_ZX1
_AGP_STATUS
);
command
=
INREG32
(
hp
->
lba_regs
,
hp
->
lba_cap_offset
+
PCI
_AGP_STATUS
);
command
=
agp_collect_device_status
(
mode
,
command
);
command
|=
0x00000100
;
OUTREG32
(
hp
->
lba_regs
,
HP_ZX1
_AGP_COMMAND
,
command
);
OUTREG32
(
hp
->
lba_regs
,
hp
->
lba_cap_offset
+
PCI
_AGP_COMMAND
,
command
);
agp_device_command
(
command
,
0
);
agp_device_command
(
command
,
(
mode
&
AGP8X_MODE
)
!=
0
);
}
struct
agp_bridge_driver
hp_zx1_driver
=
{
...
...
@@ -386,22 +432,32 @@ static int __init
hp_zx1_setup
(
u64
ioc_hpa
,
u64
lba_hpa
)
{
struct
agp_bridge_data
*
bridge
;
int
error
;
int
error
=
0
;
error
=
hp_zx1_ioc_init
(
ioc_hpa
);
if
(
error
)
goto
fail
;
error
=
hp_zx1_
ioc_init
(
ioc_hpa
,
lba_hpa
);
error
=
hp_zx1_
lba_init
(
lba_hpa
);
if
(
error
)
return
error
;
goto
fail
;
bridge
=
agp_alloc_bridge
();
if
(
!
bridge
)
return
-
ENOMEM
;
if
(
!
bridge
)
{
error
=
-
ENOMEM
;
goto
fail
;
}
bridge
->
driver
=
&
hp_zx1_driver
;
fake_bridge_dev
.
vendor
=
PCI_VENDOR_ID_HP
;
fake_bridge_dev
.
device
=
PCI_DEVICE_ID_HP_PCIX_LBA
;
bridge
->
dev
=
&
fake_bridge_dev
;
return
agp_add_bridge
(
bridge
);
error
=
agp_add_bridge
(
bridge
);
fail:
if
(
error
)
hp_zx1_cleanup
();
return
error
;
}
static
acpi_status
__init
...
...
@@ -416,7 +472,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
status
=
hp_acpi_csr_space
(
obj
,
&
lba_hpa
,
&
length
);
if
(
ACPI_FAILURE
(
status
))
return
AE_OK
;
return
AE_OK
;
/* keep looking for another bridge */
/* Look for an enclosing IOC scope and find its CSR space */
handle
=
obj
;
...
...
@@ -452,7 +508,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
(
char
*
)
context
,
sba_hpa
+
HP_ZX1_IOC_OFFSET
,
lba_hpa
);
hp_zx1_gart_found
=
1
;
return
AE_CTRL_TERMINATE
;
return
AE_CTRL_TERMINATE
;
/* we only support one bridge; quit looking */
}
static
int
__init
...
...
drivers/char/sn_serial.c
View file @
1963fd3f
...
...
@@ -977,7 +977,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
}
sn_func
->
sal_puts
(
s
,
count
);
}
else
else
{
/* Output '\r' before each '\n' */
while
((
s1
=
memchr
(
s
,
'\n'
,
count
))
!=
NULL
)
{
sn_sal_write
(
NULL
,
0
,
s
,
s1
-
s
);
...
...
@@ -986,6 +986,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
s
=
s1
+
1
;
}
sn_sal_write
(
NULL
,
0
,
s
,
count
);
}
}
static
struct
tty_driver
*
...
...
include/asm-ia64/acpi.h
View file @
1963fd3f
...
...
@@ -93,7 +93,8 @@ ia64_acpi_release_global_lock (unsigned int *lock)
const
char
*
acpi_get_sysname
(
void
);
int
acpi_request_vector
(
u32
int_type
);
int
acpi_register_irq
(
u32
gsi
,
u32
polarity
,
u32
trigger
);
int
acpi_irq_to_vector
(
u32
irq
);
int
acpi_irq_to_vector
(
u32
irq
);
/* deprecated in favor of acpi_gsi_to_irq */
int
acpi_gsi_to_irq
(
u32
gsi
,
unsigned
int
*
irq
);
#ifdef CONFIG_ACPI_NUMA
/* Proximity bitmap length; _PXM is at most 255 (8 bit)*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment