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
c6c4d7bb
Commit
c6c4d7bb
authored
Oct 11, 2007
by
Bryan Wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Blackfin arch: update platform driver resource information to all board files
Signed-off-by:
Bryan Wu
<
bryan.wu@analog.com
>
parent
bbf25010
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1448 additions
and
165 deletions
+1448
-165
arch/blackfin/mach-bf533/boards/cm_bf533.c
arch/blackfin/mach-bf533/boards/cm_bf533.c
+72
-9
arch/blackfin/mach-bf533/boards/ezkit.c
arch/blackfin/mach-bf533/boards/ezkit.c
+82
-9
arch/blackfin/mach-bf533/boards/stamp.c
arch/blackfin/mach-bf533/boards/stamp.c
+102
-17
arch/blackfin/mach-bf537/boards/cm_bf537.c
arch/blackfin/mach-bf537/boards/cm_bf537.c
+75
-12
arch/blackfin/mach-bf537/boards/generic_board.c
arch/blackfin/mach-bf537/boards/generic_board.c
+342
-55
arch/blackfin/mach-bf537/boards/pnav10.c
arch/blackfin/mach-bf537/boards/pnav10.c
+34
-19
arch/blackfin/mach-bf537/boards/stamp.c
arch/blackfin/mach-bf537/boards/stamp.c
+118
-24
arch/blackfin/mach-bf548/boards/ezkit.c
arch/blackfin/mach-bf548/boards/ezkit.c
+476
-1
arch/blackfin/mach-bf561/boards/cm_bf561.c
arch/blackfin/mach-bf561/boards/cm_bf561.c
+73
-11
arch/blackfin/mach-bf561/boards/ezkit.c
arch/blackfin/mach-bf561/boards/ezkit.c
+74
-8
No files found.
arch/blackfin/mach-bf533/boards/cm_bf533.c
View file @
c6c4d7bb
...
...
@@ -34,7 +34,9 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
/*
...
...
@@ -93,7 +95,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -101,7 +103,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
},
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
2
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -110,24 +112,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
...
...
@@ -227,6 +245,43 @@ static struct platform_device isp1362_hcd_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 38
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
2
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x2030C000
,
.
end
=
0x2030C01F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2030D018
,
.
end
=
0x2030D01B
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
cm_bf533_devices
[]
__initdata
=
{
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
...
...
@@ -250,7 +305,11 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master_device
,
&
bfin_spi0_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
...
...
@@ -261,6 +320,10 @@ static int __init cm_bf533_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
...
...
arch/blackfin/mach-bf533/boards/ezkit.c
View file @
c6c4d7bb
...
...
@@ -35,7 +35,9 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
/*
...
...
@@ -50,6 +52,12 @@ static struct platform_device rtc_device = {
};
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static
struct
platform_device
bfin_fb_adv7393_device
=
{
.
name
=
"bfin-adv7393"
,
};
#endif
/*
* USB-LAN EzExtender board
* Driver needs to know address, irq and flag pin.
...
...
@@ -131,7 +139,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
2
,
/* Framework chip select. On STAMP537 it is SPISSEL2*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -143,7 +151,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -154,24 +162,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
...
...
@@ -193,13 +217,54 @@ static struct platform_device bfin_uart_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
1
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x20314020
,
.
end
=
0x2031403F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2031401C
,
.
end
=
0x2031401F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
ezkit_devices
[]
__initdata
=
{
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
&
smc91x_device
,
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master_device
,
&
bfin_spi0_device
,
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&
bfin_fb_adv7393_device
,
#endif
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
...
...
@@ -209,6 +274,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
ezkit_init
(
void
)
...
...
@@ -218,6 +287,10 @@ static int __init ezkit_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
...
...
arch/blackfin/mach-bf533/boards/stamp.c
View file @
c6c4d7bb
...
...
@@ -37,8 +37,11 @@
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h>
#endif
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
/*
* Name the Board for the /proc/cpuinfo
...
...
@@ -77,6 +80,12 @@ static struct platform_device smc91x_device = {
};
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static
struct
platform_device
bfin_fb_adv7393_device
=
{
.
name
=
"bfin-adv7393"
,
};
#endif
#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
static
struct
resource
net2272_bfin_resources
[]
=
{
{
...
...
@@ -177,7 +186,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
2
,
/* Framework chip select. On STAMP537 it is SPISSEL2*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -189,7 +198,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -200,7 +209,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
31250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
...
...
@@ -210,7 +219,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc_dummy"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
0
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -219,7 +228,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -231,16 +240,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"fxs-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
chip_select
=
3
,
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J11_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
{
.
modalias
=
"fxo-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
chip_select
=
2
,
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J19_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
...
...
@@ -250,7 +259,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad5304_spi"
,
.
max_speed_hz
=
1000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
2
,
.
platform_data
=
NULL
,
.
controller_data
=
&
ad5304_chip_info
,
...
...
@@ -259,17 +268,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
...
...
@@ -309,6 +334,43 @@ static struct platform_device bfin_sport1_uart_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
1
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x20314020
,
.
end
=
0x2031403F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2031401C
,
.
end
=
0x2031401F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
stamp_devices
[]
__initdata
=
{
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&
rtc_device
,
...
...
@@ -318,12 +380,16 @@ static struct platform_device *stamp_devices[] __initdata = {
&
smc91x_device
,
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&
bfin_fb_adv7393_device
,
#endif
#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
&
net2272_bfin_device
,
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
...
...
@@ -334,6 +400,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&
bfin_sport0_uart_device
,
&
bfin_sport1_uart_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
stamp_init
(
void
)
...
...
@@ -355,8 +425,23 @@ static int __init stamp_init(void)
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
return
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
arch_initcall
(
stamp_init
);
void
native_machine_restart
(
char
*
cmd
)
{
#if defined(CONFIG_BFIN_SHARED_FLASH_ENET)
# define BIT_TO_SET (1 << CONFIG_ENET_FLASH_PIN)
bfin_write_FIO_INEN
(
~
BIT_TO_SET
);
bfin_write_FIO_DIR
(
BIT_TO_SET
);
bfin_write_FIO_FLAG_C
(
BIT_TO_SET
);
#endif
}
arch/blackfin/mach-bf537/boards/cm_bf537.c
View file @
c6c4d7bb
...
...
@@ -35,7 +35,9 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
/*
...
...
@@ -113,7 +115,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -125,7 +127,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -136,7 +138,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
...
...
@@ -146,7 +148,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad9960-spi"
,
.
max_speed_hz
=
10000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
1
,
.
controller_data
=
&
ad9960_spi_chip_info
,
},
...
...
@@ -156,7 +158,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc_dummy"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
7
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -165,7 +167,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -174,17 +176,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
...
...
@@ -316,6 +334,43 @@ static struct platform_device bfin_mac_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 64
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
2
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x2030C000
,
.
end
=
0x2030C01F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2030D018
,
.
end
=
0x2030D01B
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
cm_bf537_devices
[]
__initdata
=
{
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&
rtc_device
,
...
...
@@ -347,7 +402,11 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master_device
,
&
bfin_spi0_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
...
...
@@ -358,6 +417,10 @@ static int __init cm_bf537_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
...
...
arch/blackfin/mach-bf537/boards/generic_board.c
View file @
c6c4d7bb
...
...
@@ -8,7 +8,7 @@
*
* Modified:
* Copyright 2005 National ICT Australia (NICTA)
* Copyright 2004-200
6
Analog Devices Inc.
* Copyright 2004-200
7
Analog Devices Inc.
*
* Bugs: Enter bugs at http://blackfin.uclinux.org/
*
...
...
@@ -34,20 +34,74 @@
#include <linux/mtd/partitions.h>
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h>
#endif
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/usb_sl811.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
#include <linux/spi/ad7877.h>
/*
* Name the Board for the /proc/cpuinfo
*/
char
*
bfin_board_name
=
"
UNKNOWN BOARD
"
;
char
*
bfin_board_name
=
"
GENERIC Board
"
;
/*
* Driver needs to know address, irq and flag pin.
*/
#define ISP1761_BASE 0x203C0000
#define ISP1761_IRQ IRQ_PF7
#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
static
struct
resource
bfin_isp1761_resources
[]
=
{
[
0
]
=
{
.
name
=
"isp1761-regs"
,
.
start
=
ISP1761_BASE
+
0x00000000
,
.
end
=
ISP1761_BASE
+
0x000fffff
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
ISP1761_IRQ
,
.
end
=
ISP1761_IRQ
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_isp1761_device
=
{
.
name
=
"isp1761"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bfin_isp1761_resources
),
.
resource
=
bfin_isp1761_resources
,
};
static
struct
platform_device
*
bfin_isp1761_devices
[]
=
{
&
bfin_isp1761_device
,
};
int
__init
bfin_isp1761_init
(
void
)
{
unsigned
int
num_devices
=
ARRAY_SIZE
(
bfin_isp1761_devices
);
printk
(
KERN_INFO
"%s(): registering device resources
\n
"
,
__FUNCTION__
);
set_irq_type
(
ISP1761_IRQ
,
IRQF_TRIGGER_FALLING
);
return
platform_add_devices
(
bfin_isp1761_devices
,
num_devices
);
}
void
__exit
bfin_isp1761_exit
(
void
)
{
platform_device_unregister
(
&
bfin_isp1761_device
);
}
arch_initcall
(
bfin_isp1761_init
);
#endif
#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
static
struct
resource
bfin_pcmcia_cf_resources
[]
=
{
{
...
...
@@ -58,10 +112,6 @@ static struct resource bfin_pcmcia_cf_resources[] = {
.
start
=
0x20311000
,
/* Attribute Memory */
.
end
=
0x20311FFF
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_PROG_INTA
,
.
end
=
IRQ_PROG_INTA
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_LOWLEVEL
,
},
{
.
start
=
IRQ_PF4
,
.
end
=
IRQ_PF4
,
...
...
@@ -96,14 +146,7 @@ static struct resource smc91x_resources[] = {
.
end
=
0x20300300
+
16
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_PROG_INTB
,
.
end
=
IRQ_PROG_INTB
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
{
/*
* denotes the flag pin and is used directly if
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
*/
.
start
=
IRQ_PF7
,
.
end
=
IRQ_PF7
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
...
...
@@ -117,6 +160,28 @@ static struct platform_device smc91x_device = {
};
#endif
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
static
struct
resource
dm9000_resources
[]
=
{
[
0
]
=
{
.
start
=
0x203FB800
,
.
end
=
0x203FB800
+
8
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_PF9
,
.
end
=
IRQ_PF9
,
.
flags
=
(
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHEDGE
),
},
};
static
struct
platform_device
dm9000_device
=
{
.
name
=
"dm9000"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
dm9000_resources
),
.
resource
=
dm9000_resources
,
};
#endif
#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
static
struct
resource
sl811_hcd_resources
[]
=
{
{
...
...
@@ -128,12 +193,8 @@ static struct resource sl811_hcd_resources[] = {
.
end
=
0x20340004
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_PROG_INTA
,
.
end
=
IRQ_PROG_INTA
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
{
.
start
=
IRQ_PF0
+
CONFIG_USB_SL811_BFIN_GPIO
,
.
end
=
IRQ_PF0
+
CONFIG_USB_SL811_BFIN_GPIO
,
.
start
=
CONFIG_USB_SL811_BFIN_IRQ
,
.
end
=
CONFIG_USB_SL811_BFIN_IRQ
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
};
...
...
@@ -141,15 +202,13 @@ static struct resource sl811_hcd_resources[] = {
#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
void
sl811_port_power
(
struct
device
*
dev
,
int
is_on
)
{
unsigned
short
mask
=
(
1
<<
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
bfin_write_PORT_FER
(
bfin_read_PORT_FER
()
&
~
mask
);
bfin_write_FIO_DIR
(
bfin_read_FIO_DIR
()
|
mask
);
gpio_request
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
"usb:SL811_VBUS"
);
gpio_direction_output
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
if
(
is_on
)
bfin_write_FIO_FLAG_S
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
1
);
else
bfin_write_FIO_FLAG_C
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
0
);
}
#endif
...
...
@@ -170,7 +229,6 @@ static struct platform_device sl811_hcd_device = {
.
num_resources
=
ARRAY_SIZE
(
sl811_hcd_resources
),
.
resource
=
sl811_hcd_resources
,
};
#endif
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
...
...
@@ -184,13 +242,9 @@ static struct resource isp1362_hcd_resources[] = {
.
end
=
0x20360004
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_PROG_INTA
,
.
end
=
IRQ_PROG_INTA
,
.
start
=
CONFIG_USB_ISP1362_BFIN_GPIO_IRQ
,
.
end
=
CONFIG_USB_ISP1362_BFIN_GPIO_IRQ
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
{
.
start
=
IRQ_PF0
+
CONFIG_USB_ISP1362_BFIN_GPIO
,
.
end
=
IRQ_PF0
+
CONFIG_USB_ISP1362_BFIN_GPIO
,
.
flags
=
IORESOURCE_IRQ
,
},
};
...
...
@@ -246,7 +300,8 @@ static struct platform_device net2272_bfin_device = {
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
/* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
#if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE)
static
struct
mtd_partition
bfin_spi_flash_partitions
[]
=
{
{
.
name
=
"bootloader"
,
...
...
@@ -302,70 +357,198 @@ static struct bfin5xx_spi_chip ad9960_spi_chip_info = {
};
#endif
#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
static
struct
bfin5xx_spi_chip
spi_mmc_chip_info
=
{
.
enable_dma
=
1
,
.
bits_per_word
=
8
,
};
#endif
#if defined(CONFIG_PBX)
static
struct
bfin5xx_spi_chip
spi_si3xxx_chip_info
=
{
.
ctl_reg
=
0x4
,
/* send zero */
.
enable_dma
=
0
,
.
bits_per_word
=
8
,
.
cs_change_per_word
=
1
,
};
#endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
static
struct
bfin5xx_spi_chip
ad5304_chip_info
=
{
.
enable_dma
=
0
,
.
bits_per_word
=
16
,
};
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static
struct
bfin5xx_spi_chip
spi_ad7877_chip_info
=
{
.
enable_dma
=
0
,
.
bits_per_word
=
16
,
};
static
const
struct
ad7877_platform_data
bfin_ad7877_ts_info
=
{
.
model
=
7877
,
.
vref_delay_usecs
=
50
,
/* internal, no capacitor */
.
x_plate_ohms
=
419
,
.
y_plate_ohms
=
486
,
.
pressure_max
=
1000
,
.
pressure_min
=
0
,
.
stopacq_polarity
=
1
,
.
first_conversion_delay
=
3
,
.
acquisition_time
=
1
,
.
averaging
=
1
,
.
pen_down_acc_interval
=
1
,
};
#endif
static
struct
spi_board_info
bfin_spi_board_info
[]
__initdata
=
{
#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
#if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE)
{
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
chip_select
=
2
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
.
mode
=
SPI_MODE_3
,
},
#endif
#if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE)
#if defined(CONFIG_SPI_ADC_BF533) \
|| defined(CONFIG_SPI_ADC_BF533_MODULE)
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
},
#endif
#if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
#if defined(CONFIG_SND_BLACKFIN_AD1836) \
|| defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
#endif
#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
{
.
modalias
=
"ad9960-spi"
,
.
max_speed_hz
=
10000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
1
,
.
controller_data
=
&
ad9960_spi_chip_info
,
},
#endif
#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
{
.
modalias
=
"spi_mmc_dummy"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
0
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
.
mode
=
SPI_MODE_3
,
},
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
.
mode
=
SPI_MODE_3
,
},
#endif
#if defined(CONFIG_PBX)
{
.
modalias
=
"fxs-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J11_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
{
.
modalias
=
"fxo-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J19_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
#endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
{
.
modalias
=
"ad5304_spi"
,
.
max_speed_hz
=
1250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
2
,
.
platform_data
=
NULL
,
.
controller_data
=
&
ad5304_chip_info
,
.
mode
=
SPI_MODE_2
,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
{
.
modalias
=
"ad7877"
,
.
platform_data
=
&
bfin_ad7877_ts_info
,
.
irq
=
IRQ_PF6
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
chip_select
=
1
,
.
controller_data
=
&
spi_ad7877_chip_info
,
},
#endif
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
static
struct
platform_device
bfin_fb_device
=
{
.
name
=
"bf537-fb"
,
.
name
=
"bf537-lq035"
,
};
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static
struct
platform_device
bfin_fb_adv7393_device
=
{
.
name
=
"bfin-adv7393"
,
};
#endif
...
...
@@ -390,15 +573,86 @@ static struct platform_device bfin_uart_device = {
};
#endif
static
struct
platform_device
*
stamp_devices
[]
__initdata
=
{
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&
rtc_device
,
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
static
struct
resource
bfin_twi0_resource
[]
=
{
[
0
]
=
{
.
start
=
TWI0_REGBASE
,
.
end
=
TWI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_TWI
,
.
end
=
IRQ_TWI
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
i2c_bfin_twi_device
=
{
.
name
=
"i2c-bfin-twi"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bfin_twi0_resource
),
.
resource
=
bfin_twi0_resource
,
};
#endif
#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
static
struct
platform_device
bfin_sport0_uart_device
=
{
.
name
=
"bfin-sport-uart"
,
.
id
=
0
,
};
static
struct
platform_device
bfin_sport1_uart_device
=
{
.
name
=
"bfin-sport-uart"
,
.
id
=
1
,
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
1
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x20314020
,
.
end
=
0x2031403F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2031401C
,
.
end
=
0x2031401F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
stamp_devices
[]
__initdata
=
{
#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
&
bfin_pcmcia_cf_device
,
#endif
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&
rtc_device
,
#endif
#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
&
sl811_hcd_device
,
#endif
...
...
@@ -411,6 +665,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&
smc91x_device
,
#endif
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
&
dm9000_device
,
#endif
#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
&
bfin_mac_device
,
#endif
...
...
@@ -420,16 +678,33 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
&
bfin_fb_device
,
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&
bfin_fb_adv7393_device
,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
#endif
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
&
i2c_bfin_twi_device
,
#endif
#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
&
bfin_sport0_uart_device
,
&
bfin_sport1_uart_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
stamp_init
(
void
)
...
...
@@ -437,9 +712,21 @@ static int __init stamp_init(void)
printk
(
KERN_INFO
"%s(): registering device resources
\n
"
,
__FUNCTION__
);
platform_add_devices
(
stamp_devices
,
ARRAY_SIZE
(
stamp_devices
));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
arch_initcall
(
stamp_init
);
void
native_machine_restart
(
char
*
cmd
)
{
/* workaround reboot hang when booting from SPI */
if
((
bfin_read_SYSCR
()
&
0x7
)
==
0x3
)
bfin_gpio_reset_spi0_ssel1
();
}
arch/blackfin/mach-bf537/boards/pnav10.c
View file @
c6c4d7bb
...
...
@@ -38,6 +38,7 @@
#include <linux/usb_isp1362.h>
#endif
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
#include <linux/usb_sl811.h>
...
...
@@ -130,15 +131,13 @@ static struct resource sl811_hcd_resources[] = {
#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
void
sl811_port_power
(
struct
device
*
dev
,
int
is_on
)
{
unsigned
short
mask
=
(
1
<<
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
bfin_write_PORT_FER
(
bfin_read_PORT_FER
()
&
~
mask
);
bfin_write_FIO_DIR
(
bfin_read_FIO_DIR
()
|
mask
);
gpio_request
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
"usb:SL811_VBUS"
);
gpio_direction_output
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
if
(
is_on
)
bfin_write_FIO_FLAG_S
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
1
);
else
bfin_write_FIO_FLAG_C
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
0
);
}
#endif
...
...
@@ -323,7 +322,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -336,7 +335,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -348,7 +347,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
...
...
@@ -357,7 +356,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad9960-spi"
,
.
max_speed_hz
=
10000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
1
,
.
controller_data
=
&
ad9960_spi_chip_info
,
},
...
...
@@ -366,7 +365,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc_dummy"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
7
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -375,7 +374,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -396,24 +395,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
static
struct
platform_device
bfin_fb_device
=
{
.
name
=
"bf537-
fb
"
,
.
name
=
"bf537-
lq035
"
,
};
#endif
...
...
@@ -469,7 +484,7 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
...
...
arch/blackfin/mach-bf537/boards/stamp.c
View file @
c6c4d7bb
...
...
@@ -37,10 +37,13 @@
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h>
#endif
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/usb_sl811.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
#include <linux/spi/ad7877.h>
/*
...
...
@@ -199,15 +202,13 @@ static struct resource sl811_hcd_resources[] = {
#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
void
sl811_port_power
(
struct
device
*
dev
,
int
is_on
)
{
unsigned
short
mask
=
(
1
<<
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
bfin_write_PORT_FER
(
bfin_read_PORT_FER
()
&
~
mask
);
bfin_write_FIO_DIR
(
bfin_read_FIO_DIR
()
|
mask
);
gpio_request
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
"usb:SL811_VBUS"
);
gpio_direction_output
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
);
if
(
is_on
)
bfin_write_FIO_FLAG_S
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
1
);
else
bfin_write_FIO_FLAG_C
(
mask
);
gpio_set_value
(
CONFIG_USB_SL811_BFIN_GPIO_VBUS
,
0
);
}
#endif
...
...
@@ -407,7 +408,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -420,7 +421,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -432,7 +433,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
...
...
@@ -441,7 +442,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad9960-spi"
,
.
max_speed_hz
=
10000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
1
,
.
controller_data
=
&
ad9960_spi_chip_info
,
},
...
...
@@ -450,7 +451,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc_dummy"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
0
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -459,7 +460,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -470,16 +471,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"fxs-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
chip_select
=
3
,
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J11_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
{
.
modalias
=
"fxo-spi"
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
chip_select
=
2
,
.
bus_num
=
0
,
.
chip_select
=
8
-
CONFIG_J19_JUMPER
,
.
controller_data
=
&
spi_si3xxx_chip_info
,
.
mode
=
SPI_MODE_3
,
},
...
...
@@ -488,7 +489,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad5304_spi"
,
.
max_speed_hz
=
1250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
2
,
.
platform_data
=
NULL
,
.
controller_data
=
&
ad5304_chip_info
,
...
...
@@ -509,23 +510,45 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
static
struct
platform_device
bfin_fb_device
=
{
.
name
=
"bf537-fb"
,
.
name
=
"bf537-lq035"
,
};
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static
struct
platform_device
bfin_fb_adv7393_device
=
{
.
name
=
"bfin-adv7393"
,
};
#endif
...
...
@@ -551,9 +574,24 @@ static struct platform_device bfin_uart_device = {
#endif
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
static
struct
resource
bfin_twi0_resource
[]
=
{
[
0
]
=
{
.
start
=
TWI0_REGBASE
,
.
end
=
TWI0_REGBASE
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_TWI
,
.
end
=
IRQ_TWI
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
i2c_bfin_twi_device
=
{
.
name
=
"i2c-bfin-twi"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bfin_twi0_resource
),
.
resource
=
bfin_twi0_resource
,
};
#endif
...
...
@@ -569,6 +607,43 @@ static struct platform_device bfin_sport1_uart_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
1
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x20314020
,
.
end
=
0x2031403F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2031401C
,
.
end
=
0x2031401F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
stamp_devices
[]
__initdata
=
{
#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
&
bfin_pcmcia_cf_device
,
...
...
@@ -603,13 +678,17 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
&
bfin_fb_device
,
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&
bfin_fb_adv7393_device
,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
#endif
...
...
@@ -622,6 +701,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&
bfin_sport0_uart_device
,
&
bfin_sport1_uart_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
stamp_init
(
void
)
...
...
@@ -632,7 +715,18 @@ static int __init stamp_init(void)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
arch_initcall
(
stamp_init
);
void
native_machine_restart
(
char
*
cmd
)
{
/* workaround reboot hang when booting from SPI */
if
((
bfin_read_SYSCR
()
&
0x7
)
==
0x3
)
bfin_gpio_reset_spi0_ssel1
();
}
arch/blackfin/mach-bf548/boards/ezkit.c
View file @
c6c4d7bb
...
...
@@ -35,9 +35,16 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/irq.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/usb/musb.h>
#include <asm/bfin5xx_spi.h>
#include <asm/cplb.h>
#include <asm/dma.h>
#include <asm/gpio.h>
#include <asm/nand.h>
#include <asm/mach/bf54x_keys.h>
#include <linux/input.h>
#include <linux/spi/ad7877.h>
/*
* Name the Board for the /proc/cpuinfo
...
...
@@ -48,6 +55,88 @@ char *bfin_board_name = "ADSP-BF548-EZKIT";
* Driver needs to know address, irq and flag pin.
*/
#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE)
#include <asm/mach/bf54x-lq043.h>
static
struct
bfin_bf54xfb_mach_info
bf54x_lq043_data
=
{
.
width
=
480
,
.
height
=
272
,
.
xres
=
{
480
,
480
,
480
},
.
yres
=
{
272
,
272
,
272
},
.
bpp
=
{
24
,
24
,
24
},
.
disp
=
GPIO_PE3
,
};
static
struct
resource
bf54x_lq043_resources
[]
=
{
{
.
start
=
IRQ_EPPI0_ERR
,
.
end
=
IRQ_EPPI0_ERR
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bf54x_lq043_device
=
{
.
name
=
"bf54x-lq043"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bf54x_lq043_resources
),
.
resource
=
bf54x_lq043_resources
,
.
dev
=
{
.
platform_data
=
&
bf54x_lq043_data
,
},
};
#endif
#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
static
int
bf548_keymap
[]
=
{
KEYVAL
(
0
,
0
,
KEY_ENTER
),
KEYVAL
(
0
,
1
,
KEY_HELP
),
KEYVAL
(
0
,
2
,
KEY_0
),
KEYVAL
(
0
,
3
,
KEY_BACKSPACE
),
KEYVAL
(
1
,
0
,
KEY_TAB
),
KEYVAL
(
1
,
1
,
KEY_9
),
KEYVAL
(
1
,
2
,
KEY_8
),
KEYVAL
(
1
,
3
,
KEY_7
),
KEYVAL
(
2
,
0
,
KEY_DOWN
),
KEYVAL
(
2
,
1
,
KEY_6
),
KEYVAL
(
2
,
2
,
KEY_5
),
KEYVAL
(
2
,
3
,
KEY_4
),
KEYVAL
(
3
,
0
,
KEY_UP
),
KEYVAL
(
3
,
1
,
KEY_3
),
KEYVAL
(
3
,
2
,
KEY_2
),
KEYVAL
(
3
,
3
,
KEY_1
),
};
static
struct
bfin_kpad_platform_data
bf54x_kpad_data
=
{
.
rows
=
4
,
.
cols
=
4
,
.
keymap
=
bf548_keymap
,
.
keymapsize
=
ARRAY_SIZE
(
bf548_keymap
),
.
repeat
=
0
,
.
debounce_time
=
5000
,
/* ns (5ms) */
.
coldrive_time
=
1000
,
/* ns (1ms) */
.
keyup_test_interval
=
50
,
/* ms (50ms) */
};
static
struct
resource
bf54x_kpad_resources
[]
=
{
{
.
start
=
IRQ_KEY
,
.
end
=
IRQ_KEY
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bf54x_kpad_device
=
{
.
name
=
"bf54x-keys"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bf54x_kpad_resources
),
.
resource
=
bf54x_kpad_resources
,
.
dev
=
{
.
platform_data
=
&
bf54x_kpad_data
,
},
};
#endif
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
static
struct
platform_device
rtc_device
=
{
.
name
=
"rtc-bfin"
,
...
...
@@ -94,6 +183,344 @@ static struct platform_device bfin_uart_device = {
};
#endif
#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
static
struct
resource
smsc911x_resources
[]
=
{
{
.
name
=
"smsc911x-memory"
,
.
start
=
0x24000000
,
.
end
=
0x24000000
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_PE8
,
.
end
=
IRQ_PE8
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_LOWLEVEL
,
},
};
static
struct
platform_device
smsc911x_device
=
{
.
name
=
"smsc911x"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
smsc911x_resources
),
.
resource
=
smsc911x_resources
,
};
#endif
#if defined(CONFIG_USB_BF54x_HCD) || defined(CONFIG_USB_BF54x_HCD_MODULE)
static
struct
resource
bf54x_hcd_resources
[]
=
{
{
.
start
=
0xFFC03C00
,
.
end
=
0xFFC040FF
,
.
flags
=
IORESOURCE_MEM
,
},
};
static
struct
platform_device
bf54x_hcd
=
{
.
name
=
"bf54x-hcd"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bf54x_hcd_resources
),
.
resource
=
bf54x_hcd_resources
,
};
#endif
#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
static
struct
resource
musb_resources
[]
=
{
[
0
]
=
{
.
start
=
0xFFC03C00
,
.
end
=
0xFFC040FF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
/* general IRQ */
.
start
=
IRQ_USB_INT0
,
.
end
=
IRQ_USB_INT0
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
[
2
]
=
{
/* DMA IRQ */
.
start
=
IRQ_USB_DMA
,
.
end
=
IRQ_USB_DMA
,
.
flags
=
IORESOURCE_IRQ
|
IORESOURCE_IRQ_HIGHLEVEL
,
},
};
static
struct
musb_hdrc_platform_data
musb_plat
=
{
#ifdef CONFIG_USB_MUSB_OTG
.
mode
=
MUSB_OTG
,
#elif CONFIG_USB_MUSB_HDRC_HCD
.
mode
=
MUSB_HOST
,
#elif CONFIG_USB_GADGET_MUSB_HDRC
.
mode
=
MUSB_PERIPHERAL
,
#endif
.
multipoint
=
1
,
};
static
u64
musb_dmamask
=
~
(
u32
)
0
;
static
struct
platform_device
musb_device
=
{
.
name
=
"musb_hdrc"
,
.
id
=
0
,
.
dev
=
{
.
dma_mask
=
&
musb_dmamask
,
.
coherent_dma_mask
=
0xffffffff
,
.
platform_data
=
&
musb_plat
,
},
.
num_resources
=
ARRAY_SIZE
(
musb_resources
),
.
resource
=
musb_resources
,
};
#endif
#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
static
struct
resource
bfin_atapi_resources
[]
=
{
{
.
start
=
0xFFC03800
,
.
end
=
0xFFC0386F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_ATAPI_ERR
,
.
end
=
IRQ_ATAPI_ERR
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_atapi_device
=
{
.
name
=
"pata-bf54x"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_atapi_resources
),
.
resource
=
bfin_atapi_resources
,
};
#endif
#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
static
struct
mtd_partition
partition_info
[]
=
{
{
.
name
=
"Linux Kernel"
,
.
offset
=
0
,
.
size
=
4
*
SIZE_1M
,
},
{
.
name
=
"File System"
,
.
offset
=
4
*
SIZE_1M
,
.
size
=
(
256
-
4
)
*
SIZE_1M
,
},
};
static
struct
bf5xx_nand_platform
bf5xx_nand_platform
=
{
.
page_size
=
NFC_PG_SIZE_256
,
.
data_width
=
NFC_NWIDTH_8
,
.
partitions
=
partition_info
,
.
nr_partitions
=
ARRAY_SIZE
(
partition_info
),
.
rd_dly
=
3
,
.
wr_dly
=
3
,
};
static
struct
resource
bf5xx_nand_resources
[]
=
{
{
.
start
=
0xFFC03B00
,
.
end
=
0xFFC03B4F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
CH_NFC
,
.
end
=
CH_NFC
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bf5xx_nand_device
=
{
.
name
=
"bf5xx-nand"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bf5xx_nand_resources
),
.
resource
=
bf5xx_nand_resources
,
.
dev
=
{
.
platform_data
=
&
bf5xx_nand_platform
,
},
};
#endif
#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN)
static
struct
platform_device
bf54x_sdh_device
=
{
.
name
=
"bfin-sdh"
,
.
id
=
0
,
};
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
/* all SPI peripherals info goes here */
#if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE)
/* SPI flash chip (m25p16) */
static
struct
mtd_partition
bfin_spi_flash_partitions
[]
=
{
{
.
name
=
"bootloader"
,
.
size
=
0x00040000
,
.
offset
=
0
,
.
mask_flags
=
MTD_CAP_ROM
},
{
.
name
=
"linux kernel"
,
.
size
=
0x1c0000
,
.
offset
=
0x40000
}
};
static
struct
flash_platform_data
bfin_spi_flash_data
=
{
.
name
=
"m25p80"
,
.
parts
=
bfin_spi_flash_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
bfin_spi_flash_partitions
),
.
type
=
"m25p16"
,
};
static
struct
bfin5xx_spi_chip
spi_flash_chip_info
=
{
.
enable_dma
=
0
,
/* use dma transfer with this chip*/
.
bits_per_word
=
8
,
.
cs_change_per_word
=
0
,
};
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static
struct
bfin5xx_spi_chip
spi_ad7877_chip_info
=
{
.
cs_change_per_word
=
1
,
.
enable_dma
=
0
,
.
bits_per_word
=
16
,
};
static
const
struct
ad7877_platform_data
bfin_ad7877_ts_info
=
{
.
model
=
7877
,
.
vref_delay_usecs
=
50
,
/* internal, no capacitor */
.
x_plate_ohms
=
419
,
.
y_plate_ohms
=
486
,
.
pressure_max
=
1000
,
.
pressure_min
=
0
,
.
stopacq_polarity
=
1
,
.
first_conversion_delay
=
3
,
.
acquisition_time
=
1
,
.
averaging
=
1
,
.
pen_down_acc_interval
=
1
,
};
#endif
static
struct
spi_board_info
bf54x_spi_board_info
[]
__initdata
=
{
#if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE)
{
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* SPI_SSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
.
mode
=
SPI_MODE_3
,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
{
.
modalias
=
"ad7877"
,
.
platform_data
=
&
bfin_ad7877_ts_info
,
.
irq
=
IRQ_PJ11
,
.
max_speed_hz
=
12500000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
0
,
.
chip_select
=
2
,
.
controller_data
=
&
spi_ad7877_chip_info
,
},
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI0
,
.
end
=
CH_SPI0
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI (1) */
static
struct
resource
bfin_spi1_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI1_REGBASE
,
.
end
=
SPI1_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI1
,
.
end
=
CH_SPI1
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
bf54x_spi_master_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
bf54x_spi_master0
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
bf54x_spi_master_info
,
/* Passed to driver */
},
};
static
struct
platform_device
bf54x_spi_master1
=
{
.
name
=
"bfin-spi"
,
.
id
=
1
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi1_resource
),
.
resource
=
bfin_spi1_resource
,
.
dev
=
{
.
platform_data
=
&
bf54x_spi_master_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
static
struct
resource
bfin_twi0_resource
[]
=
{
[
0
]
=
{
.
start
=
TWI0_REGBASE
,
.
end
=
TWI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_TWI0
,
.
end
=
IRQ_TWI0
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
i2c_bfin_twi0_device
=
{
.
name
=
"i2c-bfin-twi"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
bfin_twi0_resource
),
.
resource
=
bfin_twi0_resource
,
};
static
struct
resource
bfin_twi1_resource
[]
=
{
[
0
]
=
{
.
start
=
TWI1_REGBASE
,
.
end
=
TWI1_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_TWI1
,
.
end
=
IRQ_TWI1
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
i2c_bfin_twi1_device
=
{
.
name
=
"i2c-bfin-twi"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_twi1_resource
),
.
resource
=
bfin_twi1_resource
,
};
#endif
static
struct
platform_device
*
ezkit_devices
[]
__initdata
=
{
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&
rtc_device
,
...
...
@@ -102,12 +529,60 @@ static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
#endif
#if defined(CONFIG_FB_BF54X_LQ043) || defined(CONFIG_FB_BF54X_LQ043_MODULE)
&
bf54x_lq043_device
,
#endif
#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
&
smsc911x_device
,
#endif
#if defined(CONFIG_USB_BF54x_HCD) || defined(CONFIG_USB_BF54x_HCD_MODULE)
&
bf54x_hcd
,
#endif
#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
&
musb_device
,
#endif
#if defined(CONFIG_PATA_BF54X) || defined(CONFIG_PATA_BF54X_MODULE)
&
bfin_atapi_device
,
#endif
#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
&
bf5xx_nand_device
,
#endif
#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN)
&
bf54x_sdh_device
,
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
bf54x_spi_master0
,
/* &bf54x_spi_master1,*/
#endif
#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
&
bf54x_kpad_device
,
#endif
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
&
i2c_bfin_twi0_device
,
&
i2c_bfin_twi1_device
,
#endif
};
static
int
__init
stamp_init
(
void
)
{
printk
(
KERN_INFO
"%s(): registering device resources
\n
"
,
__FUNCTION__
);
platform_add_devices
(
ezkit_devices
,
ARRAY_SIZE
(
ezkit_devices
));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bf54x_spi_board_info
,
ARRAY_SIZE
(
bf54x_spi_board_info
));
#endif
return
0
;
}
...
...
arch/blackfin/mach-bf561/boards/cm_bf561.c
View file @
c6c4d7bb
...
...
@@ -34,7 +34,9 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
/*
...
...
@@ -112,7 +114,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */
.
modalias
=
"m25p80"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. On STAMP537 it is SPISSEL1*/
.
platform_data
=
&
bfin_spi_flash_data
,
.
controller_data
=
&
spi_flash_chip_info
,
...
...
@@ -124,7 +126,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"bfin_spi_adc"
,
/* Name of spi_driver for this device */
.
max_speed_hz
=
6250000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
/* Framework bus number */
.
bus_num
=
0
,
/* Framework bus number */
.
chip_select
=
1
,
/* Framework chip select. */
.
platform_data
=
NULL
,
/* No spi_driver specific config */
.
controller_data
=
&
spi_adc_chip_info
,
...
...
@@ -135,7 +137,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
...
...
@@ -144,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad9960-spi"
,
.
max_speed_hz
=
10000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
1
,
.
controller_data
=
&
ad9960_spi_chip_info
,
},
...
...
@@ -153,7 +155,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"spi_mmc"
,
.
max_speed_hz
=
25000000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SPI_MMC_CS_CHAN
,
.
platform_data
=
NULL
,
.
controller_data
=
&
spi_mmc_chip_info
,
...
...
@@ -162,17 +164,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif
};
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
#endif
/* spi master and devices */
...
...
@@ -256,6 +274,43 @@ static struct platform_device bfin_uart_device = {
};
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 119
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
2
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x2400C000
,
.
end
=
0x2400C001F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2400D018
,
.
end
=
0x2400D01B
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
cm_bf561_devices
[]
__initdata
=
{
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
...
...
@@ -271,9 +326,12 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
cm_bf561_init
(
void
)
...
...
@@ -283,6 +341,10 @@ static int __init cm_bf561_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
...
...
arch/blackfin/mach-bf561/boards/ezkit.c
View file @
c6c4d7bb
...
...
@@ -32,6 +32,8 @@
#include <linux/spi/spi.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/pata_platform.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
/*
...
...
@@ -140,17 +142,33 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
#endif
#endif
/* SPI (0) */
static
struct
resource
bfin_spi0_resource
[]
=
{
[
0
]
=
{
.
start
=
SPI0_REGBASE
,
.
end
=
SPI0_REGBASE
+
0xFF
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
CH_SPI
,
.
end
=
CH_SPI
,
.
flags
=
IORESOURCE_IRQ
,
}
};
/* SPI controller data */
static
struct
bfin5xx_spi_master
spi_bfin_master
_info
=
{
static
struct
bfin5xx_spi_master
bfin_spi0
_info
=
{
.
num_chipselect
=
8
,
.
enable_dma
=
1
,
/* master has the ability to do dma transfer */
};
static
struct
platform_device
spi_bfin_master_device
=
{
.
name
=
"bfin-spi-master"
,
.
id
=
1
,
/* Bus number */
static
struct
platform_device
bfin_spi0_device
=
{
.
name
=
"bfin-spi"
,
.
id
=
0
,
/* Bus number */
.
num_resources
=
ARRAY_SIZE
(
bfin_spi0_resource
),
.
resource
=
bfin_spi0_resource
,
.
dev
=
{
.
platform_data
=
&
spi_bfin_master
_info
,
/* Passed to driver */
.
platform_data
=
&
bfin_spi0
_info
,
/* Passed to driver */
},
};
...
...
@@ -160,23 +178,63 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{
.
modalias
=
"ad1836-spi"
,
.
max_speed_hz
=
3125000
,
/* max spi clock (SCK) speed in HZ */
.
bus_num
=
1
,
.
bus_num
=
0
,
.
chip_select
=
CONFIG_SND_BLACKFIN_SPI_PFBIT
,
.
controller_data
=
&
ad1836_spi_chip_info
,
},
#endif
};
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static
struct
pata_platform_info
bfin_pata_platform_data
=
{
.
ioport_shift
=
1
,
.
irq_type
=
IRQF_TRIGGER_HIGH
|
IRQF_DISABLED
,
};
static
struct
resource
bfin_pata_resources
[]
=
{
{
.
start
=
0x20314020
,
.
end
=
0x2031403F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
0x2031401C
,
.
end
=
0x2031401F
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
PATA_INT
,
.
end
=
PATA_INT
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
bfin_pata_device
=
{
.
name
=
"pata_platform"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
bfin_pata_resources
),
.
resource
=
bfin_pata_resources
,
.
dev
=
{
.
platform_data
=
&
bfin_pata_platform_data
,
}
};
#endif
static
struct
platform_device
*
ezkit_devices
[]
__initdata
=
{
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
&
smc91x_device
,
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&
spi_bfin_master
_device
,
&
bfin_spi0
_device
,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&
bfin_uart_device
,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&
bfin_pata_device
,
#endif
};
static
int
__init
ezkit_init
(
void
)
...
...
@@ -194,7 +252,15 @@ static int __init ezkit_init(void)
SSYNC
();
#endif
return
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info
(
bfin_spi_board_info
,
ARRAY_SIZE
(
bfin_spi_board_info
));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc
[
PATA_INT
].
status
|=
IRQ_NOAUTOEN
;
#endif
return
0
;
}
arch_initcall
(
ezkit_init
);
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