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
Kirill Smelkov
linux
Commits
714d25d2
Commit
714d25d2
authored
Jan 07, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
aa7b5720
683c51ac
Changes
26
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1336 additions
and
113 deletions
+1336
-113
arch/arm/configs/iq80332_defconfig
arch/arm/configs/iq80332_defconfig
+864
-0
arch/arm/mach-iop3xx/Kconfig
arch/arm/mach-iop3xx/Kconfig
+15
-2
arch/arm/mach-iop3xx/Makefile
arch/arm/mach-iop3xx/Makefile
+2
-0
arch/arm/mach-iop3xx/iop321-pci.c
arch/arm/mach-iop3xx/iop321-pci.c
+0
-8
arch/arm/mach-iop3xx/iop321-setup.c
arch/arm/mach-iop3xx/iop321-setup.c
+59
-2
arch/arm/mach-iop3xx/iop331-setup.c
arch/arm/mach-iop3xx/iop331-setup.c
+84
-8
arch/arm/mach-iop3xx/iq31244-pci.c
arch/arm/mach-iop3xx/iq31244-pci.c
+10
-12
arch/arm/mach-iop3xx/iq80321-pci.c
arch/arm/mach-iop3xx/iq80321-pci.c
+9
-24
arch/arm/mach-iop3xx/iq80332-mm.c
arch/arm/mach-iop3xx/iq80332-mm.c
+36
-0
arch/arm/mach-iop3xx/iq80332-pci.c
arch/arm/mach-iop3xx/iq80332-pci.c
+128
-0
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-ixp4xx/common.c
+37
-0
arch/arm/mach-ixp4xx/coyote-setup.c
arch/arm/mach-ixp4xx/coyote-setup.c
+2
-1
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-ixp4xx/ixdp425-setup.c
+3
-1
arch/arm/mach-ixp4xx/prpmc1100-setup.c
arch/arm/mach-ixp4xx/prpmc1100-setup.c
+3
-1
arch/arm/mm/proc-xscale.S
arch/arm/mm/proc-xscale.S
+2
-2
include/asm-arm/arch-iop3xx/entry-macro.S
include/asm-arm/arch-iop3xx/entry-macro.S
+3
-8
include/asm-arm/arch-iop3xx/hardware.h
include/asm-arm/arch-iop3xx/hardware.h
+1
-0
include/asm-arm/arch-iop3xx/iop321.h
include/asm-arm/arch-iop3xx/iop321.h
+19
-9
include/asm-arm/arch-iop3xx/iop331-irqs.h
include/asm-arm/arch-iop3xx/iop331-irqs.h
+23
-0
include/asm-arm/arch-iop3xx/iq31244.h
include/asm-arm/arch-iop3xx/iq31244.h
+0
-12
include/asm-arm/arch-iop3xx/iq80321.h
include/asm-arm/arch-iop3xx/iq80321.h
+0
-11
include/asm-arm/arch-iop3xx/iq80332.h
include/asm-arm/arch-iop3xx/iq80332.h
+23
-0
include/asm-arm/arch-iop3xx/timex.h
include/asm-arm/arch-iop3xx/timex.h
+1
-1
include/asm-arm/arch-iop3xx/uncompress.h
include/asm-arm/arch-iop3xx/uncompress.h
+5
-3
include/asm-arm/arch-ixp4xx/irqs.h
include/asm-arm/arch-ixp4xx/irqs.h
+6
-8
include/asm-arm/arch-ixp4xx/platform.h
include/asm-arm/arch-ixp4xx/platform.h
+1
-0
No files found.
arch/arm/configs/iq80332_defconfig
0 → 100644
View file @
714d25d2
This diff is collapsed.
Click to expand it.
arch/arm/mach-iop3xx/Kconfig
View file @
714d25d2
...
...
@@ -25,6 +25,13 @@ config ARCH_IQ80331
Say Y here if you want to run your kernel on the Intel IQ80331
evaluation kit for the IOP331 chipset.
config MACH_IQ80332
bool "Enable support for IQ80332"
select ARCH_IOP331
help
Say Y here if you want to run your kernel on the Intel IQ80332
evaluation kit for the IOP332 chipset
config ARCH_EP80219
bool "Enable support for EP80219"
select ARCH_IOP321
...
...
@@ -41,10 +48,16 @@ config ARCH_IOP331
bool
default ARCH_IQ80331
help
The IQ80331 uses the IOP331 variant.
The IQ80331
, IQ80332, and IQ80333
uses the IOP331 variant.
comment "IOP3xx Chipset Features"
endmenu
config IOP331_STEPD
bool "Chip stepping D of the IOP80331 processor or IOP80333"
depends on (ARCH_IOP331)
help
Say Y here if you have StepD of the IOP80331 or IOP8033
based platforms.
endmenu
endif
arch/arm/mach-iop3xx/Makefile
View file @
714d25d2
...
...
@@ -19,3 +19,5 @@ obj-$(CONFIG_ARCH_IQ80321) += iq80321-mm.o iq80321-pci.o
obj-$(CONFIG_ARCH_IQ31244)
+=
iq31244-mm.o iq31244-pci.o
obj-$(CONFIG_ARCH_IQ80331)
+=
iq80331-mm.o iq80331-pci.o
obj-$(CONFIG_MACH_IQ80332)
+=
iq80332-mm.o iq80332-pci.o
arch/arm/mach-iop3xx/iop321-pci.c
View file @
714d25d2
...
...
@@ -197,14 +197,6 @@ struct pci_bus *iop321_scan_bus(int nr, struct pci_sys_data *sys)
void
iop321_init
(
void
)
{
#if CONFIG_ARCH_EP80219
*
IOP321_ATUCR
=
0x2
;
*
IOP321_OIOWTVR
=
0x90000000
;
*
IOP321_IABAR0
=
0x00000004
;
*
IOP321_IABAR2
=
0xa000000c
;
*
IOP321_IALR2
=
0xe0000000
;
#endif
DBG
(
"PCI: Intel 80321 PCI init code.
\n
"
);
DBG
(
"
\t
ATU: IOP321_ATUCMD=0x%04x
\n
"
,
*
IOP321_ATUCMD
);
DBG
(
"
\t
ATU: IOP321_OMWTVR0=0x%04x, IOP321_OIOWTVR=0x%04x
\n
"
,
...
...
arch/arm/mach-iop3xx/iop321-setup.c
View file @
714d25d2
...
...
@@ -3,6 +3,7 @@
*
* Author: Nicolas Pitre <nico@cam.org>
* Copyright (C) 2001 MontaVista Software, Inc.
* Copyright (C) 2004 Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
...
...
@@ -40,10 +41,10 @@ static struct map_desc iop321_std_desc[] __initdata = {
/* virtual physical length type */
/* mem mapped registers */
{
IOP321_VIRT_MEM_BASE
,
IOP321_PHY_MEM_BASE
,
0x00002000
,
MT_DEVICE
},
{
IOP321_VIRT_MEM_BASE
,
IOP321_PHY
S
_MEM_BASE
,
0x00002000
,
MT_DEVICE
},
/* PCI IO space */
{
0xfe000000
,
0x90000000
,
0x00020000
,
MT_DEVICE
}
{
IOP321_PCI_LOWER_IO_VA
,
IOP321_PCI_LOWER_IO_PA
,
IOP321_PCI_IO_WINDOW_SIZE
,
MT_DEVICE
}
};
#ifdef CONFIG_ARCH_IQ80321
...
...
@@ -71,6 +72,60 @@ static struct uart_port iop321_serial_ports[] = {
}
};
static
struct
resource
iop32x_i2c_0_resources
[]
=
{
[
0
]
=
{
.
start
=
0xfffff680
,
.
end
=
0xfffff698
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_IOP321_I2C_0
,
.
end
=
IRQ_IOP321_I2C_0
,
.
flags
=
IORESOURCE_IRQ
}
};
static
struct
resource
iop32x_i2c_1_resources
[]
=
{
[
0
]
=
{
.
start
=
0xfffff6a0
,
.
end
=
0xfffff6b8
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_IOP321_I2C_1
,
.
end
=
IRQ_IOP321_I2C_1
,
.
flags
=
IORESOURCE_IRQ
}
};
static
struct
platform_device
iop32x_i2c_0_controller
=
{
.
name
=
"IOP3xx-I2C"
,
.
id
=
0
,
.
num_resources
=
2
,
.
resource
=
iop32x_i2c_0_resources
};
static
struct
platform_device
iop32x_i2c_1_controller
=
{
.
name
=
"IOP3xx-I2C"
,
.
id
=
1
,
.
num_resources
=
2
,
.
resource
=
iop32x_i2c_1_resources
};
static
struct
platform_device
*
iop32x_devices
[]
__initdata
=
{
&
iop32x_i2c_0_controller
,
&
iop32x_i2c_1_controller
};
void
__init
iop32x_init
(
void
)
{
if
(
iop_is_321
())
{
platform_add_devices
(
iop32x_devices
,
ARRAY_SIZE
(
iop32x_devices
));
}
}
void
__init
iop321_map_io
(
void
)
{
iotable_init
(
iop321_std_desc
,
ARRAY_SIZE
(
iop321_std_desc
));
...
...
@@ -97,6 +152,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")
INITIRQ
(
iop321_init_irq
)
.
timer
=
&
iop321_timer
,
BOOT_PARAMS
(
0xa0000100
)
INIT_MACHINE
(
iop32x_init
)
MACHINE_END
#elif defined(CONFIG_ARCH_IQ31244)
MACHINE_START
(
IQ31244
,
"Intel IQ31244"
)
...
...
@@ -106,6 +162,7 @@ MACHINE_START(IQ31244, "Intel IQ31244")
INITIRQ
(
iop321_init_irq
)
.
timer
=
&
iop321_timer
,
BOOT_PARAMS
(
0xa0000100
)
INIT_MACHINE
(
iop32x_init
)
MACHINE_END
#else
#error No machine descriptor defined for this IOP3XX implementation
...
...
arch/arm/mach-iop3xx/iop331-setup.c
View file @
714d25d2
...
...
@@ -12,6 +12,7 @@
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/device.h>
...
...
@@ -42,13 +43,13 @@ static struct map_desc iop331_std_desc[] __initdata = {
{
IOP331_VIRT_MEM_BASE
,
IOP331_PHYS_MEM_BASE
,
0x00002000
,
MT_DEVICE
},
/* PCI IO space */
{
0xfe000000
,
0x90000000
,
0x00020000
,
MT_DEVICE
}
{
IOP331_PCI_LOWER_IO_VA
,
IOP331_PCI_LOWER_IO_PA
,
IOP331_PCI_IO_WINDOW_SIZE
,
MT_DEVICE
}
};
static
struct
uart_port
iop331_serial_ports
[]
=
{
{
.
membase
=
(
char
*
)(
I
Q80
331_UART0_VIRT
),
.
mapbase
=
(
I
Q80
331_UART0_PHYS
),
.
membase
=
(
char
*
)(
I
OP
331_UART0_VIRT
),
.
mapbase
=
(
I
OP
331_UART0_PHYS
),
.
irq
=
IRQ_IOP331_UART0
,
.
flags
=
UPF_SKIP_TEST
,
.
iotype
=
UPIO_MEM
,
...
...
@@ -58,8 +59,8 @@ static struct uart_port iop331_serial_ports[] = {
.
type
=
PORT_XSCALE
,
.
fifosize
=
32
}
,
{
.
membase
=
(
char
*
)(
I
Q80
331_UART1_VIRT
),
.
mapbase
=
(
I
Q80
331_UART1_PHYS
),
.
membase
=
(
char
*
)(
I
OP
331_UART1_VIRT
),
.
mapbase
=
(
I
OP
331_UART1_PHYS
),
.
irq
=
IRQ_IOP331_UART1
,
.
flags
=
UPF_SKIP_TEST
,
.
iotype
=
UPIO_MEM
,
...
...
@@ -71,6 +72,60 @@ static struct uart_port iop331_serial_ports[] = {
}
};
static
struct
resource
iop33x_i2c_0_resources
[]
=
{
[
0
]
=
{
.
start
=
0xfffff680
,
.
end
=
0xfffff698
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_IOP331_I2C_0
,
.
end
=
IRQ_IOP331_I2C_0
,
.
flags
=
IORESOURCE_IRQ
}
};
static
struct
resource
iop33x_i2c_1_resources
[]
=
{
[
0
]
=
{
.
start
=
0xfffff6a0
,
.
end
=
0xfffff6b8
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_IOP331_I2C_1
,
.
end
=
IRQ_IOP331_I2C_1
,
.
flags
=
IORESOURCE_IRQ
}
};
static
struct
platform_device
iop33x_i2c_0_controller
=
{
.
name
=
"IOP3xx-I2C"
,
.
id
=
0
,
.
num_resources
=
2
,
.
resource
=
iop33x_i2c_0_resources
};
static
struct
platform_device
iop33x_i2c_1_controller
=
{
.
name
=
"IOP3xx-I2C"
,
.
id
=
1
,
.
num_resources
=
2
,
.
resource
=
iop33x_i2c_1_resources
};
static
struct
platform_device
*
iop33x_devices
[]
__initdata
=
{
&
iop33x_i2c_0_controller
,
&
iop33x_i2c_1_controller
};
void
__init
iop33x_init
(
void
)
{
if
(
iop_is_331
())
{
platform_add_devices
(
iop33x_devices
,
ARRAY_SIZE
(
iop33x_devices
));
}
}
void
__init
iop331_map_io
(
void
)
{
iotable_init
(
iop331_std_desc
,
ARRAY_SIZE
(
iop331_std_desc
));
...
...
@@ -78,22 +133,43 @@ void __init iop331_map_io(void)
early_serial_setup
(
&
iop331_serial_ports
[
1
]);
}
#ifdef CONFIG_ARCH_I
Q80
331
#ifdef CONFIG_ARCH_I
OP
331
extern
void
iop331_init_irq
(
void
);
extern
struct
sys_timer
iop331_timer
;
#endif
#ifdef CONFIG_ARCH_IQ80331
extern
void
iq80331_map_io
(
void
);
#endif
#ifdef CONFIG_MACH_IQ80332
extern
void
iq80332_map_io
(
void
);
#endif
#if defined(CONFIG_ARCH_IQ80331)
MACHINE_START
(
IQ80331
,
"Intel IQ80331"
)
MAINTAINER
(
"Intel Corp."
)
BOOT_MEM
(
PHYS_OFFSET
,
0xfefff000
,
0xfffff000
)
// virtual, physical
//BOOT_MEM(PHYS_OFFSET, I
Q80331_UART0_VIRT, IQ80
331_UART0_PHYS)
//BOOT_MEM(PHYS_OFFSET, I
OP331_UART0_VIRT, IOP
331_UART0_PHYS)
MAPIO
(
iq80331_map_io
)
INITIRQ
(
iop331_init_irq
)
.
timer
=
&
iop331_timer
,
.
timer
=
&
iop331_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
iop33x_init
)
MACHINE_END
#elif defined(CONFIG_MACH_IQ80332)
MACHINE_START
(
IQ80332
,
"Intel IQ80332"
)
MAINTAINER
(
"Intel Corp."
)
BOOT_MEM
(
PHYS_OFFSET
,
0xfefff000
,
0xfffff000
)
// virtual, physical
//BOOT_MEM(PHYS_OFFSET, IOP331_UART0_VIRT, IOP331_UART0_PHYS)
MAPIO
(
iq80332_map_io
)
INITIRQ
(
iop331_init_irq
)
.
timer
=
&
iop331_timer
,
BOOT_PARAMS
(
0x0100
)
INIT_MACHINE
(
iop33x_init
)
MACHINE_END
#else
#error No machine descriptor defined for this IOP3XX implementation
#endif
...
...
arch/arm/mach-iop3xx/iq31244-pci.c
View file @
714d25d2
...
...
@@ -5,6 +5,7 @@
*
* Author: Rory Bolt <rorybolt@pacbell.net>
* Copyright (C) 2002 Rory Bolt
* Copyright (C) 2004 Intel Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
...
...
@@ -77,28 +78,28 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
I
Q31244_PCI_IO_BASE
+
0x6e000000
;
res
[
0
].
end
=
I
Q31244_PCI_IO_BASE
+
IQ31244_PCI_IO_SIZE
-
1
+
IQ31244
_PCI_IO_OFFSET
;
res
[
0
].
start
=
I
OP321_PCI_LOWER_IO_BA
+
IOP321_PCI_IO_OFFSET
;
res
[
0
].
end
=
I
OP321_PCI_UPPER_IO_BA
+
IOP321
_PCI_IO_OFFSET
;
res
[
0
].
name
=
"IQ31244 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
I
Q31244_PCI_MEM_BASE
;
res
[
1
].
end
=
I
Q31244_PCI_MEM_BASE
+
IQ31244_PCI_MEM_SIZE
;
res
[
1
].
start
=
I
OP321_PCI_LOWER_MEM_BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
end
=
I
OP321_PCI_UPPER_MEM_BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
name
=
"IQ31244 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
request_resource
(
&
ioport_resource
,
&
res
[
0
]);
request_resource
(
&
iomem_resource
,
&
res
[
1
]);
sys
->
mem_offset
=
IOP321_PCI_MEM_OFFSET
;
sys
->
io_offset
=
IOP321_PCI_IO_OFFSET
;
sys
->
resource
[
0
]
=
&
res
[
0
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
io_offset
=
IQ31244_PCI_IO_OFFSET
;
sys
->
mem_offset
=
IQ80321_PCI_MEM_BASE
-
(
*
IOP321_IABAR1
&
PCI_BASE_ADDRESS_MEM_MASK
);
iop3xx_pcibios_min_io
=
I
Q31244_PCI_IO_BASE
;
iop3xx_pcibios_min_mem
=
I
Q31244_PCI_MEM_BASE
;
iop3xx_pcibios_min_io
=
I
OP321_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
I
OP321_PCI_LOWER_MEM_VA
;
return
1
;
}
...
...
@@ -106,9 +107,6 @@ static int iq31244_setup(int nr, struct pci_sys_data *sys)
static
void
iq31244_preinit
(
void
)
{
iop321_init
();
/* setting up the second translation window */
*
IOP321_OMWTVR1
=
IQ31244_PCI_MEM_BASE
+
0x04000000
;
*
IOP321_OUMWTVR1
=
0x0
;
}
static
struct
hw_pci
iq31244_pci
__initdata
=
{
...
...
arch/arm/mach-iop3xx/iq80321-pci.c
View file @
714d25d2
...
...
@@ -5,6 +5,7 @@
*
* Author: Rory Bolt <rorybolt@pacbell.net>
* Copyright (C) 2002 Rory Bolt
* Copyright (C) 2004 Intel Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
...
...
@@ -71,44 +72,28 @@ static int iq80321_setup(int nr, struct pci_sys_data *sys)
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
I
Q80321_PCI_IO_BASE
+
IQ80
321_PCI_IO_OFFSET
;
res
[
0
].
end
=
I
Q80321_PCI_IO_BASE
+
IQ80321_PCI_IO_SIZE
-
1
+
IQ80
321_PCI_IO_OFFSET
;
res
[
0
].
start
=
I
OP321_PCI_LOWER_IO_BA
+
IOP
321_PCI_IO_OFFSET
;
res
[
0
].
end
=
I
OP321_PCI_UPPER_IO_BA
+
IOP
321_PCI_IO_OFFSET
;
res
[
0
].
name
=
"IQ80321 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
I
Q80321_PCI_MEM_BASE
;
res
[
1
].
end
=
I
Q80321_PCI_MEM_BASE
+
IQ80321_PCI_MEM_SIZE
;
res
[
1
].
start
=
I
OP321_PCI_LOWER_MEM_BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
end
=
I
OP321_PCI_UPPER_MEM_BA
+
IOP321_PCI_MEM_OFFSET
;
res
[
1
].
name
=
"IQ80321 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
request_resource
(
&
ioport_resource
,
&
res
[
0
]);
request_resource
(
&
iomem_resource
,
&
res
[
1
]);
/*
* Since the IQ80321 is a slave card on a PCI backplane,
* it uses BAR1 to reserve a portion of PCI memory space for
* use with the private devices on the secondary bus
* (GigE and PCI-X slot). We read BAR1 and configure
* our outbound translation windows to target that
* address range and assign all devices in that
* address range. W/O this, certain BIOSes will fail
* to boot as the IQ80321 claims addresses that are
* in use by other devices.
*
* Note that the same cannot be done with I/O space,
* so hopefully the host will stick to the lower 64K for
* PCI I/O and leave us alone.
*/
sys
->
mem_offset
=
IQ80321_PCI_MEM_BASE
-
(
*
IOP321_IABAR1
&
PCI_BASE_ADDRESS_MEM_MASK
);
sys
->
mem_offset
=
IOP321_PCI_MEM_OFFSET
;
sys
->
io_offset
=
IOP321_PCI_IO_OFFSET
;
sys
->
resource
[
0
]
=
&
res
[
0
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
sys
->
io_offset
=
IQ80321_PCI_IO_OFFSET
;
iop3xx_pcibios_min_io
=
I
Q80321_PCI_IO_BASE
;
iop3xx_pcibios_min_mem
=
I
Q80321_PCI_MEM_BASE
;
iop3xx_pcibios_min_io
=
I
OP321_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
I
OP321_PCI_LOWER_MEM_VA
;
return
1
;
}
...
...
arch/arm/mach-iop3xx/iq80332-mm.c
0 → 100644
View file @
714d25d2
/*
* linux/arch/arm/mach-iop3xx/mm.c
*
* Low level memory initialization for iq80332 platform
*
* Author: Dave Jiang <dave.jiang@intel.com>
* Copyright (C) 2004 Intel Corp.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
*/
#include <linux/mm.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/mach/map.h>
#include <asm/mach-types.h>
/*
* IQ80332 specific IO mappings
*
* We use RedBoot's setup for the onboard devices.
*/
void
__init
iq80332_map_io
(
void
)
{
iop331_map_io
();
}
arch/arm/mach-iop3xx/iq80332-pci.c
0 → 100644
View file @
714d25d2
/*
* arch/arm/mach-iop3xx/iq80332-pci.c
*
* PCI support for the Intel IQ80332 reference board
*
* Author: Dave Jiang <dave.jiang@intel.com>
* Copyright (C) 2004 Intel Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/mach/pci.h>
#include <asm/mach-types.h>
/*
* The following macro is used to lookup irqs in a standard table
* format for those systems that do not already have PCI
* interrupts properly routed. We assume 1 <= pin <= 4
*/
#define PCI_IRQ_TABLE_LOOKUP(minid,maxid) \
({ int _ctl_ = -1; \
unsigned int _idsel = idsel - minid; \
if (_idsel <= maxid) \
_ctl_ = pci_irq_table[_idsel][pin-1]; \
_ctl_; })
#define INTA IRQ_IQ80332_INTA
#define INTB IRQ_IQ80332_INTB
#define INTC IRQ_IQ80332_INTC
#define INTD IRQ_IQ80332_INTD
//#define INTE IRQ_IQ80332_I82544
static
inline
int
__init
iq80332_map_irq
(
struct
pci_dev
*
dev
,
u8
idsel
,
u8
pin
)
{
static
int
pci_irq_table
[][
8
]
=
{
/*
* PCI IDSEL/INTPIN->INTLINE
* A B C D
*/
{
-
1
,
-
1
,
-
1
,
-
1
},
{
-
1
,
-
1
,
-
1
,
-
1
},
{
-
1
,
-
1
,
-
1
,
-
1
},
{
INTA
,
INTB
,
INTC
,
INTD
},
/* PCI-X Slot */
{
-
1
,
-
1
,
-
1
,
-
1
},
{
INTC
,
INTC
,
INTC
,
INTC
},
/* GigE */
{
-
1
,
-
1
,
-
1
,
-
1
},
{
-
1
,
-
1
,
-
1
,
-
1
},
};
BUG_ON
(
pin
<
1
||
pin
>
4
);
return
PCI_IRQ_TABLE_LOOKUP
(
1
,
7
);
}
static
int
iq80332_setup
(
int
nr
,
struct
pci_sys_data
*
sys
)
{
struct
resource
*
res
;
if
(
nr
!=
0
)
return
0
;
res
=
kmalloc
(
sizeof
(
struct
resource
)
*
2
,
GFP_KERNEL
);
if
(
!
res
)
panic
(
"PCI: unable to alloc resources"
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
res
[
0
].
start
=
IOP331_PCI_LOWER_IO_BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
end
=
IOP331_PCI_UPPER_IO_BA
+
IOP331_PCI_IO_OFFSET
;
res
[
0
].
name
=
"IQ80332 PCI I/O Space"
;
res
[
0
].
flags
=
IORESOURCE_IO
;
res
[
1
].
start
=
IOP331_PCI_LOWER_MEM_BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
end
=
IOP331_PCI_UPPER_MEM_BA
+
IOP331_PCI_MEM_OFFSET
;
res
[
1
].
name
=
"IQ80332 PCI Memory Space"
;
res
[
1
].
flags
=
IORESOURCE_MEM
;
request_resource
(
&
ioport_resource
,
&
res
[
0
]);
request_resource
(
&
iomem_resource
,
&
res
[
1
]);
sys
->
mem_offset
=
IOP331_PCI_MEM_OFFSET
;
sys
->
io_offset
=
IOP331_PCI_IO_OFFSET
;
sys
->
resource
[
0
]
=
&
res
[
0
];
sys
->
resource
[
1
]
=
&
res
[
1
];
sys
->
resource
[
2
]
=
NULL
;
iop3xx_pcibios_min_io
=
IOP331_PCI_LOWER_IO_VA
;
iop3xx_pcibios_min_mem
=
IOP331_PCI_LOWER_MEM_VA
;
return
1
;
}
static
void
iq80332_preinit
(
void
)
{
iop331_init
();
}
static
struct
hw_pci
iq80332_pci
__initdata
=
{
.
swizzle
=
pci_std_swizzle
,
.
nr_controllers
=
1
,
.
setup
=
iq80332_setup
,
.
scan
=
iop331_scan_bus
,
.
preinit
=
iq80332_preinit
,
.
map_irq
=
iq80332_map_irq
};
static
int
__init
iq80332_pci_init
(
void
)
{
if
(
machine_is_iq80332
())
pci_common_init
(
&
iq80332_pci
);
return
0
;
}
subsys_initcall
(
iq80332_pci_init
);
arch/arm/mach-ixp4xx/common.c
View file @
714d25d2
...
...
@@ -279,3 +279,40 @@ struct sys_timer ixp4xx_timer = {
.
init
=
ixp4xx_timer_init
,
.
offset
=
ixp4xx_gettimeoffset
,
};
static
struct
resource
ixp46x_i2c_resources
[]
=
{
[
0
]
=
{
.
start
=
0xc8011000
,
.
end
=
0xc801101c
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_IXP4XX_I2C
,
.
end
=
IRQ_IXP4XX_I2C
,
.
flags
=
IORESOURCE_IRQ
}
};
/*
* I2C controller. The IXP46x uses the same block as the IOP3xx, so
* we just use the same device name.
*/
static
struct
platform_device
ixp46x_i2c_controller
=
{
.
name
=
"IOP3xx-I2C"
,
.
id
=
0
,
.
num_resources
=
2
,
.
resource
=
&
ixp46x_i2c_resources
};
static
struct
platform_device
*
ixp46x_devices
[]
__initdata
=
{
&
ixp46x_i2c_controller
};
void
__init
ixp4xx_sys_init
(
void
)
{
if
(
cpu_is_ixp46x
())
{
platform_add_devices
(
ixp46x_devices
,
ARRAY_SIZE
(
ixp46x_devices
));
}
}
arch/arm/mach-ixp4xx/coyote-setup.c
View file @
714d25d2
...
...
@@ -89,7 +89,8 @@ static void __init coyote_init(void)
*
IXP4XX_EXP_CS0
|=
IXP4XX_FLASH_WRITABLE
;
*
IXP4XX_EXP_CS1
=
*
IXP4XX_EXP_CS0
;
platform_add_devices
(
&
coyote_devices
,
ARRAY_SIZE
(
coyote_devices
));
ixp4xx_sys_init
();
platform_add_devices
(
coyote_devices
,
ARRAY_SIZE
(
coyote_devices
));
}
#ifdef CONFIG_ARCH_ADI_COYOTE
...
...
arch/arm/mach-ixp4xx/ixdp425-setup.c
View file @
714d25d2
...
...
@@ -108,6 +108,8 @@ static struct platform_device *ixdp425_devices[] __initdata = {
static
void
__init
ixdp425_init
(
void
)
{
ixp4xx_sys_init
();
/*
* IXP465 has 32MB window
*/
...
...
@@ -115,7 +117,7 @@ static void __init ixdp425_init(void)
ixdp425_flash_resource
.
end
+=
IXDP425_FLASH_SIZE
;
}
platform_add_devices
(
&
ixdp425_devices
,
ARRAY_SIZE
(
ixdp425_devices
));
platform_add_devices
(
ixdp425_devices
,
ARRAY_SIZE
(
ixdp425_devices
));
}
MACHINE_START
(
IXDP425
,
"Intel IXDP425 Development Platform"
)
...
...
arch/arm/mach-ixp4xx/prpmc1100-setup.c
View file @
714d25d2
...
...
@@ -79,7 +79,9 @@ static struct platform_device *prpmc1100_devices[] __initdata = {
static
void
__init
prpmc1100_init
(
void
)
{
platform_add_devices
(
&
prpmc1100_devices
,
ARRAY_SIZE
(
prpmc1100_devices
));
ixp4xx_sys_init
();
platform_add_devices
(
prpmc1100_devices
,
ARRAY_SIZE
(
prpmc1100_devices
));
}
MACHINE_START
(
PRPMC1100
,
"Motorola PrPMC1100"
)
...
...
arch/arm/mm/proc-xscale.S
View file @
714d25d2
...
...
@@ -754,8 +754,8 @@ __8032x_proc_info:
.
type
__8033x_proc_info
,#
object
__8033x_proc_info
:
.
long
0x690540
9
0
.
long
0xffffff
b
0
.
long
0x690540
1
0
.
long
0xffffff
3
0
.
long
PMD_TYPE_SECT
|
\
PMD_SECT_BUFFERABLE
|
\
PMD_SECT_CACHEABLE
|
\
...
...
include/asm-arm/arch-iop3xx/entry-macro.S
View file @
714d25d2
...
...
@@ -43,16 +43,11 @@
cmp
\
irqstat
,
#
0
beq
1001
f
clz
\
irqnr
,
\
irqstat
/*
*
mov
\
base
,
#
31
*
subs
\
irqnr
,
\
base
,
\
irqnr
*/
rsbs
\
irqnr
,
\
irqnr
,#
31
@
recommend
by
RMK
rsbs
\
irqnr
,
\
irqnr
,#
31
@
recommend
by
RMK
add
\
irqnr
,
\
irqnr
,#
IRQ_IOP331_XINT8
b
1001
f
1002
:
clz
\
irqnr
,
\
irqstat
mov
\
base
,
#
31
subs
\
irqnr
,
\
base
,
\
irqnr
1002
:
clz
\
irqnr
,
\
irqstat
rsbs
\
irqnr
,
\
irqnr
,#
31
@
recommend
by
RMK
add
\
irqnr
,
\
irqnr
,#
IRQ_IOP331_DMA0_EOT
1001
:
.
endm
...
...
include/asm-arm/arch-iop3xx/hardware.h
View file @
714d25d2
...
...
@@ -52,5 +52,6 @@ extern unsigned int processor_id;
#include "iq80321.h"
#include "iq31244.h"
#include "iq80331.h"
#include "iq80332.h"
#endif
/* _ASM_ARCH_HARDWARE_H */
include/asm-arm/arch-iop3xx/iop321.h
View file @
714d25d2
...
...
@@ -5,6 +5,7 @@
*
* Author: Rory Bolt <rorybolt@pacbell.net>
* Copyright (C) 2002 Rory Bolt
* Copyright (C) 2004 Intel Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
...
...
@@ -30,21 +31,30 @@
/*
* IOP321 I/O and Mem space regions for PCI autoconfiguration
*/
#define IOP321_PCI_LOWER_IO 0x90000000
#define IOP321_PCI_UPPER_IO 0x9000ffff
#define IOP321_PCI_LOWER_MEM 0x80000000
#define IOP321_PCI_UPPER_MEM 0x83ffffff
#define IOP321_PCI_WINDOW_SIZE 64 * 0x100000
#define IOP321_PCI_IO_WINDOW_SIZE 0x10000
#define IOP321_PCI_LOWER_IO_PA 0x90000000
#define IOP321_PCI_LOWER_IO_VA 0xfe000000
#define IOP321_PCI_LOWER_IO_BA (*IOP321_OIOWTVR)
#define IOP321_PCI_UPPER_IO_PA (IOP321_PCI_LOWER_IO_PA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_IO_VA (IOP321_PCI_LOWER_IO_VA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_IO_BA (IOP321_PCI_LOWER_IO_BA + IOP321_PCI_IO_WINDOW_SIZE - 1)
#define IOP321_PCI_IO_OFFSET (IOP321_PCI_LOWER_IO_VA - IOP321_PCI_LOWER_IO_BA)
#define IOP321_PCI_MEM_WINDOW_SIZE (~*IOP321_IALR1 + 1)
#define IOP321_PCI_LOWER_MEM_PA 0x80000000
#define IOP321_PCI_LOWER_MEM_VA 0x80000000
#define IOP321_PCI_LOWER_MEM_BA (*IOP321_OMWTVR0)
#define IOP321_PCI_UPPER_MEM_PA (IOP321_PCI_LOWER_MEM_PA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_VA (IOP321_PCI_LOWER_MEM_VA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_UPPER_MEM_BA (IOP321_PCI_LOWER_MEM_BA + IOP321_PCI_MEM_WINDOW_SIZE - 1)
#define IOP321_PCI_MEM_OFFSET (IOP321_PCI_LOWER_MEM_VA - IOP321_PCI_LOWER_MEM_BA)
/*
* IOP321 chipset registers
*/
#define IOP321_VIRT_MEM_BASE 0xfeffe000
/* chip virtual mem address*/
//#define IOP321_VIRT_MEM_BASE 0xfff00000 /* chip virtual mem address*/
#define IOP321_PHY_MEM_BASE 0xffffe000
/* chip physical memory address */
#define IOP321_PHYS_MEM_BASE 0xffffe000
/* chip physical memory address */
#define IOP321_REG_ADDR(reg) (IOP321_VIRT_MEM_BASE | (reg))
/* Reserved 0x00000000 through 0x000000FF */
...
...
include/asm-arm/arch-iop3xx/iop331-irqs.h
View file @
714d25d2
...
...
@@ -91,6 +91,7 @@
#define NR_IRQS NR_IOP331_IRQS
#if defined(CONFIG_ARCH_IQ80331)
/*
* Interrupts available on the IQ80331 board
*/
...
...
@@ -110,4 +111,26 @@
#define IRQ_IQ80331_INTC IRQ_IOP331_XINT2
#define IRQ_IQ80331_INTD IRQ_IOP331_XINT3
#elif defined(CONFIG_MACH_IQ80332)
/*
* Interrupts available on the IQ80332 board
*/
/*
* On board devices
*/
#define IRQ_IQ80332_I82544 IRQ_IOP331_XINT0
#define IRQ_IQ80332_UART0 IRQ_IOP331_UART0
#define IRQ_IQ80332_UART1 IRQ_IOP331_UART1
/*
* PCI interrupts
*/
#define IRQ_IQ80332_INTA IRQ_IOP331_XINT0
#define IRQ_IQ80332_INTB IRQ_IOP331_XINT1
#define IRQ_IQ80332_INTC IRQ_IOP331_XINT2
#define IRQ_IQ80332_INTD IRQ_IOP331_XINT3
#endif
#endif // _IOP331_IRQ_H_
include/asm-arm/arch-iop3xx/iq31244.h
View file @
714d25d2
...
...
@@ -7,8 +7,6 @@
#ifndef _IQ31244_H_
#define _IQ31244_H_
#define IQ31244_RAMBASE 0xa0000000
#define IQ31244_FLASHBASE 0xf0000000
/* Flash */
#define IQ31244_FLASHSIZE 0x00800000
#define IQ31244_FLASHWIDTH 2
...
...
@@ -19,16 +17,6 @@
#define IQ31244_ROTARY_SW 0xfe8d0000
/* Rotary Switch */
#define IQ31244_BATT_STAT 0xfe8f0000
/* Battery Status */
/*
* IQ31244 PCI I/O and Mem space regions
*/
#define IQ31244_PCI_IO_BASE 0x90000000
#define IQ31244_PCI_IO_SIZE 0x00010000
#define IQ31244_PCI_MEM_BASE 0x80000000
//#define IQ31244_PCI_MEM_SIZE 0x04000000
#define IQ31244_PCI_MEM_SIZE 0x08000000
#define IQ31244_PCI_IO_OFFSET 0x6e000000
#ifndef __ASSEMBLY__
extern
void
iq31244_map_io
(
void
);
#endif
...
...
include/asm-arm/arch-iop3xx/iq80321.h
View file @
714d25d2
...
...
@@ -7,8 +7,6 @@
#ifndef _IQ80321_H_
#define _IQ80321_H_
#define IQ80321_RAMBASE 0xa0000000
#define IQ80321_FLASHBASE 0xf0000000
/* Flash */
#define IQ80321_FLASHSIZE 0x00800000
#define IQ80321_FLASHWIDTH 1
...
...
@@ -19,15 +17,6 @@
#define IQ80321_ROTARY_SW 0xfe8d0000
/* Rotary Switch */
#define IQ80321_BATT_STAT 0xfe8f0000
/* Battery Status */
/*
* IQ80321 PCI I/O and Mem space regions
*/
#define IQ80321_PCI_IO_BASE 0x90000000
#define IQ80321_PCI_IO_SIZE 0x00010000
#define IQ80321_PCI_MEM_BASE 0x80000000
#define IQ80321_PCI_MEM_SIZE 0x04000000
#define IQ80321_PCI_IO_OFFSET 0x6e000000
#ifndef __ASSEMBLY__
extern
void
iq80321_map_io
(
void
);
#endif
...
...
include/asm-arm/arch-iop3xx/iq80332.h
0 → 100644
View file @
714d25d2
/*
* linux/include/asm/arch-iop3xx/iq80332.h
*
* Intel IQ80332 evaluation board registers
*/
#ifndef _IQ80332_H_
#define _IQ80332_H_
#define IQ80332_FLASHBASE 0xc0000000
/* Flash */
#define IQ80332_FLASHSIZE 0x00800000
#define IQ80332_FLASHWIDTH 1
#define IQ80332_7SEG_1 0xce840000
/* 7-Segment MSB */
#define IQ80332_7SEG_0 0xce850000
/* 7-Segment LSB (WO) */
#define IQ80332_ROTARY_SW 0xce8d0000
/* Rotary Switch */
#define IQ80332_BATT_STAT 0xce8f0000
/* Battery Status */
#ifndef __ASSEMBLY__
extern
void
iq80332_map_io
(
void
);
#endif
#endif // _IQ80332_H_
include/asm-arm/arch-iop3xx/timex.h
View file @
714d25d2
...
...
@@ -10,7 +10,7 @@
#define CLOCK_TICK_RATE IOP321_TICK_RATE
#elif defined(CONFIG_ARCH_IQ80331)
#elif defined(CONFIG_ARCH_IQ80331)
|| defined(CONFIG_MACH_IQ80332)
#define CLOCK_TICK_RATE IOP331_TICK_RATE
...
...
include/asm-arm/arch-iop3xx/uncompress.h
View file @
714d25d2
...
...
@@ -9,8 +9,10 @@
#ifdef CONFIG_ARCH_IOP321
#define UTYPE unsigned char *
#el
se
#el
if defined(CONFIG_ARCH_IOP331)
#define UTYPE u32 *
#else
#error "Missing IOP3xx arch type def"
#endif
static
volatile
UTYPE
uart_base
;
...
...
@@ -42,8 +44,8 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
uart_base
=
(
volatile
UTYPE
)
IQ80321_UART
;
else
if
(
machine_is_iq31244
())
uart_base
=
(
volatile
UTYPE
)
IQ31244_UART
;
else
if
(
machine_is_iq80331
())
uart_base
=
(
volatile
UTYPE
)
I
Q80
331_UART0_PHYS
;
else
if
(
machine_is_iq80331
()
||
machine_is_iq80332
()
)
uart_base
=
(
volatile
UTYPE
)
I
OP
331_UART0_PHYS
;
else
uart_base
=
(
volatile
UTYPE
)
0xfe800000
;
}
...
...
include/asm-arm/arch-ixp4xx/irqs.h
View file @
714d25d2
...
...
@@ -48,14 +48,6 @@
#define IRQ_IXP4XX_GPIO12 29
#define IRQ_IXP4XX_SW_INT1 30
#define IRQ_IXP4XX_SW_INT2 31
#ifndef CONFIG_CPU_IXP46X
#define NR_IRQS 32
#else
/*
* IXP465 adds new sources
*/
#define IRQ_IXP4XX_USB_HOST 32
#define IRQ_IXP4XX_I2C 33
#define IRQ_IXP4XX_SSP 34
...
...
@@ -67,6 +59,12 @@
#define IRQ_IXP4XX_MCU_ECC 61
#define IRQ_IXP4XX_EXP_PE 62
/*
* Only first 32 sources are valid if running on IXP42x systems
*/
#ifndef CONFIG_CPU_IXP46X
#define NR_IRQS 32
#else
#define NR_IRQS 64
#endif
...
...
include/asm-arm/arch-ixp4xx/platform.h
View file @
714d25d2
...
...
@@ -60,6 +60,7 @@ struct sys_timer;
*/
extern
void
ixp4xx_map_io
(
void
);
extern
void
ixp4xx_init_irq
(
void
);
extern
void
ixp4xx_sys_init
(
void
);
extern
struct
sys_timer
ixp4xx_timer
;
extern
void
ixp4xx_pci_preinit
(
void
);
struct
pci_sys_data
;
...
...
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