Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
967809bd
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
967809bd
编写于
1月 20, 2012
作者:
T
Tony Lindgren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'omap1-part2' into omap1
Conflicts: drivers/leds/leds-ams-delta.c
上级
dcd6c922
8d09a1bb
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
318 addition
and
249 deletion
+318
-249
arch/arm/mach-omap1/Kconfig
arch/arm/mach-omap1/Kconfig
+2
-0
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-ams-delta.c
+187
-39
arch/arm/plat-omap/include/plat/board-ams-delta.h
arch/arm/plat-omap/include/plat/board-ams-delta.h
+22
-26
drivers/input/serio/ams_delta_serio.c
drivers/input/serio/ams_delta_serio.c
+34
-20
drivers/leds/Kconfig
drivers/leds/Kconfig
+0
-7
drivers/leds/Makefile
drivers/leds/Makefile
+0
-1
drivers/leds/leds-ams-delta.c
drivers/leds/leds-ams-delta.c
+0
-126
drivers/mtd/nand/ams-delta.c
drivers/mtd/nand/ams-delta.c
+52
-22
drivers/video/omap/lcd_ams_delta.c
drivers/video/omap/lcd_ams_delta.c
+20
-7
sound/soc/omap/ams-delta.c
sound/soc/omap/ams-delta.c
+1
-1
未找到文件。
arch/arm/mach-omap1/Kconfig
浏览文件 @
967809bd
...
...
@@ -155,6 +155,8 @@ config MACH_AMS_DELTA
bool "Amstrad E3 (Delta)"
depends on ARCH_OMAP1 && ARCH_OMAP15XX
select FIQ
select GPIO_GENERIC_PLATFORM
select LEDS_GPIO_REGISTER
help
Support for the Amstrad E3 (codename Delta) videophone. Say Y here
if you have such a device.
...
...
arch/arm/mach-omap1/board-ams-delta.c
浏览文件 @
967809bd
...
...
@@ -11,6 +11,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/basic_mmio_gpio.h>
#include <linux/gpio.h>
#include <linux/kernel.h>
#include <linux/init.h>
...
...
@@ -40,9 +41,6 @@
#include <mach/ams-delta-fiq.h>
static
u8
ams_delta_latch1_reg
;
static
u16
ams_delta_latch2_reg
;
static
const
unsigned
int
ams_delta_keymap
[]
=
{
KEY
(
0
,
0
,
KEY_F1
),
/* Advert */
...
...
@@ -121,39 +119,32 @@ static const unsigned int ams_delta_keymap[] = {
KEY
(
7
,
3
,
KEY_LEFTCTRL
),
/* Vol down */
};
void
ams_delta_latch1_write
(
u8
mask
,
u8
value
)
{
ams_delta_latch1_reg
&=
~
mask
;
ams_delta_latch1_reg
|=
value
;
*
(
volatile
__u8
*
)
AMS_DELTA_LATCH1_VIRT
=
ams_delta_latch1_reg
;
}
void
ams_delta_latch2_write
(
u16
mask
,
u16
value
)
{
ams_delta_latch2_reg
&=
~
mask
;
ams_delta_latch2_reg
|=
value
;
*
(
volatile
__u16
*
)
AMS_DELTA_LATCH2_VIRT
=
ams_delta_latch2_reg
;
}
#define LATCH1_PHYS 0x01000000
#define LATCH1_VIRT 0xEA000000
#define MODEM_PHYS 0x04000000
#define MODEM_VIRT 0xEB000000
#define LATCH2_PHYS 0x08000000
#define LATCH2_VIRT 0xEC000000
static
struct
map_desc
ams_delta_io_desc
[]
__initdata
=
{
/* AMS_DELTA_LATCH1 */
{
.
virtual
=
AMS_DELTA_
LATCH1_VIRT
,
.
pfn
=
__phys_to_pfn
(
AMS_DELTA_
LATCH1_PHYS
),
.
virtual
=
LATCH1_VIRT
,
.
pfn
=
__phys_to_pfn
(
LATCH1_PHYS
),
.
length
=
0x01000000
,
.
type
=
MT_DEVICE
},
/* AMS_DELTA_LATCH2 */
{
.
virtual
=
AMS_DELTA_
LATCH2_VIRT
,
.
pfn
=
__phys_to_pfn
(
AMS_DELTA_
LATCH2_PHYS
),
.
virtual
=
LATCH2_VIRT
,
.
pfn
=
__phys_to_pfn
(
LATCH2_PHYS
),
.
length
=
0x01000000
,
.
type
=
MT_DEVICE
},
/* AMS_DELTA_MODEM */
{
.
virtual
=
AMS_DELTA_
MODEM_VIRT
,
.
pfn
=
__phys_to_pfn
(
AMS_DELTA_
MODEM_PHYS
),
.
virtual
=
MODEM_VIRT
,
.
pfn
=
__phys_to_pfn
(
MODEM_PHYS
),
.
length
=
0x01000000
,
.
type
=
MT_DEVICE
}
...
...
@@ -173,6 +164,113 @@ static struct omap_board_config_kernel ams_delta_config[] __initdata = {
{
OMAP_TAG_LCD
,
&
ams_delta_lcd_config
},
};
#define LATCH1_GPIO_BASE 232
#define LATCH1_NGPIO 8
static
struct
resource
latch1_resources
[]
__initconst
=
{
[
0
]
=
{
.
name
=
"dat"
,
.
start
=
LATCH1_PHYS
,
.
end
=
LATCH1_PHYS
+
(
LATCH1_NGPIO
-
1
)
/
8
,
.
flags
=
IORESOURCE_MEM
,
},
};
static
struct
bgpio_pdata
latch1_pdata
__initconst
=
{
.
base
=
LATCH1_GPIO_BASE
,
.
ngpio
=
LATCH1_NGPIO
,
};
static
struct
platform_device
latch1_gpio_device
=
{
.
name
=
"basic-mmio-gpio"
,
.
id
=
0
,
.
resource
=
latch1_resources
,
.
num_resources
=
ARRAY_SIZE
(
latch1_resources
),
.
dev
=
{
.
platform_data
=
&
latch1_pdata
,
},
};
static
struct
resource
latch2_resources
[]
__initconst
=
{
[
0
]
=
{
.
name
=
"dat"
,
.
start
=
LATCH2_PHYS
,
.
end
=
LATCH2_PHYS
+
(
AMS_DELTA_LATCH2_NGPIO
-
1
)
/
8
,
.
flags
=
IORESOURCE_MEM
,
},
};
static
struct
bgpio_pdata
latch2_pdata
__initconst
=
{
.
base
=
AMS_DELTA_LATCH2_GPIO_BASE
,
.
ngpio
=
AMS_DELTA_LATCH2_NGPIO
,
};
static
struct
platform_device
latch2_gpio_device
=
{
.
name
=
"basic-mmio-gpio"
,
.
id
=
1
,
.
resource
=
latch2_resources
,
.
num_resources
=
ARRAY_SIZE
(
latch2_resources
),
.
dev
=
{
.
platform_data
=
&
latch2_pdata
,
},
};
static
struct
gpio
latch_gpios
[]
__initconst
=
{
{
.
gpio
=
LATCH1_GPIO_BASE
+
6
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"dockit1"
,
},
{
.
gpio
=
LATCH1_GPIO_BASE
+
7
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"dockit2"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_SCARD_RSTIN
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"scard_rstin"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_SCARD_CMDVCC
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"scard_cmdvcc"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_MODEM_NRESET
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"modem_nreset"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_MODEM_CODEC
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"modem_codec"
,
},
{
.
gpio
=
AMS_DELTA_LATCH2_GPIO_BASE
+
14
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"hookflash1"
,
},
{
.
gpio
=
AMS_DELTA_LATCH2_GPIO_BASE
+
15
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"hookflash2"
,
},
};
void
ams_delta_latch_write
(
int
base
,
int
ngpio
,
u16
mask
,
u16
value
)
{
int
bit
=
0
;
u16
bitpos
=
1
<<
bit
;
for
(;
bit
<
ngpio
;
bit
++
,
bitpos
=
bitpos
<<
1
)
{
if
(
!
(
mask
&
bitpos
))
continue
;
gpio_set_value
(
base
+
bit
,
(
value
&
bitpos
)
!=
0
);
}
}
EXPORT_SYMBOL
(
ams_delta_latch_write
);
static
struct
resource
ams_delta_nand_resources
[]
=
{
[
0
]
=
{
.
start
=
OMAP1_MPUIO_BASE
,
...
...
@@ -224,9 +322,45 @@ static struct platform_device ams_delta_lcd_device = {
.
id
=
-
1
,
};
static
struct
platform_device
ams_delta_led_device
=
{
.
name
=
"ams-delta-led"
,
.
id
=
-
1
static
struct
gpio_led
gpio_leds
[]
__initconst
=
{
{
.
name
=
"camera"
,
.
gpio
=
LATCH1_GPIO_BASE
+
0
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
#ifdef CONFIG_LEDS_TRIGGERS
.
default_trigger
=
"ams_delta_camera"
,
#endif
},
{
.
name
=
"advert"
,
.
gpio
=
LATCH1_GPIO_BASE
+
1
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"email"
,
.
gpio
=
LATCH1_GPIO_BASE
+
2
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"handsfree"
,
.
gpio
=
LATCH1_GPIO_BASE
+
3
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"voicemail"
,
.
gpio
=
LATCH1_GPIO_BASE
+
4
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
{
.
name
=
"voice"
,
.
gpio
=
LATCH1_GPIO_BASE
+
5
,
.
default_state
=
LEDS_GPIO_DEFSTATE_OFF
,
},
};
static
struct
gpio_led_platform_data
leds_pdata
__initconst
=
{
.
leds
=
gpio_leds
,
.
num_leds
=
ARRAY_SIZE
(
gpio_leds
),
};
static
struct
i2c_board_info
ams_delta_camera_board_info
[]
=
{
...
...
@@ -275,13 +409,17 @@ static struct omap1_cam_platform_data ams_delta_camera_platform_data = {
};
static
struct
platform_device
*
ams_delta_devices
[]
__initdata
=
{
&
ams_delta_nand_device
,
&
latch1_gpio_device
,
&
latch2_gpio_device
,
&
ams_delta_kp_device
,
&
ams_delta_lcd_device
,
&
ams_delta_led_device
,
&
ams_delta_camera_device
,
};
static
struct
platform_device
*
late_devices
[]
__initconst
=
{
&
ams_delta_nand_device
,
&
ams_delta_lcd_device
,
};
static
void
__init
ams_delta_init
(
void
)
{
/* mux pins for uarts */
...
...
@@ -307,15 +445,13 @@ static void __init ams_delta_init(void)
omap_serial_init
();
omap_register_i2c_bus
(
1
,
100
,
NULL
,
0
);
/* Clear latch2 (NAND, LCD, modem enable) */
ams_delta_latch2_write
(
~
0
,
0
);
omap1_usb_init
(
&
ams_delta_usb_config
);
omap1_set_camera_info
(
&
ams_delta_camera_platform_data
);
#ifdef CONFIG_LEDS_TRIGGERS
led_trigger_register_simple
(
"ams_delta_camera"
,
&
ams_delta_camera_led_trigger
);
#endif
gpio_led_register_device
(
-
1
,
&
leds_pdata
);
platform_add_devices
(
ams_delta_devices
,
ARRAY_SIZE
(
ams_delta_devices
));
ams_delta_init_fiq
();
...
...
@@ -325,8 +461,8 @@ static void __init ams_delta_init(void)
static
struct
plat_serial8250_port
ams_delta_modem_ports
[]
=
{
{
.
membase
=
IOMEM
(
AMS_DELTA_
MODEM_VIRT
),
.
mapbase
=
AMS_DELTA_
MODEM_PHYS
,
.
membase
=
IOMEM
(
MODEM_VIRT
),
.
mapbase
=
MODEM_PHYS
,
.
irq
=
-
EINVAL
,
/* changed later */
.
flags
=
UPF_BOOT_AUTOCONF
,
.
irqflags
=
IRQF_TRIGGER_RISING
,
...
...
@@ -345,13 +481,21 @@ static struct platform_device ams_delta_modem_device = {
},
};
static
int
__init
ams_delta_modem
_init
(
void
)
static
int
__init
late
_init
(
void
)
{
int
err
;
if
(
!
machine_is_ams_delta
())
return
-
ENODEV
;
err
=
gpio_request_array
(
latch_gpios
,
ARRAY_SIZE
(
latch_gpios
));
if
(
err
)
{
pr_err
(
"Couldn't take over latch1/latch2 GPIO pins
\n
"
);
return
err
;
}
platform_add_devices
(
late_devices
,
ARRAY_SIZE
(
late_devices
));
omap_cfg_reg
(
M14_1510_GPIO2
);
ams_delta_modem_ports
[
0
].
irq
=
gpio_to_irq
(
AMS_DELTA_GPIO_PIN_MODEM_IRQ
);
...
...
@@ -367,9 +511,16 @@ static int __init ams_delta_modem_init(void)
AMS_DELTA_LATCH2_MODEM_NRESET
|
AMS_DELTA_LATCH2_MODEM_CODEC
,
AMS_DELTA_LATCH2_MODEM_NRESET
|
AMS_DELTA_LATCH2_MODEM_CODEC
);
return
platform_device_register
(
&
ams_delta_modem_device
);
err
=
platform_device_register
(
&
ams_delta_modem_device
);
if
(
err
)
goto
gpio_free
;
return
0
;
gpio_free:
gpio_free
(
AMS_DELTA_GPIO_PIN_MODEM_IRQ
);
return
err
;
}
arch_initcall
(
ams_delta_modem
_init
);
late_initcall
(
late
_init
);
static
void
__init
ams_delta_map_io
(
void
)
{
...
...
@@ -388,6 +539,3 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
.
timer
=
&
omap1_timer
,
.
restart
=
omap1_restart
,
MACHINE_END
EXPORT_SYMBOL
(
ams_delta_latch1_write
);
EXPORT_SYMBOL
(
ams_delta_latch2_write
);
arch/arm/plat-omap/include/plat/board-ams-delta.h
浏览文件 @
967809bd
...
...
@@ -28,30 +28,6 @@
#if defined (CONFIG_MACH_AMS_DELTA)
#define AMS_DELTA_LATCH1_PHYS 0x01000000
#define AMS_DELTA_LATCH1_VIRT 0xEA000000
#define AMS_DELTA_MODEM_PHYS 0x04000000
#define AMS_DELTA_MODEM_VIRT 0xEB000000
#define AMS_DELTA_LATCH2_PHYS 0x08000000
#define AMS_DELTA_LATCH2_VIRT 0xEC000000
#define AMS_DELTA_LATCH1_LED_CAMERA 0x01
#define AMS_DELTA_LATCH1_LED_ADVERT 0x02
#define AMS_DELTA_LATCH1_LED_EMAIL 0x04
#define AMS_DELTA_LATCH1_LED_HANDSFREE 0x08
#define AMS_DELTA_LATCH1_LED_VOICEMAIL 0x10
#define AMS_DELTA_LATCH1_LED_VOICE 0x20
#define AMS_DELTA_LATCH2_LCD_VBLEN 0x0001
#define AMS_DELTA_LATCH2_LCD_NDISP 0x0002
#define AMS_DELTA_LATCH2_NAND_NCE 0x0004
#define AMS_DELTA_LATCH2_NAND_NRE 0x0008
#define AMS_DELTA_LATCH2_NAND_NWP 0x0010
#define AMS_DELTA_LATCH2_NAND_NWE 0x0020
#define AMS_DELTA_LATCH2_NAND_ALE 0x0040
#define AMS_DELTA_LATCH2_NAND_CLE 0x0080
#define AMD_DELTA_LATCH2_KEYBRD_PWR 0x0100
#define AMD_DELTA_LATCH2_KEYBRD_DATA 0x0200
#define AMD_DELTA_LATCH2_SCARD_RSTIN 0x0400
#define AMD_DELTA_LATCH2_SCARD_CMDVCC 0x0800
#define AMS_DELTA_LATCH2_MODEM_NRESET 0x1000
...
...
@@ -66,9 +42,29 @@
#define AMS_DELTA_GPIO_PIN_CONFIG 11
#define AMS_DELTA_GPIO_PIN_NAND_RB 12
#define AMS_DELTA_GPIO_PIN_LCD_VBLEN 240
#define AMS_DELTA_GPIO_PIN_LCD_NDISP 241
#define AMS_DELTA_GPIO_PIN_NAND_NCE 242
#define AMS_DELTA_GPIO_PIN_NAND_NRE 243
#define AMS_DELTA_GPIO_PIN_NAND_NWP 244
#define AMS_DELTA_GPIO_PIN_NAND_NWE 245
#define AMS_DELTA_GPIO_PIN_NAND_ALE 246
#define AMS_DELTA_GPIO_PIN_NAND_CLE 247
#define AMS_DELTA_GPIO_PIN_KEYBRD_PWR 248
#define AMS_DELTA_GPIO_PIN_KEYBRD_DATAOUT 249
#define AMS_DELTA_GPIO_PIN_SCARD_RSTIN 250
#define AMS_DELTA_GPIO_PIN_SCARD_CMDVCC 251
#define AMS_DELTA_GPIO_PIN_MODEM_NRESET 252
#define AMS_DELTA_GPIO_PIN_MODEM_CODEC 253
#define AMS_DELTA_LATCH2_GPIO_BASE AMS_DELTA_GPIO_PIN_LCD_VBLEN
#define AMS_DELTA_LATCH2_NGPIO 16
#ifndef __ASSEMBLY__
void
ams_delta_latch1_write
(
u8
mask
,
u8
value
);
void
ams_delta_latch2_write
(
u16
mask
,
u16
value
);
void
ams_delta_latch_write
(
int
base
,
int
ngpio
,
u16
mask
,
u16
value
);
#define ams_delta_latch2_write(mask, value) \
ams_delta_latch_write(AMS_DELTA_LATCH2_GPIO_BASE, \
AMS_DELTA_LATCH2_NGPIO, (mask), (value))
#endif
#endif
/* CONFIG_MACH_AMS_DELTA */
...
...
drivers/input/serio/ams_delta_serio.c
浏览文件 @
967809bd
...
...
@@ -92,8 +92,7 @@ static irqreturn_t ams_delta_serio_interrupt(int irq, void *dev_id)
static
int
ams_delta_serio_open
(
struct
serio
*
serio
)
{
/* enable keyboard */
ams_delta_latch2_write
(
AMD_DELTA_LATCH2_KEYBRD_PWR
,
AMD_DELTA_LATCH2_KEYBRD_PWR
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_KEYBRD_PWR
,
1
);
return
0
;
}
...
...
@@ -101,9 +100,32 @@ static int ams_delta_serio_open(struct serio *serio)
static
void
ams_delta_serio_close
(
struct
serio
*
serio
)
{
/* disable keyboard */
ams_delta_latch2_write
(
AMD_DELTA_LATCH2
_KEYBRD_PWR
,
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN
_KEYBRD_PWR
,
0
);
}
static
struct
gpio
ams_delta_gpios
[]
__initconst_or_module
=
{
{
.
gpio
=
AMS_DELTA_GPIO_PIN_KEYBRD_DATA
,
.
flags
=
GPIOF_DIR_IN
,
.
label
=
"serio-data"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
,
.
flags
=
GPIOF_DIR_IN
,
.
label
=
"serio-clock"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_KEYBRD_PWR
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"serio-power"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_KEYBRD_DATAOUT
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"serio-dataout"
,
},
};
static
int
__init
ams_delta_serio_init
(
void
)
{
int
err
;
...
...
@@ -123,19 +145,12 @@ static int __init ams_delta_serio_init(void)
strlcpy
(
ams_delta_serio
->
phys
,
"GPIO/serio0"
,
sizeof
(
ams_delta_serio
->
phys
));
err
=
gpio_request
(
AMS_DELTA_GPIO_PIN_KEYBRD_DATA
,
"serio-data"
);
err
=
gpio_request_array
(
ams_delta_gpios
,
ARRAY_SIZE
(
ams_delta_gpios
));
if
(
err
)
{
pr_err
(
"ams_delta_serio: Couldn't request gpio pin
for data
\n
"
);
pr_err
(
"ams_delta_serio: Couldn't request gpio pin
s
\n
"
);
goto
serio
;
}
gpio_direction_input
(
AMS_DELTA_GPIO_PIN_KEYBRD_DATA
);
err
=
gpio_request
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
,
"serio-clock"
);
if
(
err
)
{
pr_err
(
"ams_delta_serio: couldn't request gpio pin for clock
\n
"
);
goto
gpio_data
;
}
gpio_direction_input
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
);
err
=
request_irq
(
gpio_to_irq
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
),
ams_delta_serio_interrupt
,
IRQ_TYPE_EDGE_RISING
,
...
...
@@ -143,7 +158,7 @@ static int __init ams_delta_serio_init(void)
if
(
err
<
0
)
{
pr_err
(
"ams_delta_serio: couldn't request gpio interrupt %d
\n
"
,
gpio_to_irq
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
));
goto
gpio
_clk
;
goto
gpio
;
}
/*
* Since GPIO register handling for keyboard clock pin is performed
...
...
@@ -157,10 +172,9 @@ static int __init ams_delta_serio_init(void)
dev_info
(
&
ams_delta_serio
->
dev
,
"%s
\n
"
,
ams_delta_serio
->
name
);
return
0
;
gpio_clk:
gpio_free
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
);
gpio_data:
gpio_free
(
AMS_DELTA_GPIO_PIN_KEYBRD_DATA
);
gpio:
gpio_free_array
(
ams_delta_gpios
,
ARRAY_SIZE
(
ams_delta_gpios
));
serio:
kfree
(
ams_delta_serio
);
return
err
;
...
...
@@ -171,7 +185,7 @@ static void __exit ams_delta_serio_exit(void)
{
serio_unregister_port
(
ams_delta_serio
);
free_irq
(
OMAP_GPIO_IRQ
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
),
0
);
gpio_free
(
AMS_DELTA_GPIO_PIN_KEYBRD_CLK
);
gpio_free
(
AMS_DELTA_GPIO_PIN_KEYBRD_DATA
);
gpio_free
_array
(
ams_delta_gpios
,
ARRAY_SIZE
(
ams_delta_gpios
)
);
}
module_exit
(
ams_delta_serio_exit
);
drivers/leds/Kconfig
浏览文件 @
967809bd
...
...
@@ -74,13 +74,6 @@ config LEDS_S3C24XX
This option enables support for LEDs connected to GPIO lines
on Samsung S3C24XX series CPUs, such as the S3C2410 and S3C2440.
config LEDS_AMS_DELTA
tristate "LED Support for the Amstrad Delta (E3)"
depends on LEDS_CLASS
depends on MACH_AMS_DELTA
help
This option enables support for the LEDs on Amstrad Delta (E3).
config LEDS_NET48XX
tristate "LED Support for Soekris net48xx series Error LED"
depends on LEDS_CLASS
...
...
drivers/leds/Makefile
浏览文件 @
967809bd
...
...
@@ -12,7 +12,6 @@ obj-$(CONFIG_LEDS_LOCOMO) += leds-locomo.o
obj-$(CONFIG_LEDS_LM3530)
+=
leds-lm3530.o
obj-$(CONFIG_LEDS_MIKROTIK_RB532)
+=
leds-rb532.o
obj-$(CONFIG_LEDS_S3C24XX)
+=
leds-s3c24xx.o
obj-$(CONFIG_LEDS_AMS_DELTA)
+=
leds-ams-delta.o
obj-$(CONFIG_LEDS_NET48XX)
+=
leds-net48xx.o
obj-$(CONFIG_LEDS_NET5501)
+=
leds-net5501.o
obj-$(CONFIG_LEDS_WRAP)
+=
leds-wrap.o
...
...
drivers/leds/leds-ams-delta.c
已删除
100644 → 0
浏览文件 @
dcd6c922
/*
* LEDs driver for Amstrad Delta (E3)
*
* Copyright (C) 2006 Jonathan McDowell <noodles@earth.li>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/leds.h>
#include <plat/board-ams-delta.h>
/*
* Our context
*/
struct
ams_delta_led
{
struct
led_classdev
cdev
;
u8
bitmask
;
};
static
void
ams_delta_led_set
(
struct
led_classdev
*
led_cdev
,
enum
led_brightness
value
)
{
struct
ams_delta_led
*
led_dev
=
container_of
(
led_cdev
,
struct
ams_delta_led
,
cdev
);
if
(
value
)
ams_delta_latch1_write
(
led_dev
->
bitmask
,
led_dev
->
bitmask
);
else
ams_delta_latch1_write
(
led_dev
->
bitmask
,
0
);
}
static
struct
ams_delta_led
ams_delta_leds
[]
=
{
{
.
cdev
=
{
.
name
=
"ams-delta::camera"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_CAMERA
,
},
{
.
cdev
=
{
.
name
=
"ams-delta::advert"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_ADVERT
,
},
{
.
cdev
=
{
.
name
=
"ams-delta::email"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_EMAIL
,
},
{
.
cdev
=
{
.
name
=
"ams-delta::handsfree"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_HANDSFREE
,
},
{
.
cdev
=
{
.
name
=
"ams-delta::voicemail"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_VOICEMAIL
,
},
{
.
cdev
=
{
.
name
=
"ams-delta::voice"
,
.
brightness_set
=
ams_delta_led_set
,
},
.
bitmask
=
AMS_DELTA_LATCH1_LED_VOICE
,
},
};
static
int
ams_delta_led_probe
(
struct
platform_device
*
pdev
)
{
int
i
,
ret
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
ams_delta_leds
);
i
++
)
{
ams_delta_leds
[
i
].
cdev
.
flags
|=
LED_CORE_SUSPENDRESUME
;
ret
=
led_classdev_register
(
&
pdev
->
dev
,
&
ams_delta_leds
[
i
].
cdev
);
if
(
ret
<
0
)
goto
fail
;
}
return
0
;
fail:
while
(
--
i
>=
0
)
led_classdev_unregister
(
&
ams_delta_leds
[
i
].
cdev
);
return
ret
;
}
static
int
ams_delta_led_remove
(
struct
platform_device
*
pdev
)
{
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
ams_delta_leds
);
i
++
)
led_classdev_unregister
(
&
ams_delta_leds
[
i
].
cdev
);
return
0
;
}
static
struct
platform_driver
ams_delta_led_driver
=
{
.
probe
=
ams_delta_led_probe
,
.
remove
=
ams_delta_led_remove
,
.
driver
=
{
.
name
=
"ams-delta-led"
,
.
owner
=
THIS_MODULE
,
},
};
module_platform_driver
(
ams_delta_led_driver
);
MODULE_AUTHOR
(
"Jonathan McDowell <noodles@earth.li>"
);
MODULE_DESCRIPTION
(
"Amstrad Delta LED driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:ams-delta-led"
);
drivers/mtd/nand/ams-delta.c
浏览文件 @
967809bd
...
...
@@ -26,7 +26,7 @@
#include <asm/io.h>
#include <mach/hardware.h>
#include <asm/sizes.h>
#include <
asm
/gpio.h>
#include <
linux
/gpio.h>
#include <plat/board-ams-delta.h>
/*
...
...
@@ -34,8 +34,6 @@
*/
static
struct
mtd_info
*
ams_delta_mtd
=
NULL
;
#define NAND_MASK (AMS_DELTA_LATCH2_NAND_NRE | AMS_DELTA_LATCH2_NAND_NWE | AMS_DELTA_LATCH2_NAND_CLE | AMS_DELTA_LATCH2_NAND_ALE | AMS_DELTA_LATCH2_NAND_NCE | AMS_DELTA_LATCH2_NAND_NWP)
/*
* Define partitions for flash devices
*/
...
...
@@ -68,10 +66,9 @@ static void ams_delta_write_byte(struct mtd_info *mtd, u_char byte)
writew
(
0
,
io_base
+
OMAP_MPUIO_IO_CNTL
);
writew
(
byte
,
this
->
IO_ADDR_W
);
ams_delta_latch2_write
(
AMS_DELTA_LATCH2
_NAND_NWE
,
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN
_NAND_NWE
,
0
);
ndelay
(
40
);
ams_delta_latch2_write
(
AMS_DELTA_LATCH2_NAND_NWE
,
AMS_DELTA_LATCH2_NAND_NWE
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_NAND_NWE
,
1
);
}
static
u_char
ams_delta_read_byte
(
struct
mtd_info
*
mtd
)
...
...
@@ -80,12 +77,11 @@ static u_char ams_delta_read_byte(struct mtd_info *mtd)
struct
nand_chip
*
this
=
mtd
->
priv
;
void
__iomem
*
io_base
=
this
->
priv
;
ams_delta_latch2_write
(
AMS_DELTA_LATCH2
_NAND_NRE
,
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN
_NAND_NRE
,
0
);
ndelay
(
40
);
writew
(
~
0
,
io_base
+
OMAP_MPUIO_IO_CNTL
);
res
=
readw
(
this
->
IO_ADDR_R
);
ams_delta_latch2_write
(
AMS_DELTA_LATCH2_NAND_NRE
,
AMS_DELTA_LATCH2_NAND_NRE
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_NAND_NRE
,
1
);
return
res
;
}
...
...
@@ -132,15 +128,12 @@ static void ams_delta_hwcontrol(struct mtd_info *mtd, int cmd,
{
if
(
ctrl
&
NAND_CTRL_CHANGE
)
{
unsigned
long
bits
;
bits
=
(
~
ctrl
&
NAND_NCE
)
?
AMS_DELTA_LATCH2_NAND_NCE
:
0
;
bits
|=
(
ctrl
&
NAND_CLE
)
?
AMS_DELTA_LATCH2_NAND_CLE
:
0
;
bits
|=
(
ctrl
&
NAND_ALE
)
?
AMS_DELTA_LATCH2_NAND_ALE
:
0
;
ams_delta_latch2_write
(
AMS_DELTA_LATCH2_NAND_CLE
|
AMS_DELTA_LATCH2_NAND_ALE
|
AMS_DELTA_LATCH2_NAND_NCE
,
bits
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_NAND_NCE
,
(
ctrl
&
NAND_NCE
)
==
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_NAND_CLE
,
(
ctrl
&
NAND_CLE
)
!=
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_NAND_ALE
,
(
ctrl
&
NAND_ALE
)
!=
0
);
}
if
(
cmd
!=
NAND_CMD_NONE
)
...
...
@@ -152,6 +145,39 @@ static int ams_delta_nand_ready(struct mtd_info *mtd)
return
gpio_get_value
(
AMS_DELTA_GPIO_PIN_NAND_RB
);
}
static
struct
gpio
_mandatory_gpio
[]
__initconst_or_module
=
{
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_NCE
,
.
flags
=
GPIOF_OUT_INIT_HIGH
,
.
label
=
"nand_nce"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_NRE
,
.
flags
=
GPIOF_OUT_INIT_HIGH
,
.
label
=
"nand_nre"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_NWP
,
.
flags
=
GPIOF_OUT_INIT_HIGH
,
.
label
=
"nand_nwp"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_NWE
,
.
flags
=
GPIOF_OUT_INIT_HIGH
,
.
label
=
"nand_nwe"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_ALE
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"nand_ale"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_NAND_CLE
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"nand_cle"
,
},
};
/*
* Main initialization routine
*/
...
...
@@ -223,10 +249,9 @@ static int __devinit ams_delta_init(struct platform_device *pdev)
platform_set_drvdata
(
pdev
,
io_base
);
/* Set chip enabled, but */
ams_delta_latch2_write
(
NAND_MASK
,
AMS_DELTA_LATCH2_NAND_NRE
|
AMS_DELTA_LATCH2_NAND_NWE
|
AMS_DELTA_LATCH2_NAND_NCE
|
AMS_DELTA_LATCH2_NAND_NWP
);
err
=
gpio_request_array
(
_mandatory_gpio
,
ARRAY_SIZE
(
_mandatory_gpio
));
if
(
err
)
goto
out_gpio
;
/* Scan to find existence of the device */
if
(
nand_scan
(
ams_delta_mtd
,
1
))
{
...
...
@@ -241,7 +266,10 @@ static int __devinit ams_delta_init(struct platform_device *pdev)
goto
out
;
out_mtd:
gpio_free_array
(
_mandatory_gpio
,
ARRAY_SIZE
(
_mandatory_gpio
));
out_gpio:
platform_set_drvdata
(
pdev
,
NULL
);
gpio_free
(
AMS_DELTA_GPIO_PIN_NAND_RB
);
iounmap
(
io_base
);
out_release_io:
release_mem_region
(
res
->
start
,
resource_size
(
res
));
...
...
@@ -262,6 +290,8 @@ static int __devexit ams_delta_cleanup(struct platform_device *pdev)
/* Release resources, unregister device */
nand_release
(
ams_delta_mtd
);
gpio_free_array
(
_mandatory_gpio
,
ARRAY_SIZE
(
_mandatory_gpio
));
gpio_free
(
AMS_DELTA_GPIO_PIN_NAND_RB
);
iounmap
(
io_base
);
release_mem_region
(
res
->
start
,
resource_size
(
res
));
...
...
drivers/video/omap/lcd_ams_delta.c
浏览文件 @
967809bd
...
...
@@ -25,6 +25,7 @@
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/lcd.h>
#include <linux/gpio.h>
#include <plat/board-ams-delta.h>
#include <mach/hardware.h>
...
...
@@ -98,29 +99,41 @@ static struct lcd_ops ams_delta_lcd_ops = {
/* omapfb panel section */
static
struct
gpio
_gpios
[]
__initconst_or_module
=
{
{
.
gpio
=
AMS_DELTA_GPIO_PIN_LCD_VBLEN
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"lcd_vblen"
,
},
{
.
gpio
=
AMS_DELTA_GPIO_PIN_LCD_NDISP
,
.
flags
=
GPIOF_OUT_INIT_LOW
,
.
label
=
"lcd_ndisp"
,
},
};
static
int
ams_delta_panel_init
(
struct
lcd_panel
*
panel
,
struct
omapfb_device
*
fbdev
)
{
return
0
;
return
gpio_request_array
(
_gpios
,
ARRAY_SIZE
(
_gpios
))
;
}
static
void
ams_delta_panel_cleanup
(
struct
lcd_panel
*
panel
)
{
gpio_free_array
(
_gpios
,
ARRAY_SIZE
(
_gpios
));
}
static
int
ams_delta_panel_enable
(
struct
lcd_panel
*
panel
)
{
ams_delta_latch2_write
(
AMS_DELTA_LATCH2_LCD_NDISP
,
AMS_DELTA_LATCH2_LCD_NDISP
);
ams_delta_latch2_write
(
AMS_DELTA_LATCH2_LCD_VBLEN
,
AMS_DELTA_LATCH2_LCD_VBLEN
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_LCD_NDISP
,
1
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN_LCD_VBLEN
,
1
);
return
0
;
}
static
void
ams_delta_panel_disable
(
struct
lcd_panel
*
panel
)
{
ams_delta_latch2_write
(
AMS_DELTA_LATCH2
_LCD_VBLEN
,
0
);
ams_delta_latch2_write
(
AMS_DELTA_LATCH2
_LCD_NDISP
,
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN
_LCD_VBLEN
,
0
);
gpio_set_value
(
AMS_DELTA_GPIO_PIN
_LCD_NDISP
,
0
);
}
static
unsigned
long
ams_delta_panel_get_caps
(
struct
lcd_panel
*
panel
)
...
...
sound/soc/omap/ams-delta.c
浏览文件 @
967809bd
...
...
@@ -635,7 +635,7 @@ static int __init ams_delta_module_init(void)
platform_device_put
(
ams_delta_audio_platform_device
);
return
ret
;
}
module_init
(
ams_delta_module_init
);
late_initcall
(
ams_delta_module_init
);
static
void
__exit
ams_delta_module_exit
(
void
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录