Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
854bf596
Commit
854bf596
authored
Jan 06, 2011
by
Kukjin Kim
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'next-s3c24xx' into for-next
parents
ab10f1dd
13d27f05
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
261 additions
and
18 deletions
+261
-18
arch/arm/mach-s3c2410/include/mach/irqs.h
arch/arm/mach-s3c2410/include/mach/irqs.h
+2
-2
arch/arm/mach-s3c2410/include/mach/map.h
arch/arm/mach-s3c2410/include/mach/map.h
+2
-2
arch/arm/mach-s3c2410/include/mach/regs-s3c2443-clock.h
arch/arm/mach-s3c2410/include/mach/regs-s3c2443-clock.h
+1
-0
arch/arm/mach-s3c2416/Kconfig
arch/arm/mach-s3c2416/Kconfig
+12
-0
arch/arm/mach-s3c2416/Makefile
arch/arm/mach-s3c2416/Makefile
+4
-0
arch/arm/mach-s3c2416/clock.c
arch/arm/mach-s3c2416/clock.c
+13
-5
arch/arm/mach-s3c2416/mach-smdk2416.c
arch/arm/mach-s3c2416/mach-smdk2416.c
+23
-0
arch/arm/mach-s3c2416/s3c2416.c
arch/arm/mach-s3c2416/s3c2416.c
+5
-0
arch/arm/mach-s3c2416/setup-sdhci-gpio.c
arch/arm/mach-s3c2416/setup-sdhci-gpio.c
+34
-0
arch/arm/mach-s3c2416/setup-sdhci.c
arch/arm/mach-s3c2416/setup-sdhci.c
+61
-0
arch/arm/mach-s3c2443/Kconfig
arch/arm/mach-s3c2443/Kconfig
+2
-1
arch/arm/mach-s3c2443/clock.c
arch/arm/mach-s3c2443/clock.c
+2
-2
arch/arm/mach-s3c2443/mach-smdk2443.c
arch/arm/mach-s3c2443/mach-smdk2443.c
+8
-1
arch/arm/mach-s3c2443/s3c2443.c
arch/arm/mach-s3c2443/s3c2443.c
+7
-0
arch/arm/plat-s3c24xx/devs.c
arch/arm/plat-s3c24xx/devs.c
+0
-1
arch/arm/plat-s3c24xx/s3c2443-clock.c
arch/arm/plat-s3c24xx/s3c2443-clock.c
+1
-1
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Kconfig
+6
-0
arch/arm/plat-samsung/dev-nand.c
arch/arm/plat-samsung/dev-nand.c
+0
-2
arch/arm/plat-samsung/gpio-config.c
arch/arm/plat-samsung/gpio-config.c
+42
-0
arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
+1
-1
arch/arm/plat-samsung/include/plat/sdhci.h
arch/arm/plat-samsung/include/plat/sdhci.h
+35
-0
No files found.
arch/arm/mach-s3c2410/include/mach/irqs.h
View file @
854bf596
...
@@ -152,8 +152,8 @@
...
@@ -152,8 +152,8 @@
#define IRQ_S3C2416_HSMMC0 S3C2410_IRQ(21)
/* S3C2416/S3C2450 */
#define IRQ_S3C2416_HSMMC0 S3C2410_IRQ(21)
/* S3C2416/S3C2450 */
#define IRQ_HSMMC0 IRQ_S3C24
43_HSMMC
#define IRQ_HSMMC0 IRQ_S3C24
16_HSMMC0
#define IRQ_HSMMC1 IRQ_S3C24
16_HSMMC0
#define IRQ_HSMMC1 IRQ_S3C24
43_HSMMC
#define IRQ_S3C2443_LCD1 S3C2410_IRQSUB(14)
#define IRQ_S3C2443_LCD1 S3C2410_IRQSUB(14)
#define IRQ_S3C2443_LCD2 S3C2410_IRQSUB(15)
#define IRQ_S3C2443_LCD2 S3C2410_IRQSUB(15)
...
...
arch/arm/mach-s3c2410/include/mach/map.h
View file @
854bf596
...
@@ -112,8 +112,8 @@
...
@@ -112,8 +112,8 @@
#define S3C_PA_IIC S3C2410_PA_IIC
#define S3C_PA_IIC S3C2410_PA_IIC
#define S3C_PA_UART S3C24XX_PA_UART
#define S3C_PA_UART S3C24XX_PA_UART
#define S3C_PA_USBHOST S3C2410_PA_USBHOST
#define S3C_PA_USBHOST S3C2410_PA_USBHOST
#define S3C_PA_HSMMC0 S3C24
43_PA_HSMMC
#define S3C_PA_HSMMC0 S3C24
16_PA_HSMMC0
#define S3C_PA_HSMMC1 S3C24
16_PA_HSMMC0
#define S3C_PA_HSMMC1 S3C24
43_PA_HSMMC
#define S3C_PA_WDT S3C2410_PA_WATCHDOG
#define S3C_PA_WDT S3C2410_PA_WATCHDOG
#define S3C_PA_NAND S3C24XX_PA_NAND
#define S3C_PA_NAND S3C24XX_PA_NAND
...
...
arch/arm/mach-s3c2410/include/mach/regs-s3c2443-clock.h
View file @
854bf596
...
@@ -86,6 +86,7 @@
...
@@ -86,6 +86,7 @@
#define S3C2443_HCLKCON_LCDC (1<<9)
#define S3C2443_HCLKCON_LCDC (1<<9)
#define S3C2443_HCLKCON_USBH (1<<11)
#define S3C2443_HCLKCON_USBH (1<<11)
#define S3C2443_HCLKCON_USBD (1<<12)
#define S3C2443_HCLKCON_USBD (1<<12)
#define S3C2416_HCLKCON_HSMMC0 (1<<15)
#define S3C2443_HCLKCON_HSMMC (1<<16)
#define S3C2443_HCLKCON_HSMMC (1<<16)
#define S3C2443_HCLKCON_CFC (1<<17)
#define S3C2443_HCLKCON_CFC (1<<17)
#define S3C2443_HCLKCON_SSMC (1<<18)
#define S3C2443_HCLKCON_SSMC (1<<18)
...
...
arch/arm/mach-s3c2416/Kconfig
View file @
854bf596
...
@@ -31,6 +31,17 @@ config S3C2416_PM
...
@@ -31,6 +31,17 @@ config S3C2416_PM
help
help
Internal config node to apply S3C2416 power management
Internal config node to apply S3C2416 power management
config S3C2416_SETUP_SDHCI
bool
select S3C2416_SETUP_SDHCI_GPIO
help
Internal helper functions for S3C2416 based SDHCI systems
config S3C2416_SETUP_SDHCI_GPIO
bool
help
Common setup code for SDHCI gpio.
menu "S3C2416 Machines"
menu "S3C2416 Machines"
config MACH_SMDK2416
config MACH_SMDK2416
...
@@ -42,6 +53,7 @@ config MACH_SMDK2416
...
@@ -42,6 +53,7 @@ config MACH_SMDK2416
select S3C_DEV_HSMMC1
select S3C_DEV_HSMMC1
select S3C_DEV_NAND
select S3C_DEV_NAND
select S3C_DEV_USB_HOST
select S3C_DEV_USB_HOST
select S3C2416_SETUP_SDHCI
select S3C2416_PM if PM
select S3C2416_PM if PM
help
help
Say Y here if you are using an SMDK2416
Say Y here if you are using an SMDK2416
...
...
arch/arm/mach-s3c2416/Makefile
View file @
854bf596
...
@@ -14,6 +14,10 @@ obj-$(CONFIG_CPU_S3C2416) += irq.o
...
@@ -14,6 +14,10 @@ obj-$(CONFIG_CPU_S3C2416) += irq.o
obj-$(CONFIG_S3C2416_PM)
+=
pm.o
obj-$(CONFIG_S3C2416_PM)
+=
pm.o
#obj-$(CONFIG_S3C2416_DMA) += dma.o
#obj-$(CONFIG_S3C2416_DMA) += dma.o
# Device setup
obj-$(CONFIG_S3C2416_SETUP_SDHCI)
+=
setup-sdhci.o
obj-$(CONFIG_S3C2416_SETUP_SDHCI_GPIO)
+=
setup-sdhci-gpio.o
# Machine support
# Machine support
obj-$(CONFIG_MACH_SMDK2416)
+=
mach-smdk2416.o
obj-$(CONFIG_MACH_SMDK2416)
+=
mach-smdk2416.o
arch/arm/mach-s3c2416/clock.c
View file @
854bf596
...
@@ -38,12 +38,11 @@ static unsigned int armdiv[8] = {
...
@@ -38,12 +38,11 @@ static unsigned int armdiv[8] = {
[
7
]
=
8
,
[
7
]
=
8
,
};
};
/* ID to hardware numbering, 0 is HSMMC1, 1 is HSMMC0 */
static
struct
clksrc_clk
hsmmc_div
[]
=
{
static
struct
clksrc_clk
hsmmc_div
[]
=
{
[
0
]
=
{
[
0
]
=
{
.
clk
=
{
.
clk
=
{
.
name
=
"hsmmc-div"
,
.
name
=
"hsmmc-div"
,
.
id
=
1
,
.
id
=
0
,
.
parent
=
&
clk_esysclk
.
clk
,
.
parent
=
&
clk_esysclk
.
clk
,
},
},
.
reg_div
=
{
.
reg
=
S3C2416_CLKDIV2
,
.
size
=
2
,
.
shift
=
6
},
.
reg_div
=
{
.
reg
=
S3C2416_CLKDIV2
,
.
size
=
2
,
.
shift
=
6
},
...
@@ -51,7 +50,7 @@ static struct clksrc_clk hsmmc_div[] = {
...
@@ -51,7 +50,7 @@ static struct clksrc_clk hsmmc_div[] = {
[
1
]
=
{
[
1
]
=
{
.
clk
=
{
.
clk
=
{
.
name
=
"hsmmc-div"
,
.
name
=
"hsmmc-div"
,
.
id
=
0
,
.
id
=
1
,
.
parent
=
&
clk_esysclk
.
clk
,
.
parent
=
&
clk_esysclk
.
clk
,
},
},
.
reg_div
=
{
.
reg
=
S3C2443_CLKDIV1
,
.
size
=
2
,
.
shift
=
6
},
.
reg_div
=
{
.
reg
=
S3C2443_CLKDIV1
,
.
size
=
2
,
.
shift
=
6
},
...
@@ -61,7 +60,7 @@ static struct clksrc_clk hsmmc_div[] = {
...
@@ -61,7 +60,7 @@ static struct clksrc_clk hsmmc_div[] = {
static
struct
clksrc_clk
hsmmc_mux
[]
=
{
static
struct
clksrc_clk
hsmmc_mux
[]
=
{
[
0
]
=
{
[
0
]
=
{
.
clk
=
{
.
clk
=
{
.
id
=
1
,
.
id
=
0
,
.
name
=
"hsmmc-if"
,
.
name
=
"hsmmc-if"
,
.
ctrlbit
=
(
1
<<
6
),
.
ctrlbit
=
(
1
<<
6
),
.
enable
=
s3c2443_clkcon_enable_s
,
.
enable
=
s3c2443_clkcon_enable_s
,
...
@@ -77,7 +76,7 @@ static struct clksrc_clk hsmmc_mux[] = {
...
@@ -77,7 +76,7 @@ static struct clksrc_clk hsmmc_mux[] = {
},
},
[
1
]
=
{
[
1
]
=
{
.
clk
=
{
.
clk
=
{
.
id
=
0
,
.
id
=
1
,
.
name
=
"hsmmc-if"
,
.
name
=
"hsmmc-if"
,
.
ctrlbit
=
(
1
<<
12
),
.
ctrlbit
=
(
1
<<
12
),
.
enable
=
s3c2443_clkcon_enable_s
,
.
enable
=
s3c2443_clkcon_enable_s
,
...
@@ -93,6 +92,13 @@ static struct clksrc_clk hsmmc_mux[] = {
...
@@ -93,6 +92,13 @@ static struct clksrc_clk hsmmc_mux[] = {
},
},
};
};
static
struct
clk
hsmmc0_clk
=
{
.
name
=
"hsmmc"
,
.
id
=
0
,
.
parent
=
&
clk_h
,
.
enable
=
s3c2443_clkcon_enable_h
,
.
ctrlbit
=
S3C2416_HCLKCON_HSMMC0
,
};
static
inline
unsigned
int
s3c2416_fclk_div
(
unsigned
long
clkcon0
)
static
inline
unsigned
int
s3c2416_fclk_div
(
unsigned
long
clkcon0
)
{
{
...
@@ -130,6 +136,8 @@ void __init s3c2416_init_clocks(int xtal)
...
@@ -130,6 +136,8 @@ void __init s3c2416_init_clocks(int xtal)
for
(
ptr
=
0
;
ptr
<
ARRAY_SIZE
(
clksrcs
);
ptr
++
)
for
(
ptr
=
0
;
ptr
<
ARRAY_SIZE
(
clksrcs
);
ptr
++
)
s3c_register_clksrc
(
clksrcs
[
ptr
],
1
);
s3c_register_clksrc
(
clksrcs
[
ptr
],
1
);
s3c24xx_register_clock
(
&
hsmmc0_clk
);
s3c_pwmclk_init
();
s3c_pwmclk_init
();
}
}
arch/arm/mach-s3c2416/mach-smdk2416.c
View file @
854bf596
...
@@ -46,6 +46,7 @@
...
@@ -46,6 +46,7 @@
#include <plat/devs.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <plat/cpu.h>
#include <plat/nand.h>
#include <plat/nand.h>
#include <plat/sdhci.h>
#include <plat/regs-fb-v4.h>
#include <plat/regs-fb-v4.h>
#include <plat/fb.h>
#include <plat/fb.h>
...
@@ -110,6 +111,13 @@ static struct s3c2410_uartcfg smdk2416_uartcfgs[] __initdata = {
...
@@ -110,6 +111,13 @@ static struct s3c2410_uartcfg smdk2416_uartcfgs[] __initdata = {
.
ucon
=
UCON
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
|
0x50
,
.
ulcon
=
ULCON
|
0x50
,
.
ufcon
=
UFCON
,
.
ufcon
=
UFCON
,
},
[
3
]
=
{
.
hwport
=
3
,
.
flags
=
0
,
.
ucon
=
UCON
,
.
ulcon
=
ULCON
,
.
ufcon
=
UFCON
,
}
}
};
};
...
@@ -159,6 +167,18 @@ static struct s3c_fb_platdata smdk2416_fb_platdata = {
...
@@ -159,6 +167,18 @@ static struct s3c_fb_platdata smdk2416_fb_platdata = {
.
vidcon1
=
VIDCON1_INV_HSYNC
|
VIDCON1_INV_VSYNC
,
.
vidcon1
=
VIDCON1_INV_HSYNC
|
VIDCON1_INV_VSYNC
,
};
};
static
struct
s3c_sdhci_platdata
smdk2416_hsmmc0_pdata
__initdata
=
{
.
max_width
=
4
,
.
cd_type
=
S3C_SDHCI_CD_GPIO
,
.
ext_cd_gpio
=
S3C2410_GPF
(
1
),
.
ext_cd_gpio_invert
=
1
,
};
static
struct
s3c_sdhci_platdata
smdk2416_hsmmc1_pdata
__initdata
=
{
.
max_width
=
4
,
.
cd_type
=
S3C_SDHCI_CD_NONE
,
};
static
struct
platform_device
*
smdk2416_devices
[]
__initdata
=
{
static
struct
platform_device
*
smdk2416_devices
[]
__initdata
=
{
&
s3c_device_fb
,
&
s3c_device_fb
,
&
s3c_device_wdt
,
&
s3c_device_wdt
,
...
@@ -180,6 +200,9 @@ static void __init smdk2416_machine_init(void)
...
@@ -180,6 +200,9 @@ static void __init smdk2416_machine_init(void)
s3c_i2c0_set_platdata
(
NULL
);
s3c_i2c0_set_platdata
(
NULL
);
s3c_fb_set_platdata
(
&
smdk2416_fb_platdata
);
s3c_fb_set_platdata
(
&
smdk2416_fb_platdata
);
s3c_sdhci0_set_platdata
(
&
smdk2416_hsmmc0_pdata
);
s3c_sdhci1_set_platdata
(
&
smdk2416_hsmmc1_pdata
);
gpio_request
(
S3C2410_GPB
(
4
),
"USBHost Power"
);
gpio_request
(
S3C2410_GPB
(
4
),
"USBHost Power"
);
gpio_direction_output
(
S3C2410_GPB
(
4
),
1
);
gpio_direction_output
(
S3C2410_GPB
(
4
),
1
);
...
...
arch/arm/mach-s3c2416/s3c2416.c
View file @
854bf596
...
@@ -53,6 +53,7 @@
...
@@ -53,6 +53,7 @@
#include <plat/s3c2416.h>
#include <plat/s3c2416.h>
#include <plat/devs.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <plat/cpu.h>
#include <plat/sdhci.h>
#include <plat/iic-core.h>
#include <plat/iic-core.h>
#include <plat/fb-core.h>
#include <plat/fb-core.h>
...
@@ -115,6 +116,10 @@ void __init s3c2416_map_io(void)
...
@@ -115,6 +116,10 @@ void __init s3c2416_map_io(void)
s3c24xx_gpiocfg_default
.
set_pull
=
s3c_gpio_setpull_updown
;
s3c24xx_gpiocfg_default
.
set_pull
=
s3c_gpio_setpull_updown
;
s3c24xx_gpiocfg_default
.
get_pull
=
s3c_gpio_getpull_updown
;
s3c24xx_gpiocfg_default
.
get_pull
=
s3c_gpio_getpull_updown
;
/* initialize device information early */
s3c2416_default_sdhci0
();
s3c2416_default_sdhci1
();
iotable_init
(
s3c2416_iodesc
,
ARRAY_SIZE
(
s3c2416_iodesc
));
iotable_init
(
s3c2416_iodesc
,
ARRAY_SIZE
(
s3c2416_iodesc
));
}
}
...
...
arch/arm/mach-s3c2416/setup-sdhci-gpio.c
0 → 100644
View file @
854bf596
/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c
*
* Copyright 2010 Promwad Innovation Company
* Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
*
* S3C2416 - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
*
* Based on mach-s3c64xx/setup-sdhci-gpio.c
*
* 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/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <mach/regs-gpio.h>
#include <plat/gpio-cfg.h>
void
s3c2416_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
dev
,
int
width
)
{
s3c_gpio_cfgrange_nopull
(
S3C2410_GPE
(
5
),
2
+
width
,
S3C_GPIO_SFN
(
2
));
}
void
s3c2416_setup_sdhci1_cfg_gpio
(
struct
platform_device
*
dev
,
int
width
)
{
s3c_gpio_cfgrange_nopull
(
S3C2410_GPL
(
0
),
width
,
S3C_GPIO_SFN
(
2
));
s3c_gpio_cfgrange_nopull
(
S3C2410_GPL
(
8
),
2
,
S3C_GPIO_SFN
(
2
));
}
arch/arm/mach-s3c2416/setup-sdhci.c
0 → 100644
View file @
854bf596
/* linux/arch/arm/mach-s3c2416/setup-sdhci.c
*
* Copyright 2010 Promwad Innovation Company
* Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
*
* S3C2416 - Helper functions for settign up SDHCI device(s) (HSMMC)
*
* Based on mach-s3c64xx/setup-sdhci.c
*
* 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/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/mmc/card.h>
#include <linux/mmc/host.h>
#include <plat/regs-sdhci.h>
#include <plat/sdhci.h>
/* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */
char
*
s3c2416_hsmmc_clksrcs
[
4
]
=
{
[
0
]
=
"hsmmc"
,
[
1
]
=
"hsmmc"
,
[
2
]
=
"hsmmc-if"
,
/* [3] = "48m", - note not successfully used yet */
};
void
s3c2416_setup_sdhci_cfg_card
(
struct
platform_device
*
dev
,
void
__iomem
*
r
,
struct
mmc_ios
*
ios
,
struct
mmc_card
*
card
)
{
u32
ctrl2
,
ctrl3
;
ctrl2
=
__raw_readl
(
r
+
S3C_SDHCI_CONTROL2
);
ctrl2
&=
S3C_SDHCI_CTRL2_SELBASECLK_MASK
;
ctrl2
|=
(
S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR
|
S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK
|
S3C_SDHCI_CTRL2_ENFBCLKRX
|
S3C_SDHCI_CTRL2_DFCNT_NONE
|
S3C_SDHCI_CTRL2_ENCLKOUTHOLD
);
if
(
ios
->
clock
<
25
*
1000000
)
ctrl3
=
(
S3C_SDHCI_CTRL3_FCSEL3
|
S3C_SDHCI_CTRL3_FCSEL2
|
S3C_SDHCI_CTRL3_FCSEL1
|
S3C_SDHCI_CTRL3_FCSEL0
);
else
ctrl3
=
(
S3C_SDHCI_CTRL3_FCSEL1
|
S3C_SDHCI_CTRL3_FCSEL0
);
__raw_writel
(
ctrl2
,
r
+
S3C_SDHCI_CONTROL2
);
__raw_writel
(
ctrl3
,
r
+
S3C_SDHCI_CONTROL3
);
}
arch/arm/mach-s3c2443/Kconfig
View file @
854bf596
...
@@ -10,6 +10,7 @@ config CPU_S3C2443
...
@@ -10,6 +10,7 @@ config CPU_S3C2443
select CPU_LLSERIAL_S3C2440
select CPU_LLSERIAL_S3C2440
select SAMSUNG_CLKSRC
select SAMSUNG_CLKSRC
select S3C2443_CLOCK
select S3C2443_CLOCK
select S3C_GPIO_PULL_S3C2443
help
help
Support for the S3C2443 SoC from the S3C24XX line
Support for the S3C2443 SoC from the S3C24XX line
...
@@ -25,7 +26,7 @@ config MACH_SMDK2443
...
@@ -25,7 +26,7 @@ config MACH_SMDK2443
bool "SMDK2443"
bool "SMDK2443"
select CPU_S3C2443
select CPU_S3C2443
select MACH_SMDK
select MACH_SMDK
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC
1
help
help
Say Y here if you are using an SMDK2443
Say Y here if you are using an SMDK2443
...
...
arch/arm/mach-s3c2443/clock.c
View file @
854bf596
...
@@ -196,7 +196,7 @@ static struct clksrc_clk clk_hsspi = {
...
@@ -196,7 +196,7 @@ static struct clksrc_clk clk_hsspi = {
static
struct
clksrc_clk
clk_hsmmc_div
=
{
static
struct
clksrc_clk
clk_hsmmc_div
=
{
.
clk
=
{
.
clk
=
{
.
name
=
"hsmmc-div"
,
.
name
=
"hsmmc-div"
,
.
id
=
-
1
,
.
id
=
1
,
.
parent
=
&
clk_esysclk
.
clk
,
.
parent
=
&
clk_esysclk
.
clk
,
},
},
.
reg_div
=
{
.
reg
=
S3C2443_CLKDIV1
,
.
size
=
2
,
.
shift
=
6
},
.
reg_div
=
{
.
reg
=
S3C2443_CLKDIV1
,
.
size
=
2
,
.
shift
=
6
},
...
@@ -231,7 +231,7 @@ static int s3c2443_enable_hsmmc(struct clk *clk, int enable)
...
@@ -231,7 +231,7 @@ static int s3c2443_enable_hsmmc(struct clk *clk, int enable)
static
struct
clk
clk_hsmmc
=
{
static
struct
clk
clk_hsmmc
=
{
.
name
=
"hsmmc-if"
,
.
name
=
"hsmmc-if"
,
.
id
=
-
1
,
.
id
=
1
,
.
parent
=
&
clk_hsmmc_div
.
clk
,
.
parent
=
&
clk_hsmmc_div
.
clk
,
.
enable
=
s3c2443_enable_hsmmc
,
.
enable
=
s3c2443_enable_hsmmc
,
.
ops
=
&
(
struct
clk_ops
)
{
.
ops
=
&
(
struct
clk_ops
)
{
...
...
arch/arm/mach-s3c2443/mach-smdk2443.c
View file @
854bf596
...
@@ -99,13 +99,20 @@ static struct s3c2410_uartcfg smdk2443_uartcfgs[] __initdata = {
...
@@ -99,13 +99,20 @@ static struct s3c2410_uartcfg smdk2443_uartcfgs[] __initdata = {
.
ucon
=
0x3c5
,
.
ucon
=
0x3c5
,
.
ulcon
=
0x43
,
.
ulcon
=
0x43
,
.
ufcon
=
0x51
,
.
ufcon
=
0x51
,
},
[
3
]
=
{
.
hwport
=
3
,
.
flags
=
0
,
.
ucon
=
0x3c5
,
.
ulcon
=
0x03
,
.
ufcon
=
0x51
,
}
}
};
};
static
struct
platform_device
*
smdk2443_devices
[]
__initdata
=
{
static
struct
platform_device
*
smdk2443_devices
[]
__initdata
=
{
&
s3c_device_wdt
,
&
s3c_device_wdt
,
&
s3c_device_i2c0
,
&
s3c_device_i2c0
,
&
s3c_device_hsmmc
0
,
&
s3c_device_hsmmc
1
,
#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
&
s3c_device_ac97
,
&
s3c_device_ac97
,
#endif
#endif
...
...
arch/arm/mach-s3c2443/s3c2443.c
View file @
854bf596
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
#include <linux/list.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/serial_core.h>
#include <linux/serial_core.h>
#include <linux/sysdev.h>
#include <linux/sysdev.h>
...
@@ -32,6 +33,9 @@
...
@@ -32,6 +33,9 @@
#include <mach/regs-s3c2443-clock.h>
#include <mach/regs-s3c2443-clock.h>
#include <mach/reset.h>
#include <mach/reset.h>
#include <plat/gpio-core.h>
#include <plat/gpio-cfg.h>
#include <plat/gpio-cfg-helpers.h>
#include <plat/s3c2443.h>
#include <plat/s3c2443.h>
#include <plat/devs.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <plat/cpu.h>
...
@@ -86,6 +90,9 @@ void __init s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no)
...
@@ -86,6 +90,9 @@ void __init s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no)
void
__init
s3c2443_map_io
(
void
)
void
__init
s3c2443_map_io
(
void
)
{
{
s3c24xx_gpiocfg_default
.
set_pull
=
s3c_gpio_setpull_s3c2443
;
s3c24xx_gpiocfg_default
.
get_pull
=
s3c_gpio_getpull_s3c2443
;
iotable_init
(
s3c2443_iodesc
,
ARRAY_SIZE
(
s3c2443_iodesc
));
iotable_init
(
s3c2443_iodesc
,
ARRAY_SIZE
(
s3c2443_iodesc
));
}
}
...
...
arch/arm/plat-s3c24xx/devs.c
View file @
854bf596
...
@@ -194,7 +194,6 @@ void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_
...
@@ -194,7 +194,6 @@ void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *hard_s3c2410ts_
memcpy
(
&
s3c2410ts_info
,
hard_s3c2410ts_info
,
sizeof
(
struct
s3c2410_ts_mach_info
));
memcpy
(
&
s3c2410ts_info
,
hard_s3c2410ts_info
,
sizeof
(
struct
s3c2410_ts_mach_info
));
s3c_device_ts
.
dev
.
platform_data
=
&
s3c2410ts_info
;
s3c_device_ts
.
dev
.
platform_data
=
&
s3c2410ts_info
;
}
}
EXPORT_SYMBOL
(
s3c24xx_ts_set_platdata
);
/* USB Device (Gadget)*/
/* USB Device (Gadget)*/
...
...
arch/arm/plat-s3c24xx/s3c2443-clock.c
View file @
854bf596
...
@@ -271,7 +271,7 @@ static struct clk init_clocks[] = {
...
@@ -271,7 +271,7 @@ static struct clk init_clocks[] = {
.
ctrlbit
=
S3C2443_HCLKCON_DMA5
,
.
ctrlbit
=
S3C2443_HCLKCON_DMA5
,
},
{
},
{
.
name
=
"hsmmc"
,
.
name
=
"hsmmc"
,
.
id
=
0
,
.
id
=
1
,
.
parent
=
&
clk_h
,
.
parent
=
&
clk_h
,
.
enable
=
s3c2443_clkcon_enable_h
,
.
enable
=
s3c2443_clkcon_enable_h
,
.
ctrlbit
=
S3C2443_HCLKCON_HSMMC
,
.
ctrlbit
=
S3C2443_HCLKCON_HSMMC
,
...
...
arch/arm/plat-samsung/Kconfig
View file @
854bf596
...
@@ -95,6 +95,12 @@ config S3C_GPIO_PULL_UPDOWN
...
@@ -95,6 +95,12 @@ config S3C_GPIO_PULL_UPDOWN
help
help
Internal configuration to enable the correct GPIO pull helper
Internal configuration to enable the correct GPIO pull helper
config S3C_GPIO_PULL_S3C2443
bool
select S3C_GPIO_PULL_UPDOWN
help
Internal configuration to enable the correct GPIO pull helper for S3C2443-style GPIO
config S3C_GPIO_PULL_DOWN
config S3C_GPIO_PULL_DOWN
bool
bool
help
help
...
...
arch/arm/plat-samsung/dev-nand.c
View file @
854bf596
...
@@ -126,5 +126,3 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
...
@@ -126,5 +126,3 @@ void __init s3c_nand_set_platdata(struct s3c2410_platform_nand *nand)
s3c_device_nand
.
dev
.
platform_data
=
npd
;
s3c_device_nand
.
dev
.
platform_data
=
npd
;
}
}
EXPORT_SYMBOL_GPL
(
s3c_nand_set_platdata
);
arch/arm/plat-samsung/gpio-config.c
View file @
854bf596
...
@@ -278,6 +278,48 @@ s3c_gpio_pull_t s3c_gpio_getpull_updown(struct s3c_gpio_chip *chip,
...
@@ -278,6 +278,48 @@ s3c_gpio_pull_t s3c_gpio_getpull_updown(struct s3c_gpio_chip *chip,
pup
&=
0x3
;
pup
&=
0x3
;
return
(
__force
s3c_gpio_pull_t
)
pup
;
return
(
__force
s3c_gpio_pull_t
)
pup
;
}
}
#ifdef CONFIG_S3C_GPIO_PULL_S3C2443
int
s3c_gpio_setpull_s3c2443
(
struct
s3c_gpio_chip
*
chip
,
unsigned
int
off
,
s3c_gpio_pull_t
pull
)
{
switch
(
pull
)
{
case
S3C_GPIO_PULL_NONE
:
pull
=
0x01
;
break
;
case
S3C_GPIO_PULL_UP
:
pull
=
0x00
;
break
;
case
S3C_GPIO_PULL_DOWN
:
pull
=
0x02
;
break
;
}
return
s3c_gpio_setpull_updown
(
chip
,
off
,
pull
);
}
s3c_gpio_pull_t
s3c_gpio_getpull_s3c2443
(
struct
s3c_gpio_chip
*
chip
,
unsigned
int
off
)
{
s3c_gpio_pull_t
pull
;
pull
=
s3c_gpio_getpull_updown
(
chip
,
off
);
switch
(
pull
)
{
case
0x00
:
pull
=
S3C_GPIO_PULL_UP
;
break
;
case
0x01
:
case
0x03
:
pull
=
S3C_GPIO_PULL_NONE
;
break
;
case
0x02
:
pull
=
S3C_GPIO_PULL_DOWN
;
break
;
}
return
pull
;
}
#endif
#endif
#endif
#if defined(CONFIG_S3C_GPIO_PULL_UP) || defined(CONFIG_S3C_GPIO_PULL_DOWN)
#if defined(CONFIG_S3C_GPIO_PULL_UP) || defined(CONFIG_S3C_GPIO_PULL_DOWN)
...
...
arch/arm/plat-samsung/include/plat/gpio-cfg-helpers.h
View file @
854bf596
...
@@ -244,7 +244,7 @@ extern int s3c_gpio_setpull_s3c2443(struct s3c_gpio_chip *chip,
...
@@ -244,7 +244,7 @@ extern int s3c_gpio_setpull_s3c2443(struct s3c_gpio_chip *chip,
* This helper function reads the state of the pull-{up,down} resistor for the
* This helper function reads the state of the pull-{up,down} resistor for the
* given GPIO in the same case as s3c_gpio_setpull_upown.
* given GPIO in the same case as s3c_gpio_setpull_upown.
*/
*/
extern
s3c_gpio_pull_t
s3c_gpio_getpull_s3c24
xx
(
struct
s3c_gpio_chip
*
chip
,
extern
s3c_gpio_pull_t
s3c_gpio_getpull_s3c24
43
(
struct
s3c_gpio_chip
*
chip
,
unsigned
int
off
);
unsigned
int
off
);
#endif
/* __PLAT_GPIO_CFG_HELPERS_H */
#endif
/* __PLAT_GPIO_CFG_HELPERS_H */
...
...
arch/arm/plat-samsung/include/plat/sdhci.h
View file @
854bf596
...
@@ -107,6 +107,8 @@ extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;
...
@@ -107,6 +107,8 @@ extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;
/* Helper function availablity */
/* Helper function availablity */
extern
void
s3c2416_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s3c2416_setup_sdhci1_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s3c64xx_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s3c64xx_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s3c64xx_setup_sdhci1_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s3c64xx_setup_sdhci1_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s5pc100_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s5pc100_setup_sdhci0_cfg_gpio
(
struct
platform_device
*
,
int
w
);
...
@@ -122,6 +124,39 @@ extern void s5pv310_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
...
@@ -122,6 +124,39 @@ extern void s5pv310_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
extern
void
s5pv310_setup_sdhci2_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s5pv310_setup_sdhci2_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s5pv310_setup_sdhci3_cfg_gpio
(
struct
platform_device
*
,
int
w
);
extern
void
s5pv310_setup_sdhci3_cfg_gpio
(
struct
platform_device
*
,
int
w
);
/* S3C2416 SDHCI setup */
#ifdef CONFIG_S3C2416_SETUP_SDHCI
extern
char
*
s3c2416_hsmmc_clksrcs
[
4
];
extern
void
s3c2416_setup_sdhci_cfg_card
(
struct
platform_device
*
dev
,
void
__iomem
*
r
,
struct
mmc_ios
*
ios
,
struct
mmc_card
*
card
);
static
inline
void
s3c2416_default_sdhci0
(
void
)
{
#ifdef CONFIG_S3C_DEV_HSMMC
s3c_hsmmc0_def_platdata
.
clocks
=
s3c2416_hsmmc_clksrcs
;
s3c_hsmmc0_def_platdata
.
cfg_gpio
=
s3c2416_setup_sdhci0_cfg_gpio
;
s3c_hsmmc0_def_platdata
.
cfg_card
=
s3c2416_setup_sdhci_cfg_card
;
#endif
/* CONFIG_S3C_DEV_HSMMC */
}
static
inline
void
s3c2416_default_sdhci1
(
void
)
{
#ifdef CONFIG_S3C_DEV_HSMMC1
s3c_hsmmc1_def_platdata
.
clocks
=
s3c2416_hsmmc_clksrcs
;
s3c_hsmmc1_def_platdata
.
cfg_gpio
=
s3c2416_setup_sdhci1_cfg_gpio
;
s3c_hsmmc1_def_platdata
.
cfg_card
=
s3c2416_setup_sdhci_cfg_card
;
#endif
/* CONFIG_S3C_DEV_HSMMC1 */
}
#else
static
inline
void
s3c2416_default_sdhci0
(
void
)
{
}
static
inline
void
s3c2416_default_sdhci1
(
void
)
{
}
#endif
/* CONFIG_S3C2416_SETUP_SDHCI */
/* S3C64XX SDHCI setup */
/* S3C64XX SDHCI setup */
#ifdef CONFIG_S3C64XX_SETUP_SDHCI
#ifdef CONFIG_S3C64XX_SETUP_SDHCI
...
...
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