Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
c6c4d7bb
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6c4d7bb
编写于
10月 11, 2007
作者:
B
Bryan Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Blackfin arch: update platform driver resource information to all board files
Signed-off-by:
N
Bryan Wu
<
bryan.wu@analog.com
>
上级
bbf25010
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
1448 addition
and
165 deletion
+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
未找到文件。
arch/blackfin/mach-bf533/boards/cm_bf533.c
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录