Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
42392762
Commit
42392762
authored
Mar 01, 2012
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'omap1' into ams-delta
parents
6b21d18e
967809bd
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
318 additions
and
249 deletions
+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
No files found.
arch/arm/mach-omap1/Kconfig
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
deleted
100644 → 0
View file @
6b21d18e
/*
* 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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
View file @
42392762
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment