Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
c76d292d
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c76d292d
编写于
1月 14, 2011
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for_rmk' of
git://github.com/at91linux/linux-2.6-at91
into devel-stable
上级
0a831cec
fcdc2ea7
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
906 addition
and
1 deletion
+906
-1
arch/arm/mach-at91/Kconfig
arch/arm/mach-at91/Kconfig
+13
-0
arch/arm/mach-at91/Makefile
arch/arm/mach-at91/Makefile
+2
-0
arch/arm/mach-at91/board-foxg20.c
arch/arm/mach-at91/board-foxg20.c
+274
-0
arch/arm/mach-at91/board-gsia18s.c
arch/arm/mach-at91/board-gsia18s.c
+584
-0
arch/arm/mach-at91/board-sam9m10g45ek.c
arch/arm/mach-at91/board-sam9m10g45ek.c
+0
-1
arch/arm/mach-at91/include/mach/gsia18s.h
arch/arm/mach-at91/include/mach/gsia18s.h
+33
-0
未找到文件。
arch/arm/mach-at91/Kconfig
浏览文件 @
c76d292d
...
...
@@ -362,6 +362,12 @@ config MACH_CPU9G20
Select this if you are using a Eukrea Electromatique's
CPU9G20 Board <http://www.eukrea.com/>
config MACH_ACMENETUSFOXG20
bool "Acme Systems srl FOX Board G20"
help
Select this if you are using Acme Systems
FOX Board G20 <http://www.acmesystems.it>
config MACH_PORTUXG20
bool "taskit PortuxG20"
help
...
...
@@ -381,6 +387,13 @@ config MACH_PCONTROL_G20
Select this if you are using taskit's Stamp9G20 CPU module on this
carrier board, beeing the decentralized unit of a building automation
system; featuring nvram, eth-switch, iso-rs485, display, io
config MACH_GSIA18S
bool "GS_IA18_S board"
help
This enables support for the GS_IA18_S board
produced by GeoSIG Ltd company. This is an internet accelerograph.
<http://www.geosig.com>
endif
if (ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
...
...
arch/arm/mach-at91/Makefile
浏览文件 @
c76d292d
...
...
@@ -63,9 +63,11 @@ obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o
# AT91SAM9G20 board-specific support
obj-$(CONFIG_MACH_AT91SAM9G20EK)
+=
board-sam9g20ek.o
obj-$(CONFIG_MACH_CPU9G20)
+=
board-cpu9krea.o
obj-$(CONFIG_MACH_ACMENETUSFOXG20)
+=
board-foxg20.o
obj-$(CONFIG_MACH_STAMP9G20)
+=
board-stamp9g20.o
obj-$(CONFIG_MACH_PORTUXG20)
+=
board-stamp9g20.o
obj-$(CONFIG_MACH_PCONTROL_G20)
+=
board-pcontrol-g20.o board-stamp9g20.o
obj-$(CONFIG_MACH_GSIA18S)
+=
board-gsia18s.o board-stamp9g20.o
# AT91SAM9260/AT91SAM9G20 board-specific support
obj-$(CONFIG_MACH_SNAPPER_9260)
+=
board-snapper9260.o
...
...
arch/arm/mach-at91/board-foxg20.c
0 → 100644
浏览文件 @
c76d292d
/*
* Copyright (C) 2005 SAN People
* Copyright (C) 2008 Atmel
* Copyright (C) 2010 Lee McLoughlin - lee@lmmrtech.com
* Copyright (C) 2010 Sergio Tanzilli - tanzilli@acmesystems.it
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/types.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/spi/spi.h>
#include <linux/spi/at73c213.h>
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/clk.h>
#include <linux/w1-gpio.h>
#include <mach/hardware.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/irq.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
#include "sam9_smc.h"
#include "generic.h"
/*
* The FOX Board G20 hardware comes as the "Netus G20" board with
* just the cpu, ram, dataflash and two header connectors.
* This is plugged into the FOX Board which provides the ethernet,
* usb, rtc, leds, switch, ...
*
* For more info visit: http://www.acmesystems.it/foxg20
*/
static
void
__init
foxg20_map_io
(
void
)
{
/* Initialize processor: 18.432 MHz crystal */
at91sam9260_initialize
(
18432000
);
/* DBGU on ttyS0. (Rx & Tx only) */
at91_register_uart
(
0
,
0
,
0
);
/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
at91_register_uart
(
AT91SAM9260_ID_US0
,
1
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
|
ATMEL_UART_DTR
|
ATMEL_UART_DSR
|
ATMEL_UART_DCD
|
ATMEL_UART_RI
);
/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
at91_register_uart
(
AT91SAM9260_ID_US1
,
2
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
);
/* USART2 on ttyS3. (Rx & Tx only) */
at91_register_uart
(
AT91SAM9260_ID_US2
,
3
,
0
);
/* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
at91_register_uart
(
AT91SAM9260_ID_US3
,
4
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
);
/* USART4 on ttyS5. (Rx & Tx only) */
at91_register_uart
(
AT91SAM9260_ID_US4
,
5
,
0
);
/* USART5 on ttyS6. (Rx & Tx only) */
at91_register_uart
(
AT91SAM9260_ID_US5
,
6
,
0
);
/* set serial console to ttyS0 (ie, DBGU) */
at91_set_serial_console
(
0
);
/* Set the internal pull-up resistor on DRXD */
at91_set_A_periph
(
AT91_PIN_PB14
,
1
);
}
static
void
__init
foxg20_init_irq
(
void
)
{
at91sam9260_init_interrupts
(
NULL
);
}
/*
* USB Host port
*/
static
struct
at91_usbh_data
__initdata
foxg20_usbh_data
=
{
.
ports
=
2
,
};
/*
* USB Device port
*/
static
struct
at91_udc_data
__initdata
foxg20_udc_data
=
{
.
vbus_pin
=
AT91_PIN_PC6
,
.
pullup_pin
=
0
,
/* pull-up driven by UDC */
};
/*
* SPI devices.
*/
static
struct
spi_board_info
foxg20_spi_devices
[]
=
{
#if !defined(CONFIG_MMC_AT91)
{
.
modalias
=
"mtd_dataflash"
,
.
chip_select
=
1
,
.
max_speed_hz
=
15
*
1000
*
1000
,
.
bus_num
=
0
,
},
#endif
};
/*
* MACB Ethernet device
*/
static
struct
at91_eth_data
__initdata
foxg20_macb_data
=
{
.
phy_irq_pin
=
AT91_PIN_PA7
,
.
is_rmii
=
1
,
};
/*
* MCI (SD/MMC)
* det_pin, wp_pin and vcc_pin are not connected
*/
static
struct
at91_mmc_data
__initdata
foxg20_mmc_data
=
{
.
slot_b
=
1
,
.
wire4
=
1
,
};
/*
* LEDs
*/
static
struct
gpio_led
foxg20_leds
[]
=
{
{
/* user led, red */
.
name
=
"user_led"
,
.
gpio
=
AT91_PIN_PC7
,
.
active_low
=
0
,
.
default_trigger
=
"heartbeat"
,
},
};
/*
* GPIO Buttons
*/
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static
struct
gpio_keys_button
foxg20_buttons
[]
=
{
{
.
gpio
=
AT91_PIN_PC4
,
.
code
=
BTN_1
,
.
desc
=
"Button 1"
,
.
active_low
=
1
,
.
wakeup
=
1
,
},
};
static
struct
gpio_keys_platform_data
foxg20_button_data
=
{
.
buttons
=
foxg20_buttons
,
.
nbuttons
=
ARRAY_SIZE
(
foxg20_buttons
),
};
static
struct
platform_device
foxg20_button_device
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
num_resources
=
0
,
.
dev
=
{
.
platform_data
=
&
foxg20_button_data
,
}
};
static
void
__init
foxg20_add_device_buttons
(
void
)
{
at91_set_gpio_input
(
AT91_PIN_PC4
,
1
);
/* btn1 */
at91_set_deglitch
(
AT91_PIN_PC4
,
1
);
platform_device_register
(
&
foxg20_button_device
);
}
#else
static
void
__init
foxg20_add_device_buttons
(
void
)
{}
#endif
#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
static
struct
w1_gpio_platform_data
w1_gpio_pdata
=
{
/* If you choose to use a pin other than PB16 it needs to be 3.3V */
.
pin
=
AT91_PIN_PB16
,
.
is_open_drain
=
1
,
};
static
struct
platform_device
w1_device
=
{
.
name
=
"w1-gpio"
,
.
id
=
-
1
,
.
dev
.
platform_data
=
&
w1_gpio_pdata
,
};
static
void
__init
at91_add_device_w1
(
void
)
{
at91_set_GPIO_periph
(
w1_gpio_pdata
.
pin
,
1
);
at91_set_multi_drive
(
w1_gpio_pdata
.
pin
,
1
);
platform_device_register
(
&
w1_device
);
}
#endif
static
struct
i2c_board_info
__initdata
foxg20_i2c_devices
[]
=
{
{
I2C_BOARD_INFO
(
"24c512"
,
0x50
),
},
};
static
void
__init
foxg20_board_init
(
void
)
{
/* Serial */
at91_add_device_serial
();
/* USB Host */
at91_add_device_usbh
(
&
foxg20_usbh_data
);
/* USB Device */
at91_add_device_udc
(
&
foxg20_udc_data
);
/* SPI */
at91_add_device_spi
(
foxg20_spi_devices
,
ARRAY_SIZE
(
foxg20_spi_devices
));
/* Ethernet */
at91_add_device_eth
(
&
foxg20_macb_data
);
/* MMC */
at91_add_device_mmc
(
0
,
&
foxg20_mmc_data
);
/* I2C */
at91_add_device_i2c
(
foxg20_i2c_devices
,
ARRAY_SIZE
(
foxg20_i2c_devices
));
/* LEDs */
at91_gpio_leds
(
foxg20_leds
,
ARRAY_SIZE
(
foxg20_leds
));
/* Push Buttons */
foxg20_add_device_buttons
();
#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
at91_add_device_w1
();
#endif
}
MACHINE_START
(
ACMENETUSFOXG20
,
"Acme Systems srl FOX Board G20"
)
/* Maintainer: Sergio Tanzilli */
.
boot_params
=
AT91_SDRAM_BASE
+
0x100
,
.
timer
=
&
at91sam926x_timer
,
.
map_io
=
foxg20_map_io
,
.
init_irq
=
foxg20_init_irq
,
.
init_machine
=
foxg20_board_init
,
MACHINE_END
arch/arm/mach-at91/board-gsia18s.c
0 → 100644
浏览文件 @
c76d292d
/*
* Copyright (C) 2010 Christian Glindkamp <christian.glindkamp@taskit.de>
* taskit GmbH
* 2010 Igor Plyatov <plyatov@gmail.com>
* GeoSIG Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/w1-gpio.h>
#include <linux/i2c.h>
#include <linux/i2c/pcf857x.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/board.h>
#include <mach/at91sam9_smc.h>
#include <mach/gsia18s.h>
#include <mach/stamp9g20.h>
#include "sam9_smc.h"
#include "generic.h"
static
void
__init
gsia18s_map_io
(
void
)
{
stamp9g20_map_io
();
/*
* USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI).
* Used for Internal Analog Modem.
*/
at91_register_uart
(
AT91SAM9260_ID_US0
,
1
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
|
ATMEL_UART_DTR
|
ATMEL_UART_DSR
|
ATMEL_UART_DCD
|
ATMEL_UART_RI
);
/*
* USART1 on ttyS2 (Rx, Tx, CTS, RTS).
* Used for GPS or WiFi or Data stream.
*/
at91_register_uart
(
AT91SAM9260_ID_US1
,
2
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
);
/*
* USART2 on ttyS3 (Rx, Tx, CTS, RTS).
* Used for External Modem.
*/
at91_register_uart
(
AT91SAM9260_ID_US2
,
3
,
ATMEL_UART_CTS
|
ATMEL_UART_RTS
);
/*
* USART3 on ttyS4 (Rx, Tx, RTS).
* Used for RS-485.
*/
at91_register_uart
(
AT91SAM9260_ID_US3
,
4
,
ATMEL_UART_RTS
);
/*
* USART4 on ttyS5 (Rx, Tx).
* Used for TRX433 Radio Module.
*/
at91_register_uart
(
AT91SAM9260_ID_US4
,
5
,
0
);
}
static
void
__init
init_irq
(
void
)
{
at91sam9260_init_interrupts
(
NULL
);
}
/*
* Two USB Host ports
*/
static
struct
at91_usbh_data
__initdata
usbh_data
=
{
.
ports
=
2
,
};
/*
* USB Device port
*/
static
struct
at91_udc_data
__initdata
udc_data
=
{
.
vbus_pin
=
AT91_PIN_PA22
,
.
pullup_pin
=
0
,
/* pull-up driven by UDC */
};
/*
* MACB Ethernet device
*/
static
struct
at91_eth_data
__initdata
macb_data
=
{
.
phy_irq_pin
=
AT91_PIN_PA28
,
.
is_rmii
=
1
,
};
/*
* LEDs and GPOs
*/
static
struct
gpio_led
gpio_leds
[]
=
{
{
.
name
=
"gpo:spi1reset"
,
.
gpio
=
AT91_PIN_PC1
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"gpo:trig_net_out"
,
.
gpio
=
AT91_PIN_PB20
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"gpo:trig_net_dir"
,
.
gpio
=
AT91_PIN_PB19
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"gpo:charge_dis"
,
.
gpio
=
AT91_PIN_PC2
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"led:event"
,
.
gpio
=
AT91_PIN_PB17
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"led:lan"
,
.
gpio
=
AT91_PIN_PB18
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"led:error"
,
.
gpio
=
AT91_PIN_PB16
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_ON
,
}
};
static
struct
gpio_led_platform_data
gpio_led_info
=
{
.
leds
=
gpio_leds
,
.
num_leds
=
ARRAY_SIZE
(
gpio_leds
),
};
static
struct
platform_device
leds
=
{
.
name
=
"leds-gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
gpio_led_info
,
}
};
static
void
__init
gsia18s_leds_init
(
void
)
{
platform_device_register
(
&
leds
);
}
/* PCF8574 0x20 GPIO - U1 on the GS_IA18-CB_V3 board */
static
struct
gpio_led
pcf_gpio_leds1
[]
=
{
{
/* bit 0 */
.
name
=
"gpo:hdc_power"
,
.
gpio
=
PCF_GPIO_HDC_POWER
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 1 */
.
name
=
"gpo:wifi_setup"
,
.
gpio
=
PCF_GPIO_WIFI_SETUP
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 2 */
.
name
=
"gpo:wifi_enable"
,
.
gpio
=
PCF_GPIO_WIFI_ENABLE
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 3 */
.
name
=
"gpo:wifi_reset"
,
.
gpio
=
PCF_GPIO_WIFI_RESET
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_ON
,
},
/* bit 4 used as GPI */
{
/* bit 5 */
.
name
=
"gpo:gps_setup"
,
.
gpio
=
PCF_GPIO_GPS_SETUP
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 6 */
.
name
=
"gpo:gps_standby"
,
.
gpio
=
PCF_GPIO_GPS_STANDBY
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_ON
,
},
{
/* bit 7 */
.
name
=
"gpo:gps_power"
,
.
gpio
=
PCF_GPIO_GPS_POWER
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
}
};
static
struct
gpio_led_platform_data
pcf_gpio_led_info1
=
{
.
leds
=
pcf_gpio_leds1
,
.
num_leds
=
ARRAY_SIZE
(
pcf_gpio_leds1
),
};
static
struct
platform_device
pcf_leds1
=
{
.
name
=
"leds-gpio"
,
/* GS_IA18-CB_board */
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
pcf_gpio_led_info1
,
}
};
/* PCF8574 0x22 GPIO - U1 on the GS_2G_OPT1-A_V0 board (Alarm) */
static
struct
gpio_led
pcf_gpio_leds2
[]
=
{
{
/* bit 0 */
.
name
=
"gpo:alarm_1"
,
.
gpio
=
PCF_GPIO_ALARM1
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 1 */
.
name
=
"gpo:alarm_2"
,
.
gpio
=
PCF_GPIO_ALARM2
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 2 */
.
name
=
"gpo:alarm_3"
,
.
gpio
=
PCF_GPIO_ALARM3
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
/* bit 3 */
.
name
=
"gpo:alarm_4"
,
.
gpio
=
PCF_GPIO_ALARM4
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
/* bits 4, 5, 6 not used */
{
/* bit 7 */
.
name
=
"gpo:alarm_v_relay_on"
,
.
gpio
=
PCF_GPIO_ALARM_V_RELAY_ON
,
.
active_low
=
0
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
};
static
struct
gpio_led_platform_data
pcf_gpio_led_info2
=
{
.
leds
=
pcf_gpio_leds2
,
.
num_leds
=
ARRAY_SIZE
(
pcf_gpio_leds2
),
};
static
struct
platform_device
pcf_leds2
=
{
.
name
=
"leds-gpio"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
pcf_gpio_led_info2
,
}
};
/* PCF8574 0x24 GPIO U1 on the GS_2G-OPT23-A_V0 board (Modem) */
static
struct
gpio_led
pcf_gpio_leds3
[]
=
{
{
/* bit 0 */
.
name
=
"gpo:modem_power"
,
.
gpio
=
PCF_GPIO_MODEM_POWER
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
/* bits 1 and 2 not used */
{
/* bit 3 */
.
name
=
"gpo:modem_reset"
,
.
gpio
=
PCF_GPIO_MODEM_RESET
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_ON
,
},
/* bits 4, 5 and 6 not used */
{
/* bit 7 */
.
name
=
"gpo:trx_reset"
,
.
gpio
=
PCF_GPIO_TRX_RESET
,
.
active_low
=
1
,
.
default_trigger
=
"none"
,
.
default_state
=
LEDS_GPIO_DEFSTATE_ON
,
}
};
static
struct
gpio_led_platform_data
pcf_gpio_led_info3
=
{
.
leds
=
pcf_gpio_leds3
,
.
num_leds
=
ARRAY_SIZE
(
pcf_gpio_leds3
),
};
static
struct
platform_device
pcf_leds3
=
{
.
name
=
"leds-gpio"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
pcf_gpio_led_info3
,
}
};
static
void
__init
gsia18s_pcf_leds_init
(
void
)
{
platform_device_register
(
&
pcf_leds1
);
platform_device_register
(
&
pcf_leds2
);
platform_device_register
(
&
pcf_leds3
);
}
/*
* SPI busses.
*/
static
struct
spi_board_info
gsia18s_spi_devices
[]
=
{
{
/* User accessible spi0, cs0 used for communication with MSP RTC */
.
modalias
=
"spidev"
,
.
bus_num
=
0
,
.
chip_select
=
0
,
.
max_speed_hz
=
580000
,
.
mode
=
SPI_MODE_1
,
},
{
/* User accessible spi1, cs0 used for communication with int. DSP */
.
modalias
=
"spidev"
,
.
bus_num
=
1
,
.
chip_select
=
0
,
.
max_speed_hz
=
5600000
,
.
mode
=
SPI_MODE_0
,
},
{
/* User accessible spi1, cs1 used for communication with ext. DSP */
.
modalias
=
"spidev"
,
.
bus_num
=
1
,
.
chip_select
=
1
,
.
max_speed_hz
=
5600000
,
.
mode
=
SPI_MODE_0
,
},
{
/* User accessible spi1, cs2 used for communication with ext. DSP */
.
modalias
=
"spidev"
,
.
bus_num
=
1
,
.
chip_select
=
2
,
.
max_speed_hz
=
5600000
,
.
mode
=
SPI_MODE_0
,
},
{
/* User accessible spi1, cs3 used for communication with ext. DSP */
.
modalias
=
"spidev"
,
.
bus_num
=
1
,
.
chip_select
=
3
,
.
max_speed_hz
=
5600000
,
.
mode
=
SPI_MODE_0
,
}
};
/*
* GPI Buttons
*/
static
struct
gpio_keys_button
buttons
[]
=
{
{
.
gpio
=
GPIO_TRIG_NET_IN
,
.
code
=
BTN_1
,
.
desc
=
"TRIG_NET_IN"
,
.
type
=
EV_KEY
,
.
active_low
=
0
,
.
wakeup
=
1
,
},
{
/* SW80 on the GS_IA18_S-MN board*/
.
gpio
=
GPIO_CARD_UNMOUNT_0
,
.
code
=
BTN_2
,
.
desc
=
"Card umount 0"
,
.
type
=
EV_KEY
,
.
active_low
=
1
,
.
wakeup
=
1
,
},
{
/* SW79 on the GS_IA18_S-MN board*/
.
gpio
=
GPIO_CARD_UNMOUNT_1
,
.
code
=
BTN_3
,
.
desc
=
"Card umount 1"
,
.
type
=
EV_KEY
,
.
active_low
=
1
,
.
wakeup
=
1
,
},
{
/* SW280 on the GS_IA18-CB board*/
.
gpio
=
GPIO_KEY_POWER
,
.
code
=
KEY_POWER
,
.
desc
=
"Power Off Button"
,
.
type
=
EV_KEY
,
.
active_low
=
0
,
.
wakeup
=
1
,
}
};
static
struct
gpio_keys_platform_data
button_data
=
{
.
buttons
=
buttons
,
.
nbuttons
=
ARRAY_SIZE
(
buttons
),
};
static
struct
platform_device
button_device
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
num_resources
=
0
,
.
dev
=
{
.
platform_data
=
&
button_data
,
}
};
static
void
__init
gsia18s_add_device_buttons
(
void
)
{
at91_set_gpio_input
(
GPIO_TRIG_NET_IN
,
1
);
at91_set_deglitch
(
GPIO_TRIG_NET_IN
,
1
);
at91_set_gpio_input
(
GPIO_CARD_UNMOUNT_0
,
1
);
at91_set_deglitch
(
GPIO_CARD_UNMOUNT_0
,
1
);
at91_set_gpio_input
(
GPIO_CARD_UNMOUNT_1
,
1
);
at91_set_deglitch
(
GPIO_CARD_UNMOUNT_1
,
1
);
at91_set_gpio_input
(
GPIO_KEY_POWER
,
0
);
at91_set_deglitch
(
GPIO_KEY_POWER
,
1
);
platform_device_register
(
&
button_device
);
}
/*
* I2C
*/
static
int
pcf8574x_0x20_setup
(
struct
i2c_client
*
client
,
int
gpio
,
unsigned
int
ngpio
,
void
*
context
)
{
int
status
;
status
=
gpio_request
(
gpio
+
PCF_GPIO_ETH_DETECT
,
"eth_det"
);
if
(
status
<
0
)
{
pr_err
(
"error: can't request GPIO%d
\n
"
,
gpio
+
PCF_GPIO_ETH_DETECT
);
return
status
;
}
status
=
gpio_direction_input
(
gpio
+
PCF_GPIO_ETH_DETECT
);
if
(
status
<
0
)
{
pr_err
(
"error: can't setup GPIO%d as input
\n
"
,
gpio
+
PCF_GPIO_ETH_DETECT
);
return
status
;
}
status
=
gpio_export
(
gpio
+
PCF_GPIO_ETH_DETECT
,
false
);
if
(
status
<
0
)
{
pr_err
(
"error: can't export GPIO%d
\n
"
,
gpio
+
PCF_GPIO_ETH_DETECT
);
return
status
;
}
status
=
gpio_sysfs_set_active_low
(
gpio
+
PCF_GPIO_ETH_DETECT
,
1
);
if
(
status
<
0
)
{
pr_err
(
"error: gpio_sysfs_set active_low(GPIO%d, 1)
\n
"
,
gpio
+
PCF_GPIO_ETH_DETECT
);
return
status
;
}
return
0
;
}
static
int
pcf8574x_0x20_teardown
(
struct
i2c_client
*
client
,
int
gpio
,
unsigned
ngpio
,
void
*
context
)
{
gpio_free
(
gpio
+
PCF_GPIO_ETH_DETECT
);
return
0
;
}
static
struct
pcf857x_platform_data
pcf20_pdata
=
{
.
gpio_base
=
GS_IA18_S_PCF_GPIO_BASE0
,
.
n_latch
=
(
1
<<
4
),
.
setup
=
pcf8574x_0x20_setup
,
.
teardown
=
pcf8574x_0x20_teardown
,
};
static
struct
pcf857x_platform_data
pcf22_pdata
=
{
.
gpio_base
=
GS_IA18_S_PCF_GPIO_BASE1
,
};
static
struct
pcf857x_platform_data
pcf24_pdata
=
{
.
gpio_base
=
GS_IA18_S_PCF_GPIO_BASE2
,
};
static
struct
i2c_board_info
__initdata
gsia18s_i2c_devices
[]
=
{
{
/* U1 on the GS_IA18-CB_V3 board */
I2C_BOARD_INFO
(
"pcf8574"
,
0x20
),
.
platform_data
=
&
pcf20_pdata
,
},
{
/* U1 on the GS_2G_OPT1-A_V0 board (Alarm) */
I2C_BOARD_INFO
(
"pcf8574"
,
0x22
),
.
platform_data
=
&
pcf22_pdata
,
},
{
/* U1 on the GS_2G-OPT23-A_V0 board (Modem) */
I2C_BOARD_INFO
(
"pcf8574"
,
0x24
),
.
platform_data
=
&
pcf24_pdata
,
},
{
/* U161 on the GS_IA18_S-MN board */
I2C_BOARD_INFO
(
"24c1024"
,
0x50
),
},
{
/* U162 on the GS_IA18_S-MN board */
I2C_BOARD_INFO
(
"24c01"
,
0x53
),
},
};
/*
* Compact Flash
*/
static
struct
at91_cf_data
__initdata
gsia18s_cf1_data
=
{
.
irq_pin
=
AT91_PIN_PA27
,
.
det_pin
=
AT91_PIN_PB30
,
.
rst_pin
=
AT91_PIN_PB31
,
.
chipselect
=
5
,
.
flags
=
AT91_CF_TRUE_IDE
,
};
/* Power Off by RTC */
static
void
gsia18s_power_off
(
void
)
{
pr_notice
(
"Power supply will be switched off automatically now or after 60 seconds without ArmDAS.
\n
"
);
at91_set_gpio_output
(
AT91_PIN_PA25
,
1
);
/* Spin to death... */
while
(
1
)
;
}
static
int
__init
gsia18s_power_off_init
(
void
)
{
pm_power_off
=
gsia18s_power_off
;
return
0
;
}
/* ---------------------------------------------------------------------------*/
static
void
__init
gsia18s_board_init
(
void
)
{
stamp9g20_board_init
();
at91_add_device_usbh
(
&
usbh_data
);
at91_add_device_udc
(
&
udc_data
);
at91_add_device_eth
(
&
macb_data
);
gsia18s_leds_init
();
gsia18s_pcf_leds_init
();
gsia18s_add_device_buttons
();
at91_add_device_i2c
(
gsia18s_i2c_devices
,
ARRAY_SIZE
(
gsia18s_i2c_devices
));
at91_add_device_cf
(
&
gsia18s_cf1_data
);
at91_add_device_spi
(
gsia18s_spi_devices
,
ARRAY_SIZE
(
gsia18s_spi_devices
));
gsia18s_power_off_init
();
}
MACHINE_START
(
GSIA18S
,
"GS_IA18_S"
)
.
boot_params
=
AT91_SDRAM_BASE
+
0x100
,
.
timer
=
&
at91sam926x_timer
,
.
map_io
=
gsia18s_map_io
,
.
init_irq
=
init_irq
,
.
init_machine
=
gsia18s_board_init
,
MACHINE_END
arch/arm/mach-at91/board-sam9m10g45ek.c
浏览文件 @
c76d292d
...
...
@@ -37,7 +37,6 @@
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <mach/hardware.h>
#include <mach/board.h>
#include <mach/gpio.h>
#include <mach/at91sam9_smc.h>
...
...
arch/arm/mach-at91/include/mach/gsia18s.h
0 → 100644
浏览文件 @
c76d292d
/* Buttons */
#define GPIO_TRIG_NET_IN AT91_PIN_PB21
#define GPIO_CARD_UNMOUNT_0 AT91_PIN_PB13
#define GPIO_CARD_UNMOUNT_1 AT91_PIN_PB12
#define GPIO_KEY_POWER AT91_PIN_PA25
/* PCF8574 0x20 GPIO - U1 on the GS_IA18-CB_V3 board */
#define GS_IA18_S_PCF_GPIO_BASE0 NR_BUILTIN_GPIO
#define PCF_GPIO_HDC_POWER (GS_IA18_S_PCF_GPIO_BASE0 + 0)
#define PCF_GPIO_WIFI_SETUP (GS_IA18_S_PCF_GPIO_BASE0 + 1)
#define PCF_GPIO_WIFI_ENABLE (GS_IA18_S_PCF_GPIO_BASE0 + 2)
#define PCF_GPIO_WIFI_RESET (GS_IA18_S_PCF_GPIO_BASE0 + 3)
#define PCF_GPIO_ETH_DETECT 4
/* this is a GPI */
#define PCF_GPIO_GPS_SETUP (GS_IA18_S_PCF_GPIO_BASE0 + 5)
#define PCF_GPIO_GPS_STANDBY (GS_IA18_S_PCF_GPIO_BASE0 + 6)
#define PCF_GPIO_GPS_POWER (GS_IA18_S_PCF_GPIO_BASE0 + 7)
/* PCF8574 0x22 GPIO - U1 on the GS_2G_OPT1-A_V0 board (Alarm) */
#define GS_IA18_S_PCF_GPIO_BASE1 (GS_IA18_S_PCF_GPIO_BASE0 + 8)
#define PCF_GPIO_ALARM1 (GS_IA18_S_PCF_GPIO_BASE1 + 0)
#define PCF_GPIO_ALARM2 (GS_IA18_S_PCF_GPIO_BASE1 + 1)
#define PCF_GPIO_ALARM3 (GS_IA18_S_PCF_GPIO_BASE1 + 2)
#define PCF_GPIO_ALARM4 (GS_IA18_S_PCF_GPIO_BASE1 + 3)
/* bits 4, 5, 6 not used */
#define PCF_GPIO_ALARM_V_RELAY_ON (GS_IA18_S_PCF_GPIO_BASE1 + 7)
/* PCF8574 0x24 GPIO U1 on the GS_2G-OPT23-A_V0 board (Modem) */
#define GS_IA18_S_PCF_GPIO_BASE2 (GS_IA18_S_PCF_GPIO_BASE1 + 8)
#define PCF_GPIO_MODEM_POWER (GS_IA18_S_PCF_GPIO_BASE2 + 0)
#define PCF_GPIO_MODEM_RESET (GS_IA18_S_PCF_GPIO_BASE2 + 3)
/* bits 1, 2, 4, 5 not used */
#define PCF_GPIO_TRX_RESET (GS_IA18_S_PCF_GPIO_BASE2 + 6)
/* bit 7 not used */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录