Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
db9c244a
Commit
db9c244a
authored
Apr 21, 2010
by
Kevin Hilman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'davinci-next' into davinci-reset
parents
973969ae
cc4f297a
Changes
41
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
1339 additions
and
240 deletions
+1339
-240
arch/arm/Kconfig
arch/arm/Kconfig
+0
-1
arch/arm/mach-davinci/Kconfig
arch/arm/mach-davinci/Kconfig
+2
-0
arch/arm/mach-davinci/board-da830-evm.c
arch/arm/mach-davinci/board-da830-evm.c
+28
-16
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-da850-evm.c
+10
-10
arch/arm/mach-davinci/board-dm355-evm.c
arch/arm/mach-davinci/board-dm355-evm.c
+4
-7
arch/arm/mach-davinci/board-dm355-leopard.c
arch/arm/mach-davinci/board-dm355-leopard.c
+4
-7
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/board-dm365-evm.c
+0
-5
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
+8
-45
arch/arm/mach-davinci/board-dm646x-evm.c
arch/arm/mach-davinci/board-dm646x-evm.c
+5
-8
arch/arm/mach-davinci/board-neuros-osd2.c
arch/arm/mach-davinci/board-neuros-osd2.c
+7
-40
arch/arm/mach-davinci/board-sffsdr.c
arch/arm/mach-davinci/board-sffsdr.c
+5
-8
arch/arm/mach-davinci/cdce949.c
arch/arm/mach-davinci/cdce949.c
+1
-0
arch/arm/mach-davinci/clock.c
arch/arm/mach-davinci/clock.c
+16
-6
arch/arm/mach-davinci/clock.h
arch/arm/mach-davinci/clock.h
+5
-3
arch/arm/mach-davinci/cp_intc.c
arch/arm/mach-davinci/cp_intc.c
+5
-1
arch/arm/mach-davinci/devices.c
arch/arm/mach-davinci/devices.c
+46
-0
arch/arm/mach-davinci/dm355.c
arch/arm/mach-davinci/dm355.c
+1
-1
arch/arm/mach-davinci/dm365.c
arch/arm/mach-davinci/dm365.c
+2
-1
arch/arm/mach-davinci/dm644x.c
arch/arm/mach-davinci/dm644x.c
+2
-2
arch/arm/mach-davinci/dm646x.c
arch/arm/mach-davinci/dm646x.c
+2
-34
arch/arm/mach-davinci/dma.c
arch/arm/mach-davinci/dma.c
+7
-4
arch/arm/mach-davinci/gpio.c
arch/arm/mach-davinci/gpio.c
+25
-16
arch/arm/mach-davinci/include/mach/common.h
arch/arm/mach-davinci/include/mach/common.h
+4
-0
arch/arm/mach-davinci/include/mach/cp_intc.h
arch/arm/mach-davinci/include/mach/cp_intc.h
+1
-1
arch/arm/mach-davinci/include/mach/cputype.h
arch/arm/mach-davinci/include/mach/cputype.h
+8
-0
arch/arm/mach-davinci/include/mach/da8xx.h
arch/arm/mach-davinci/include/mach/da8xx.h
+0
-6
arch/arm/mach-davinci/include/mach/dm355.h
arch/arm/mach-davinci/include/mach/dm355.h
+3
-0
arch/arm/mach-davinci/include/mach/dm365.h
arch/arm/mach-davinci/include/mach/dm365.h
+4
-0
arch/arm/mach-davinci/include/mach/dm644x.h
arch/arm/mach-davinci/include/mach/dm644x.h
+6
-0
arch/arm/mach-davinci/include/mach/dm646x.h
arch/arm/mach-davinci/include/mach/dm646x.h
+2
-2
arch/arm/mach-davinci/include/mach/gpio.h
arch/arm/mach-davinci/include/mach/gpio.h
+4
-4
arch/arm/mach-davinci/include/mach/irqs.h
arch/arm/mach-davinci/include/mach/irqs.h
+97
-0
arch/arm/mach-davinci/include/mach/mux.h
arch/arm/mach-davinci/include/mach/mux.h
+275
-0
arch/arm/mach-davinci/include/mach/psc.h
arch/arm/mach-davinci/include/mach/psc.h
+54
-1
arch/arm/mach-davinci/mux.c
arch/arm/mach-davinci/mux.c
+1
-1
arch/arm/mach-davinci/psc.c
arch/arm/mach-davinci/psc.c
+1
-2
arch/arm/mach-davinci/time.c
arch/arm/mach-davinci/time.c
+3
-3
drivers/rtc/Kconfig
drivers/rtc/Kconfig
+10
-0
drivers/rtc/Makefile
drivers/rtc/Makefile
+1
-0
drivers/rtc/rtc-davinci.c
drivers/rtc/rtc-davinci.c
+673
-0
drivers/rtc/rtc-omap.c
drivers/rtc/rtc-omap.c
+7
-5
No files found.
arch/arm/Kconfig
View file @
db9c244a
...
...
@@ -775,7 +775,6 @@ config ARCH_NOMADIK
config ARCH_DAVINCI
bool "TI DaVinci"
select CPU_ARM926T
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
...
...
arch/arm/mach-davinci/Kconfig
View file @
db9c244a
...
...
@@ -7,6 +7,7 @@ config CP_INTC
bool
config ARCH_DAVINCI_DMx
select CPU_ARM926T
bool
menu "TI DaVinci Implementations"
...
...
@@ -41,6 +42,7 @@ config ARCH_DAVINCI_DA850
select ARCH_HAS_CPUFREQ
config ARCH_DAVINCI_DA8XX
select CPU_ARM926T
bool
config ARCH_DAVINCI_DM365
...
...
arch/arm/mach-davinci/board-da830-evm.c
View file @
db9c244a
...
...
@@ -33,9 +33,6 @@
#define DA830_EVM_PHY_MASK 0x0
#define DA830_EVM_MDIO_FREQUENCY 2200000
/* PHY bus frequency */
#define DA830_EMIF25_ASYNC_DATA_CE3_BASE 0x62000000
#define DA830_EMIF25_CONTROL_BASE 0x68000000
/*
* USB1 VBUS is controlled by GPIO1[15], over-current is reported on GPIO2[4].
*/
...
...
@@ -157,7 +154,7 @@ static __init void da830_evm_usb_init(void)
__func__
,
ret
);
}
ret
=
da
8xx_pinmux_setup
(
da830_evm_usb11_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_evm_usb11_pins
);
if
(
ret
)
{
pr_warning
(
"%s: USB 1.1 PinMux setup failed: %d
\n
"
,
__func__
,
ret
);
...
...
@@ -229,15 +226,22 @@ static const short da830_evm_mmc_sd_pins[] = {
};
#define DA830_MMCSD_WP_PIN GPIO_TO_PIN(2, 1)
#define DA830_MMCSD_CD_PIN GPIO_TO_PIN(2, 2)
static
int
da830_evm_mmc_get_ro
(
int
index
)
{
return
gpio_get_value
(
DA830_MMCSD_WP_PIN
);
}
static
int
da830_evm_mmc_get_cd
(
int
index
)
{
return
!
gpio_get_value
(
DA830_MMCSD_CD_PIN
);
}
static
struct
davinci_mmc_config
da830_evm_mmc_config
=
{
.
get_ro
=
da830_evm_mmc_get_ro
,
.
wires
=
4
,
.
get_cd
=
da830_evm_mmc_get_cd
,
.
wires
=
8
,
.
max_freq
=
50000000
,
.
caps
=
MMC_CAP_MMC_HIGHSPEED
|
MMC_CAP_SD_HIGHSPEED
,
.
version
=
MMC_CTLR_VERSION_2
,
...
...
@@ -247,7 +251,7 @@ static inline void da830_evm_init_mmc(void)
{
int
ret
;
ret
=
da
8xx_pinmux_setup
(
da830_evm_mmc_sd_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_evm_mmc_sd_pins
);
if
(
ret
)
{
pr_warning
(
"da830_evm_init: mmc/sd mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -262,6 +266,14 @@ static inline void da830_evm_init_mmc(void)
}
gpio_direction_input
(
DA830_MMCSD_WP_PIN
);
ret
=
gpio_request
(
DA830_MMCSD_CD_PIN
,
"MMC CD
\n
"
);
if
(
ret
)
{
pr_warning
(
"da830_evm_init: can not open GPIO %d
\n
"
,
DA830_MMCSD_CD_PIN
);
return
;
}
gpio_direction_input
(
DA830_MMCSD_CD_PIN
);
ret
=
da8xx_register_mmcsd0
(
&
da830_evm_mmc_config
);
if
(
ret
)
{
pr_warning
(
"da830_evm_init: mmc/sd registration failed: %d
\n
"
,
...
...
@@ -360,13 +372,13 @@ static struct davinci_nand_pdata da830_evm_nand_pdata = {
static
struct
resource
da830_evm_nand_resources
[]
=
{
[
0
]
=
{
/* First memory resource is NAND I/O window */
.
start
=
DA8
30_EMIF25_ASYNC_DATA_CE
3_BASE
,
.
end
=
DA8
30_EMIF25_ASYNC_DATA_CE
3_BASE
+
PAGE_SIZE
-
1
,
.
start
=
DA8
XX_AEMIF_CS
3_BASE
,
.
end
=
DA8
XX_AEMIF_CS
3_BASE
+
PAGE_SIZE
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
/* Second memory resource is AEMIF control registers */
.
start
=
DA8
30_EMIF25_CONTRO
L_BASE
,
.
end
=
DA8
30_EMIF25_CONTRO
L_BASE
+
SZ_32K
-
1
,
.
start
=
DA8
XX_AEMIF_CT
L_BASE
,
.
end
=
DA8
XX_AEMIF_CT
L_BASE
+
SZ_32K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
@@ -392,7 +404,7 @@ static inline void da830_evm_init_nand(int mux_mode)
return
;
}
ret
=
da
8xx_pinmux_setup
(
da830_evm_emif25_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_evm_emif25_pins
);
if
(
ret
)
pr_warning
(
"da830_evm_init: emif25 mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -412,7 +424,7 @@ static inline void da830_evm_init_lcdc(int mux_mode)
{
int
ret
;
ret
=
da
8xx_pinmux_setup
(
da830_lcdcntl_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_lcdcntl_pins
);
if
(
ret
)
pr_warning
(
"da830_evm_init: lcdcntl mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -492,7 +504,7 @@ static __init void da830_evm_init(void)
pr_warning
(
"da830_evm_init: edma registration failed: %d
\n
"
,
ret
);
ret
=
da
8xx_pinmux_setup
(
da830_i2c0_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_i2c0_pins
);
if
(
ret
)
pr_warning
(
"da830_evm_init: i2c0 mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -508,7 +520,7 @@ static __init void da830_evm_init(void)
soc_info
->
emac_pdata
->
mdio_max_freq
=
DA830_EVM_MDIO_FREQUENCY
;
soc_info
->
emac_pdata
->
rmii_en
=
1
;
ret
=
da
8xx_pinmux_setup
(
da830_cpgmac_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_cpgmac_pins
);
if
(
ret
)
pr_warning
(
"da830_evm_init: cpgmac mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -527,7 +539,7 @@ static __init void da830_evm_init(void)
i2c_register_board_info
(
1
,
da830_evm_i2c_devices
,
ARRAY_SIZE
(
da830_evm_i2c_devices
));
ret
=
da
8xx_pinmux_setup
(
da830_evm_mcasp1_pins
);
ret
=
da
vinci_cfg_reg_list
(
da830_evm_mcasp1_pins
);
if
(
ret
)
pr_warning
(
"da830_evm_init: mcasp1 mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -554,7 +566,7 @@ static __init void da830_evm_irq_init(void)
struct
davinci_soc_info
*
soc_info
=
&
davinci_soc_info
;
cp_intc_init
((
void
__iomem
*
)
DA8XX_CP_INTC_VIRT
,
DA830_N_CP_INTC_IRQ
,
soc_info
->
intc_irq_prios
);
soc_info
->
intc_irq_prios
,
NULL
);
}
static
void
__init
da830_evm_map_io
(
void
)
...
...
arch/arm/mach-davinci/board-da850-evm.c
View file @
db9c244a
...
...
@@ -209,12 +209,12 @@ static __init void da850_evm_setup_nor_nand(void)
int
ret
=
0
;
if
(
ui_card_detected
&
!
HAS_MMC
)
{
ret
=
da
8xx_pinmux_setup
(
da850_nand_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_nand_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: nand mux setup failed: "
"%d
\n
"
,
ret
);
ret
=
da
8xx_pinmux_setup
(
da850_nor_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_nor_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: nor mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -585,12 +585,12 @@ static int __init da850_evm_config_emac(void)
if
(
rmii_en
)
{
val
|=
BIT
(
8
);
ret
=
da
8xx_pinmux_setup
(
da850_rmii_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_rmii_pins
);
pr_info
(
"EMAC: RMII PHY configured, MII PHY will not be"
" functional
\n
"
);
}
else
{
val
&=
~
BIT
(
8
);
ret
=
da
8xx_pinmux_setup
(
da850_cpgmac_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_cpgmac_pins
);
pr_info
(
"EMAC: MII PHY configured, RMII PHY will not be"
" functional
\n
"
);
}
...
...
@@ -643,7 +643,7 @@ static __init void da850_evm_init(void)
pr_warning
(
"da850_evm_init: edma registration failed: %d
\n
"
,
ret
);
ret
=
da
8xx_pinmux_setup
(
da850_i2c0_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_i2c0_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: i2c0 mux setup failed: %d
\n
"
,
ret
);
...
...
@@ -660,7 +660,7 @@ static __init void da850_evm_init(void)
ret
);
if
(
HAS_MMC
)
{
ret
=
da
8xx_pinmux_setup
(
da850_mmcsd0_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_mmcsd0_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: mmcsd0 mux setup failed:"
" %d
\n
"
,
ret
);
...
...
@@ -696,20 +696,20 @@ static __init void da850_evm_init(void)
__raw_writel
(
0
,
IO_ADDRESS
(
DA8XX_UART1_BASE
)
+
0x30
);
__raw_writel
(
0
,
IO_ADDRESS
(
DA8XX_UART0_BASE
)
+
0x30
);
ret
=
da
8xx_pinmux_setup
(
da850_mcasp_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_mcasp_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: mcasp mux setup failed: %d
\n
"
,
ret
);
da8xx_register_mcasp
(
0
,
&
da850_evm_snd_data
);
ret
=
da
8xx_pinmux_setup
(
da850_lcdcntl_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_lcdcntl_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: lcdcntl mux setup failed: %d
\n
"
,
ret
);
/* Handle board specific muxing for LCD here */
ret
=
da
8xx_pinmux_setup
(
da850_evm_lcdc_pins
);
ret
=
da
vinci_cfg_reg_list
(
da850_evm_lcdc_pins
);
if
(
ret
)
pr_warning
(
"da850_evm_init: evm specific lcd mux setup "
"failed: %d
\n
"
,
ret
);
...
...
@@ -758,7 +758,7 @@ static __init void da850_evm_irq_init(void)
struct
davinci_soc_info
*
soc_info
=
&
davinci_soc_info
;
cp_intc_init
((
void
__iomem
*
)
DA8XX_CP_INTC_VIRT
,
DA850_N_CP_INTC_IRQ
,
soc_info
->
intc_irq_prios
);
soc_info
->
intc_irq_prios
,
NULL
);
}
static
void
__init
da850_evm_map_io
(
void
)
...
...
arch/arm/mach-davinci/board-dm355-evm.c
View file @
db9c244a
...
...
@@ -33,9 +33,6 @@
#include <mach/mmc.h>
#include <mach/usb.h>
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
/* NOTE: this is geared for the standard config, with a socketed
* 2 GByte Micron NAND (MT29F16G08FAA) using 128KB sectors. If you
* swap chips, maybe with a different block size, partitioning may
...
...
@@ -86,12 +83,12 @@ static struct davinci_nand_pdata davinci_nand_data = {
static
struct
resource
davinci_nand_resources
[]
=
{
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_32M
-
1
,
.
start
=
D
M355
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M355
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_32M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M355
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M355
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
arch/arm/mach-davinci/board-dm355-leopard.c
View file @
db9c244a
...
...
@@ -30,9 +30,6 @@
#include <mach/mmc.h>
#include <mach/usb.h>
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
/* NOTE: this is geared for the standard config, with a socketed
* 2 GByte Micron NAND (MT29F16G08FAA) using 128KB sectors. If you
* swap chips, maybe with a different block size, partitioning may
...
...
@@ -82,12 +79,12 @@ static struct davinci_nand_pdata davinci_nand_data = {
static
struct
resource
davinci_nand_resources
[]
=
{
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_32M
-
1
,
.
start
=
D
M355
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M355
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_32M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M355
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M355
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
arch/arm/mach-davinci/board-dm365-evm.c
View file @
db9c244a
...
...
@@ -54,11 +54,6 @@ static inline int have_tvp7002(void)
return
0
;
}
#define DM365_ASYNC_EMIF_CONTROL_BASE 0x01d10000
#define DM365_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define DM365_ASYNC_EMIF_DATA_CE1_BASE 0x04000000
#define DM365_EVM_PHY_MASK (0x2)
#define DM365_EVM_MDIO_FREQUENCY (2200000)
/* PHY bus frequency */
...
...
arch/arm/mach-davinci/board-dm644x-evm.c
View file @
db9c244a
...
...
@@ -41,14 +41,6 @@
#define DM644X_EVM_PHY_MASK (0x2)
#define DM644X_EVM_MDIO_FREQUENCY (2200000)
/* PHY bus frequency */
#define DAVINCI_CFC_ATA_BASE 0x01C66000
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e00000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define DAVINCI_ASYNC_EMIF_DATA_CE1_BASE 0x04000000
#define DAVINCI_ASYNC_EMIF_DATA_CE2_BASE 0x06000000
#define DAVINCI_ASYNC_EMIF_DATA_CE3_BASE 0x08000000
#define LXT971_PHY_ID (0x001378e2)
#define LXT971_PHY_MASK (0xfffffff0)
...
...
@@ -92,8 +84,8 @@ static struct physmap_flash_data davinci_evm_norflash_data = {
/* NOTE: CFI probe will correctly detect flash part as 32M, but EMIF
* limits addresses to 16M, so using addresses past 16M will wrap */
static
struct
resource
davinci_evm_norflash_resource
=
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
flags
=
IORESOURCE_MEM
,
};
...
...
@@ -111,7 +103,7 @@ static struct platform_device davinci_evm_norflash_device = {
* It may used instead of the (default) NOR chip to boot, using TI's
* tools to install the secondary boot loader (UBL) and U-Boot.
*/
struct
mtd_partition
davinci_evm_nandflash_partition
[]
=
{
st
atic
st
ruct
mtd_partition
davinci_evm_nandflash_partition
[]
=
{
/* Bootloader layout depends on whose u-boot is installed, but we
* can hide all the details.
* - block 0 for u-boot environment ... in mainline u-boot
...
...
@@ -154,12 +146,12 @@ static struct davinci_nand_pdata davinci_evm_nandflash_data = {
static
struct
resource
davinci_evm_nandflash_resource
[]
=
{
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
@@ -258,32 +250,6 @@ static struct platform_device rtc_dev = {
.
id
=
-
1
,
};
static
struct
resource
ide_resources
[]
=
{
{
.
start
=
DAVINCI_CFC_ATA_BASE
,
.
end
=
DAVINCI_CFC_ATA_BASE
+
0x7ff
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_IDE
,
.
end
=
IRQ_IDE
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
u64
ide_dma_mask
=
DMA_BIT_MASK
(
32
);
static
struct
platform_device
ide_dev
=
{
.
name
=
"palm_bk3710"
,
.
id
=
-
1
,
.
resource
=
ide_resources
,
.
num_resources
=
ARRAY_SIZE
(
ide_resources
),
.
dev
=
{
.
dma_mask
=
&
ide_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
static
struct
snd_platform_data
dm644x_evm_snd_data
;
/*----------------------------------------------------------------------*/
...
...
@@ -704,10 +670,7 @@ static __init void davinci_evm_init(void)
pr_warning
(
"WARNING: both IDE and Flash are "
"enabled, but they share AEMIF pins.
\n
"
"
\t
Disable IDE for NAND/NOR support.
\n
"
);
davinci_cfg_reg
(
DM644X_HPIEN_DISABLE
);
davinci_cfg_reg
(
DM644X_ATAEN
);
davinci_cfg_reg
(
DM644X_HDIREN
);
platform_device_register
(
&
ide_dev
);
davinci_init_ide
();
}
else
if
(
HAS_NAND
||
HAS_NOR
)
{
davinci_cfg_reg
(
DM644X_HPIEN_DISABLE
);
davinci_cfg_reg
(
DM644X_ATAEN_DISABLE
);
...
...
arch/arm/mach-davinci/board-dm646x-evm.c
View file @
db9c244a
...
...
@@ -80,17 +80,14 @@ static struct davinci_nand_pdata davinci_nand_data = {
.
options
=
0
,
};
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x20008000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x42000000
static
struct
resource
davinci_nand_resources
[]
=
{
{
.
start
=
D
AVINCI_ASYNC_EMIF_DATA_CE0
_BASE
,
.
end
=
D
AVINCI_ASYNC_EMIF_DATA_CE0
_BASE
+
SZ_32M
-
1
,
.
start
=
D
M646X_ASYNC_EMIF_CS2_SPACE
_BASE
,
.
end
=
D
M646X_ASYNC_EMIF_CS2_SPACE
_BASE
+
SZ_32M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M646X
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M646X
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
@@ -736,7 +733,7 @@ static __init void evm_init(void)
platform_device_register
(
&
davinci_nand_device
);
if
(
HAS_ATA
)
d
m646x
_init_ide
();
d
avinci
_init_ide
();
soc_info
->
emac_pdata
->
phy_mask
=
DM646X_EVM_PHY_MASK
;
soc_info
->
emac_pdata
->
mdio_max_freq
=
DM646X_EVM_MDIO_FREQUENCY
;
...
...
arch/arm/mach-davinci/board-neuros-osd2.c
View file @
db9c244a
...
...
@@ -31,6 +31,7 @@
#include <asm/mach/arch.h>
#include <mach/dm644x.h>
#include <mach/common.h>
#include <mach/i2c.h>
#include <mach/serial.h>
#include <mach/mux.h>
...
...
@@ -41,11 +42,6 @@
#define NEUROS_OSD2_PHY_MASK 0x2
#define NEUROS_OSD2_MDIO_FREQUENCY 2200000
/* PHY bus frequency */
#define DAVINCI_CFC_ATA_BASE 0x01C66000
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e00000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define LXT971_PHY_ID 0x001378e2
#define LXT971_PHY_MASK 0xfffffff0
...
...
@@ -60,7 +56,7 @@
#define NAND_BLOCK_SIZE SZ_128K
struct
mtd_partition
davinci_ntosd2_nandflash_partition
[]
=
{
st
atic
st
ruct
mtd_partition
davinci_ntosd2_nandflash_partition
[]
=
{
{
/* UBL (a few copies) plus U-Boot */
.
name
=
"bootloader"
,
...
...
@@ -98,12 +94,12 @@ static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = {
static
struct
resource
davinci_ntosd2_nandflash_resource
[]
=
{
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
@@ -130,32 +126,6 @@ static struct platform_device davinci_fb_device = {
.
num_resources
=
0
,
};
static
struct
resource
ide_resources
[]
=
{
{
.
start
=
DAVINCI_CFC_ATA_BASE
,
.
end
=
DAVINCI_CFC_ATA_BASE
+
0x7ff
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_IDE
,
.
end
=
IRQ_IDE
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
u64
ide_dma_mask
=
DMA_BIT_MASK
(
32
);
static
struct
platform_device
ide_dev
=
{
.
name
=
"palm_bk3710"
,
.
id
=
-
1
,
.
resource
=
ide_resources
,
.
num_resources
=
ARRAY_SIZE
(
ide_resources
),
.
dev
=
{
.
dma_mask
=
&
ide_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
static
struct
snd_platform_data
dm644x_ntosd2_snd_data
;
static
struct
gpio_led
ntosd2_leds
[]
=
{
...
...
@@ -259,10 +229,7 @@ static __init void davinci_ntosd2_init(void)
pr_warning
(
"WARNING: both IDE and Flash are "
"enabled, but they share AEMIF pins.
\n
"
"
\t
Disable IDE for NAND/NOR support.
\n
"
);
davinci_cfg_reg
(
DM644X_HPIEN_DISABLE
);
davinci_cfg_reg
(
DM644X_ATAEN
);
davinci_cfg_reg
(
DM644X_HDIREN
);
platform_device_register
(
&
ide_dev
);
davinci_init_ide
();
}
else
if
(
HAS_NAND
)
{
davinci_cfg_reg
(
DM644X_HPIEN_DISABLE
);
davinci_cfg_reg
(
DM644X_ATAEN_DISABLE
);
...
...
arch/arm/mach-davinci/board-sffsdr.c
View file @
db9c244a
...
...
@@ -45,10 +45,7 @@
#define SFFSDR_PHY_MASK (0x2)
#define SFFSDR_MDIO_FREQUENCY (2200000)
/* PHY bus frequency */
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e00000
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
struct
mtd_partition
davinci_sffsdr_nandflash_partition
[]
=
{
static
struct
mtd_partition
davinci_sffsdr_nandflash_partition
[]
=
{
/* U-Boot Environment: Block 0
* UBL: Block 1
* U-Boot: Blocks 6-7 (256 kb)
...
...
@@ -76,12 +73,12 @@ static struct flash_platform_data davinci_sffsdr_nandflash_data = {
static
struct
resource
davinci_sffsdr_nandflash_resource
[]
=
{
{
.
start
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_DATA_CE0_BASE
+
SZ_16M
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
AVINCI
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
start
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
,
.
end
=
D
M644X
_ASYNC_EMIF_CONTROL_BASE
+
SZ_4K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
};
...
...
arch/arm/mach-davinci/cdce949.c
View file @
db9c244a
...
...
@@ -19,6 +19,7 @@
#include <linux/i2c.h>
#include <mach/clock.h>
#include <mach/cdce949.h>
#include "clock.h"
...
...
arch/arm/mach-davinci/clock.c
View file @
db9c244a
...
...
@@ -22,6 +22,7 @@
#include <mach/hardware.h>
#include <mach/clock.h>
#include <mach/psc.h>
#include <mach/cputype.h>
#include "clock.h"
...
...
@@ -42,7 +43,8 @@ static void __clk_enable(struct clk *clk)
if
(
clk
->
parent
)
__clk_enable
(
clk
->
parent
);
if
(
clk
->
usecount
++
==
0
&&
(
clk
->
flags
&
CLK_PSC
))
davinci_psc_config
(
psc_domain
(
clk
),
clk
->
gpsc
,
clk
->
lpsc
,
1
);
davinci_psc_config
(
psc_domain
(
clk
),
clk
->
gpsc
,
clk
->
lpsc
,
PSC_STATE_ENABLE
);
}
static
void
__clk_disable
(
struct
clk
*
clk
)
...
...
@@ -51,7 +53,9 @@ static void __clk_disable(struct clk *clk)
return
;
if
(
--
clk
->
usecount
==
0
&&
!
(
clk
->
flags
&
CLK_PLL
)
&&
(
clk
->
flags
&
CLK_PSC
))
davinci_psc_config
(
psc_domain
(
clk
),
clk
->
gpsc
,
clk
->
lpsc
,
0
);
davinci_psc_config
(
psc_domain
(
clk
),
clk
->
gpsc
,
clk
->
lpsc
,
(
clk
->
flags
&
PSC_SWRSTDISABLE
)
?
PSC_STATE_SWRSTDISABLE
:
PSC_STATE_DISABLE
);
if
(
clk
->
parent
)
__clk_disable
(
clk
->
parent
);
}
...
...
@@ -233,7 +237,10 @@ static int __init clk_disable_unused(void)
continue
;
pr_info
(
"Clocks: disable unused %s
\n
"
,
ck
->
name
);
davinci_psc_config
(
psc_domain
(
ck
),
ck
->
gpsc
,
ck
->
lpsc
,
0
);
davinci_psc_config
(
psc_domain
(
ck
),
ck
->
gpsc
,
ck
->
lpsc
,
(
ck
->
flags
&
PSC_SWRSTDISABLE
)
?
PSC_STATE_SWRSTDISABLE
:
PSC_STATE_DISABLE
);
}
spin_unlock_irq
(
&
clockfw_lock
);
...
...
@@ -272,7 +279,7 @@ static unsigned long clk_sysclk_recalc(struct clk *clk)
v
=
__raw_readl
(
pll
->
base
+
clk
->
div_reg
);
if
(
v
&
PLLDIV_EN
)
{
plldiv
=
(
v
&
PLLDIV_RATIO_MASK
)
+
1
;
plldiv
=
(
v
&
pll
->
div_ratio_mask
)
+
1
;
if
(
plldiv
)
rate
/=
plldiv
;
}
...
...
@@ -312,7 +319,7 @@ static unsigned long clk_pllclk_recalc(struct clk *clk)
if
(
pll
->
flags
&
PLL_HAS_PREDIV
)
{
prediv
=
__raw_readl
(
pll
->
base
+
PREDIV
);
if
(
prediv
&
PLLDIV_EN
)
prediv
=
(
prediv
&
PLLDIV_RATIO_MASK
)
+
1
;
prediv
=
(
prediv
&
pll
->
div_ratio_mask
)
+
1
;
else
prediv
=
1
;
}
...
...
@@ -324,7 +331,7 @@ static unsigned long clk_pllclk_recalc(struct clk *clk)
if
(
pll
->
flags
&
PLL_HAS_POSTDIV
)
{
postdiv
=
__raw_readl
(
pll
->
base
+
POSTDIV
);
if
(
postdiv
&
PLLDIV_EN
)
postdiv
=
(
postdiv
&
PLLDIV_RATIO_MASK
)
+
1
;
postdiv
=
(
postdiv
&
pll
->
div_ratio_mask
)
+
1
;
else
postdiv
=
1
;
}
...
...
@@ -451,6 +458,9 @@ int __init davinci_clk_init(struct clk_lookup *clocks)
clk
->
recalc
=
clk_leafclk_recalc
;
}
if
(
clk
->
pll_data
&&
!
clk
->
pll_data
->
div_ratio_mask
)
clk
->
pll_data
->
div_ratio_mask
=
PLLDIV_RATIO_MASK
;
if
(
clk
->
recalc
)
clk
->
rate
=
clk
->
recalc
(
clk
);
...
...
arch/arm/mach-davinci/clock.h
View file @
db9c244a
...
...
@@ -76,6 +76,7 @@ struct pll_data {
u32
num
;
u32
flags
;
u32
input_rate
;
u32
div_ratio_mask
;
};
#define PLL_HAS_PREDIV 0x01
#define PLL_HAS_POSTDIV 0x02
...
...
@@ -101,10 +102,11 @@ struct clk {
/* Clock flags: SoC-specific flags start at BIT(16) */
#define ALWAYS_ENABLED BIT(1)
#define CLK_PSC
BIT(2)
#define PSC_DSP
BIT(3)
/* PSC uses DSP domain, not ARM */
#define CLK_PSC
BIT(2)
#define PSC_DSP
BIT(3)
/* PSC uses DSP domain, not ARM */
#define CLK_PLL BIT(4)
/* PLL-derived clock */
#define PRE_PLL BIT(5)
/* source is before PLL mult/div */
#define PRE_PLL BIT(5)
/* source is before PLL mult/div */
#define PSC_SWRSTDISABLE BIT(6)
/* Disable state is SwRstDisable */
#define CLK(dev, con, ck) \
{ \
...
...
arch/arm/mach-davinci/cp_intc.c
View file @
db9c244a
...
...
@@ -101,7 +101,7 @@ static struct irq_chip cp_intc_irq_chip = {
};
void
__init
cp_intc_init
(
void
__iomem
*
base
,
unsigned
short
num_irq
,
u8
*
irq_prio
)
u8
*
irq_prio
,
u32
*
host_map
)
{
unsigned
num_reg
=
BITS_TO_LONGS
(
num_irq
);
int
i
;
...
...
@@ -157,6 +157,10 @@ void __init cp_intc_init(void __iomem *base, unsigned short num_irq,
cp_intc_write
(
0x0f0f0f0f
,
CP_INTC_CHAN_MAP
(
i
));
}
if
(
host_map
)
for
(
i
=
0
;
host_map
[
i
]
!=
-
1
;
i
++
)
cp_intc_write
(
host_map
[
i
],
CP_INTC_HOST_MAP
(
i
));
/* Set up genirq dispatching for cp_intc */
for
(
i
=
0
;
i
<
num_irq
;
i
++
)
{
set_irq_chip
(
i
,
&
cp_intc_irq_chip
);
...
...
arch/arm/mach-davinci/devices.c
View file @
db9c244a
...
...
@@ -23,7 +23,10 @@
#include <mach/mmc.h>
#include <mach/time.h>
#include "clock.h"
#define DAVINCI_I2C_BASE 0x01C21000
#define DAVINCI_ATA_BASE 0x01C66000
#define DAVINCI_MMCSD0_BASE 0x01E10000
#define DM355_MMCSD0_BASE 0x01E11000
#define DM355_MMCSD1_BASE 0x01E00000
...
...
@@ -58,6 +61,49 @@ void __init davinci_init_i2c(struct davinci_i2c_platform_data *pdata)
(
void
)
platform_device_register
(
&
davinci_i2c_device
);
}
static
struct
resource
ide_resources
[]
=
{
{
.
start
=
DAVINCI_ATA_BASE
,
.
end
=
DAVINCI_ATA_BASE
+
0x7ff
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_IDE
,
.
end
=
IRQ_IDE
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
u64
ide_dma_mask
=
DMA_BIT_MASK
(
32
);
static
struct
platform_device
ide_device
=
{
.
name
=
"palm_bk3710"
,
.
id
=
-
1
,
.
resource
=
ide_resources
,
.
num_resources
=
ARRAY_SIZE
(
ide_resources
),
.
dev
=
{
.
dma_mask
=
&
ide_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
void
__init
davinci_init_ide
(
void
)
{
if
(
cpu_is_davinci_dm644x
())
{
davinci_cfg_reg
(
DM644X_HPIEN_DISABLE
);
davinci_cfg_reg
(
DM644X_ATAEN
);
davinci_cfg_reg
(
DM644X_HDIREN
);
}
else
if
(
cpu_is_davinci_dm646x
())
{
/* IRQ_DM646X_IDE is the same as IRQ_IDE */
davinci_cfg_reg
(
DM646X_ATAEN
);
}
else
{
WARN_ON
(
1
);
return
;
}
platform_device_register
(
&
ide_device
);
}
#if defined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE)
static
u64
mmcsd0_dma_mask
=
DMA_BIT_MASK
(
32
);
...
...
arch/arm/mach-davinci/dm355.c
View file @
db9c244a
...
...
@@ -798,7 +798,7 @@ static void __iomem *dm355_psc_bases[] = {
* T1_BOT: Timer 1, bottom: (used by DSP in TI DSPLink code)
* T1_TOP: Timer 1, top : <unused>
*/
struct
davinci_timer_info
dm355_timer_info
=
{
st
atic
st
ruct
davinci_timer_info
dm355_timer_info
=
{
.
timers
=
davinci_timer_instance
,
.
clockevent_id
=
T0_BOT
,
.
clocksource_id
=
T0_TOP
,
...
...
arch/arm/mach-davinci/dm365.c
View file @
db9c244a
...
...
@@ -576,6 +576,7 @@ MUX_CFG(DM365, SPI4_SDENA1, 4, 16, 3, 2, false)
MUX_CFG
(
DM365
,
GPIO20
,
3
,
21
,
3
,
0
,
false
)
MUX_CFG
(
DM365
,
GPIO33
,
4
,
12
,
3
,
0
,
false
)
MUX_CFG
(
DM365
,
GPIO40
,
4
,
26
,
3
,
0
,
false
)
MUX_CFG
(
DM365
,
GPIO64_57
,
2
,
6
,
1
,
0
,
false
)
MUX_CFG
(
DM365
,
VOUT_FIELD
,
1
,
18
,
3
,
1
,
false
)
MUX_CFG
(
DM365
,
VOUT_FIELD_G81
,
1
,
18
,
3
,
0
,
false
)
...
...
@@ -1010,7 +1011,7 @@ static void __iomem *dm365_psc_bases[] = {
IO_ADDRESS
(
DAVINCI_PWR_SLEEP_CNTRL_BASE
),
};
struct
davinci_timer_info
dm365_timer_info
=
{
st
atic
st
ruct
davinci_timer_info
dm365_timer_info
=
{
.
timers
=
davinci_timer_instance
,
.
clockevent_id
=
T0_BOT
,
.
clocksource_id
=
T0_TOP
,
...
...
arch/arm/mach-davinci/dm644x.c
View file @
db9c244a
...
...
@@ -277,7 +277,7 @@ static struct clk timer2_clk = {
.
usecount
=
1
,
/* REVISIT: why cant' this be disabled? */
};
struct
clk_lookup
dm644x_clks
[]
=
{
st
atic
st
ruct
clk_lookup
dm644x_clks
[]
=
{
CLK
(
NULL
,
"ref"
,
&
ref_clk
),
CLK
(
NULL
,
"pll1"
,
&
pll1_clk
),
CLK
(
NULL
,
"pll1_sysclk1"
,
&
pll1_sysclk1
),
...
...
@@ -687,7 +687,7 @@ static void __iomem *dm644x_psc_bases[] = {
* T1_BOT: Timer 1, bottom: (used by DSP in TI DSPLink code)
* T1_TOP: Timer 1, top : <unused>
*/
struct
davinci_timer_info
dm644x_timer_info
=
{
st
atic
st
ruct
davinci_timer_info
dm644x_timer_info
=
{
.
timers
=
davinci_timer_instance
,
.
clockevent_id
=
T0_BOT
,
.
clocksource_id
=
T0_TOP
,
...
...
arch/arm/mach-davinci/dm646x.c
View file @
db9c244a
...
...
@@ -311,7 +311,7 @@ static struct clk vpif1_clk = {
.
flags
=
ALWAYS_ENABLED
,
};
struct
clk_lookup
dm646x_clks
[]
=
{
st
atic
st
ruct
clk_lookup
dm646x_clks
[]
=
{
CLK
(
NULL
,
"ref"
,
&
ref_clk
),
CLK
(
NULL
,
"aux"
,
&
aux_clkin
),
CLK
(
NULL
,
"pll1"
,
&
pll1_clk
),
...
...
@@ -596,32 +596,6 @@ static struct platform_device dm646x_edma_device = {
.
resource
=
edma_resources
,
};
static
struct
resource
ide_resources
[]
=
{
{
.
start
=
DM646X_ATA_REG_BASE
,
.
end
=
DM646X_ATA_REG_BASE
+
0x7ff
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
IRQ_DM646X_IDE
,
.
end
=
IRQ_DM646X_IDE
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
u64
ide_dma_mask
=
DMA_BIT_MASK
(
32
);
static
struct
platform_device
ide_dev
=
{
.
name
=
"palm_bk3710"
,
.
id
=
-
1
,
.
resource
=
ide_resources
,
.
num_resources
=
ARRAY_SIZE
(
ide_resources
),
.
dev
=
{
.
dma_mask
=
&
ide_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
static
struct
resource
dm646x_mcasp0_resources
[]
=
{
{
.
name
=
"mcasp0"
,
...
...
@@ -797,7 +771,7 @@ static void __iomem *dm646x_psc_bases[] = {
* T1_BOT: Timer 1, bottom: (used by DSP in TI DSPLink code)
* T1_TOP: Timer 1, top : <unused>
*/
struct
davinci_timer_info
dm646x_timer_info
=
{
st
atic
st
ruct
davinci_timer_info
dm646x_timer_info
=
{
.
timers
=
davinci_timer_instance
,
.
clockevent_id
=
T0_BOT
,
.
clocksource_id
=
T0_TOP
,
...
...
@@ -867,12 +841,6 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
.
sram_len
=
SZ_32K
,
};
void
__init
dm646x_init_ide
()
{
davinci_cfg_reg
(
DM646X_ATAEN
);
platform_device_register
(
&
ide_dev
);
}
void
__init
dm646x_init_mcasp0
(
struct
snd_platform_data
*
pdata
)
{
dm646x_mcasp0_device
.
dev
.
platform_data
=
pdata
;
...
...
arch/arm/mach-davinci/dma.c
View file @
db9c244a
...
...
@@ -359,9 +359,11 @@ static irqreturn_t dma_irq_handler(int irq, void *data)
while
(
1
)
{
int
j
;
if
(
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
0
))
if
(
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
0
)
&
edma_shadow0_read_array
(
ctlr
,
SH_IER
,
0
))
j
=
0
;
else
if
(
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
1
))
else
if
(
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
1
)
&
edma_shadow0_read_array
(
ctlr
,
SH_IER
,
1
))
j
=
1
;
else
break
;
...
...
@@ -369,8 +371,9 @@ static irqreturn_t dma_irq_handler(int irq, void *data)
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
j
));
for
(
i
=
0
;
i
<
32
;
i
++
)
{
int
k
=
(
j
<<
5
)
+
i
;
if
(
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
j
)
&
(
1
<<
i
))
{
if
((
edma_shadow0_read_array
(
ctlr
,
SH_IPR
,
j
)
&
BIT
(
i
))
&&
(
edma_shadow0_read_array
(
ctlr
,
SH_IER
,
j
)
&
BIT
(
i
)))
{
/* Clear the corresponding IPR bits */
edma_shadow0_write_array
(
ctlr
,
SH_ICR
,
j
,
(
1
<<
i
));
...
...
arch/arm/mach-davinci/gpio.c
View file @
db9c244a
...
...
@@ -24,18 +24,27 @@ static DEFINE_SPINLOCK(gpio_lock);
struct
davinci_gpio
{
struct
gpio_chip
chip
;
struct
gpio_controller
*
__iomem
regs
;
struct
gpio_controller
__iomem
*
regs
;
int
irq_base
;
};
static
struct
davinci_gpio
chips
[
DIV_ROUND_UP
(
DAVINCI_N_GPIO
,
32
)];
/* create a non-inlined version */
static
struct
gpio_controller
__iomem
*
__init
gpio2controller
(
unsigned
gpio
)
static
struct
gpio_controller
__iomem
__init
*
gpio2controller
(
unsigned
gpio
)
{
return
__gpio_to_controller
(
gpio
);
}
static
inline
struct
gpio_controller
__iomem
*
irq2controller
(
int
irq
)
{
struct
gpio_controller
__iomem
*
g
;
g
=
(
__force
struct
gpio_controller
__iomem
*
)
get_irq_chip_data
(
irq
);
return
g
;
}
static
int
__init
davinci_gpio_irq_setup
(
void
);
/*--------------------------------------------------------------------------*/
...
...
@@ -48,7 +57,7 @@ static int __init davinci_gpio_irq_setup(void);
static
int
davinci_direction_in
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
struct
davinci_gpio
*
d
=
container_of
(
chip
,
struct
davinci_gpio
,
chip
);
struct
gpio_controller
*
__iomem
g
=
d
->
regs
;
struct
gpio_controller
__iomem
*
g
=
d
->
regs
;
u32
temp
;
spin_lock
(
&
gpio_lock
);
...
...
@@ -70,7 +79,7 @@ static int davinci_direction_in(struct gpio_chip *chip, unsigned offset)
static
int
davinci_gpio_get
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
struct
davinci_gpio
*
d
=
container_of
(
chip
,
struct
davinci_gpio
,
chip
);
struct
gpio_controller
*
__iomem
g
=
d
->
regs
;
struct
gpio_controller
__iomem
*
g
=
d
->
regs
;
return
(
1
<<
offset
)
&
__raw_readl
(
&
g
->
in_data
);
}
...
...
@@ -79,7 +88,7 @@ static int
davinci_direction_out
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
value
)
{
struct
davinci_gpio
*
d
=
container_of
(
chip
,
struct
davinci_gpio
,
chip
);
struct
gpio_controller
*
__iomem
g
=
d
->
regs
;
struct
gpio_controller
__iomem
*
g
=
d
->
regs
;
u32
temp
;
u32
mask
=
1
<<
offset
;
...
...
@@ -99,7 +108,7 @@ static void
davinci_gpio_set
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
value
)
{
struct
davinci_gpio
*
d
=
container_of
(
chip
,
struct
davinci_gpio
,
chip
);
struct
gpio_controller
*
__iomem
g
=
d
->
regs
;
struct
gpio_controller
__iomem
*
g
=
d
->
regs
;
__raw_writel
((
1
<<
offset
),
value
?
&
g
->
set_data
:
&
g
->
clr_data
);
}
...
...
@@ -161,7 +170,7 @@ pure_initcall(davinci_gpio_setup);
static
void
gpio_irq_disable
(
unsigned
irq
)
{
struct
gpio_controller
*
__iomem
g
=
get_irq_chip_data
(
irq
);
struct
gpio_controller
__iomem
*
g
=
irq2controller
(
irq
);
u32
mask
=
(
u32
)
get_irq_data
(
irq
);
__raw_writel
(
mask
,
&
g
->
clr_falling
);
...
...
@@ -170,7 +179,7 @@ static void gpio_irq_disable(unsigned irq)
static
void
gpio_irq_enable
(
unsigned
irq
)
{
struct
gpio_controller
*
__iomem
g
=
get_irq_chip_data
(
irq
);
struct
gpio_controller
__iomem
*
g
=
irq2controller
(
irq
);
u32
mask
=
(
u32
)
get_irq_data
(
irq
);
unsigned
status
=
irq_desc
[
irq
].
status
;
...
...
@@ -186,7 +195,7 @@ static void gpio_irq_enable(unsigned irq)
static
int
gpio_irq_type
(
unsigned
irq
,
unsigned
trigger
)
{
struct
gpio_controller
*
__iomem
g
=
get_irq_chip_data
(
irq
);
struct
gpio_controller
__iomem
*
g
=
irq2controller
(
irq
);
u32
mask
=
(
u32
)
get_irq_data
(
irq
);
if
(
trigger
&
~
(
IRQ_TYPE_EDGE_FALLING
|
IRQ_TYPE_EDGE_RISING
))
...
...
@@ -215,7 +224,7 @@ static struct irq_chip gpio_irqchip = {
static
void
gpio_irq_handler
(
unsigned
irq
,
struct
irq_desc
*
desc
)
{
struct
gpio_controller
*
__iomem
g
=
get_irq_chip_data
(
irq
);
struct
gpio_controller
__iomem
*
g
=
irq2controller
(
irq
);
u32
mask
=
0xffff
;
/* we only care about one bank */
...
...
@@ -276,7 +285,7 @@ static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
static
int
gpio_irq_type_unbanked
(
unsigned
irq
,
unsigned
trigger
)
{
struct
gpio_controller
*
__iomem
g
=
get_irq_chip_data
(
irq
);
struct
gpio_controller
__iomem
*
g
=
irq2controller
(
irq
);
u32
mask
=
(
u32
)
get_irq_data
(
irq
);
if
(
trigger
&
~
(
IRQ_TYPE_EDGE_FALLING
|
IRQ_TYPE_EDGE_RISING
))
...
...
@@ -305,7 +314,7 @@ static int __init davinci_gpio_irq_setup(void)
u32
binten
=
0
;
unsigned
ngpio
,
bank_irq
;
struct
davinci_soc_info
*
soc_info
=
&
davinci_soc_info
;
struct
gpio_controller
*
__iomem
g
;
struct
gpio_controller
__iomem
*
g
;
ngpio
=
soc_info
->
gpio_num
;
...
...
@@ -362,7 +371,7 @@ static int __init davinci_gpio_irq_setup(void)
for
(
gpio
=
0
;
gpio
<
soc_info
->
gpio_unbanked
;
gpio
++
,
irq
++
)
{
set_irq_chip
(
irq
,
&
gpio_irqchip_unbanked
);
set_irq_data
(
irq
,
(
void
*
)
__gpio_mask
(
gpio
));
set_irq_chip_data
(
irq
,
g
);
set_irq_chip_data
(
irq
,
(
__force
void
*
)
g
);
irq_desc
[
irq
].
status
|=
IRQ_TYPE_EDGE_BOTH
;
}
...
...
@@ -385,12 +394,12 @@ static int __init davinci_gpio_irq_setup(void)
/* set up all irqs in this bank */
set_irq_chained_handler
(
bank_irq
,
gpio_irq_handler
);
set_irq_chip_data
(
bank_irq
,
g
);
set_irq_data
(
bank_irq
,
(
void
*
)
irq
);
set_irq_chip_data
(
bank_irq
,
(
__force
void
*
)
g
);
set_irq_data
(
bank_irq
,
(
void
*
)
irq
);
for
(
i
=
0
;
i
<
16
&&
gpio
<
ngpio
;
i
++
,
irq
++
,
gpio
++
)
{
set_irq_chip
(
irq
,
&
gpio_irqchip
);
set_irq_chip_data
(
irq
,
g
);
set_irq_chip_data
(
irq
,
(
__force
void
*
)
g
);
set_irq_data
(
irq
,
(
void
*
)
__gpio_mask
(
gpio
));
set_irq_handler
(
irq
,
handle_simple_irq
);
set_irq_flags
(
irq
,
IRQF_VALID
);
...
...
arch/arm/mach-davinci/include/mach/common.h
View file @
db9c244a
...
...
@@ -12,6 +12,9 @@
#ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
#define __ARCH_ARM_MACH_DAVINCI_COMMON_H
#include <linux/compiler.h>
#include <linux/types.h>
struct
sys_timer
;
extern
struct
sys_timer
davinci_timer
;
...
...
@@ -67,6 +70,7 @@ struct davinci_soc_info {
extern
struct
davinci_soc_info
davinci_soc_info
;
extern
void
davinci_common_init
(
struct
davinci_soc_info
*
soc_info
);
extern
void
davinci_init_ide
(
void
);
/* standard place to map on-chip SRAMs; they *may* support DMA */
#define SRAM_VIRT 0xfffe0000
...
...
arch/arm/mach-davinci/include/mach/cp_intc.h
View file @
db9c244a
...
...
@@ -52,6 +52,6 @@
#define CP_INTC_VECTOR_ADDR(n) (0x2000 + (n << 2))
void
__init
cp_intc_init
(
void
__iomem
*
base
,
unsigned
short
num_irq
,
u8
*
irq_prio
);
u8
*
irq_prio
,
u32
*
host_map
);
#endif
/* __ASM_HARDWARE_CP_INTC_H */
arch/arm/mach-davinci/include/mach/cputype.h
View file @
db9c244a
...
...
@@ -33,6 +33,7 @@ struct davinci_id {
#define DAVINCI_CPU_ID_DM365 0x03650000
#define DAVINCI_CPU_ID_DA830 0x08300000
#define DAVINCI_CPU_ID_DA850 0x08500000
#define DAVINCI_CPU_ID_TNETV107X 0x0b8a0000
#define IS_DAVINCI_CPU(type, id) \
static inline int is_davinci_ ##type(void) \
...
...
@@ -46,6 +47,7 @@ IS_DAVINCI_CPU(dm355, DAVINCI_CPU_ID_DM355)
IS_DAVINCI_CPU
(
dm365
,
DAVINCI_CPU_ID_DM365
)
IS_DAVINCI_CPU
(
da830
,
DAVINCI_CPU_ID_DA830
)
IS_DAVINCI_CPU
(
da850
,
DAVINCI_CPU_ID_DA850
)
IS_DAVINCI_CPU
(
tnetv107x
,
DAVINCI_CPU_ID_TNETV107X
)
#ifdef CONFIG_ARCH_DAVINCI_DM644x
#define cpu_is_davinci_dm644x() is_davinci_dm644x()
...
...
@@ -83,4 +85,10 @@ IS_DAVINCI_CPU(da850, DAVINCI_CPU_ID_DA850)
#define cpu_is_davinci_da850() 0
#endif
#ifdef CONFIG_ARCH_DAVINCI_TNETV107X
#define cpu_is_davinci_tnetv107x() is_davinci_tnetv107x()
#else
#define cpu_is_davinci_tnetv107x() 0
#endif
#endif
arch/arm/mach-davinci/include/mach/da8xx.h
View file @
db9c244a
...
...
@@ -146,10 +146,4 @@ extern const short da850_mmcsd0_pins[];
extern
const
short
da850_nand_pins
[];
extern
const
short
da850_nor_pins
[];
#ifdef CONFIG_DAVINCI_MUX
int
da8xx_pinmux_setup
(
const
short
pins
[]);
#else
static
inline
int
da8xx_pinmux_setup
(
const
short
pins
[])
{
return
0
;
}
#endif
#endif
/* __ASM_ARCH_DAVINCI_DA8XX_H */
arch/arm/mach-davinci/include/mach/dm355.h
View file @
db9c244a
...
...
@@ -15,6 +15,9 @@
#include <mach/asp.h>
#include <media/davinci/vpfe_capture.h>
#define DM355_ASYNC_EMIF_CONTROL_BASE 0x01E10000
#define DM355_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define ASP1_TX_EVT_EN 1
#define ASP1_RX_EVT_EN 2
...
...
arch/arm/mach-davinci/include/mach/dm365.h
View file @
db9c244a
...
...
@@ -36,6 +36,10 @@
#define DAVINCI_DMA_VC_TX 2
#define DAVINCI_DMA_VC_RX 3
#define DM365_ASYNC_EMIF_CONTROL_BASE 0x01D10000
#define DM365_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define DM365_ASYNC_EMIF_DATA_CE1_BASE 0x04000000
void
__init
dm365_init
(
void
);
void
__init
dm365_init_asp
(
struct
snd_platform_data
*
pdata
);
void
__init
dm365_init_vc
(
struct
snd_platform_data
*
pdata
);
...
...
arch/arm/mach-davinci/include/mach/dm644x.h
View file @
db9c244a
...
...
@@ -34,6 +34,12 @@
#define DM644X_EMAC_MDIO_OFFSET (0x4000)
#define DM644X_EMAC_CNTRL_RAM_SIZE (0x2000)
#define DM644X_ASYNC_EMIF_CONTROL_BASE 0x01E00000
#define DM644X_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
#define DM644X_ASYNC_EMIF_DATA_CE1_BASE 0x04000000
#define DM644X_ASYNC_EMIF_DATA_CE2_BASE 0x06000000
#define DM644X_ASYNC_EMIF_DATA_CE3_BASE 0x08000000
void
__init
dm644x_init
(
void
);
void
__init
dm644x_init_asp
(
struct
snd_platform_data
*
pdata
);
void
dm644x_set_vpfe_config
(
struct
vpfe_config
*
cfg
);
...
...
arch/arm/mach-davinci/include/mach/dm646x.h
View file @
db9c244a
...
...
@@ -25,10 +25,10 @@
#define DM646X_EMAC_MDIO_OFFSET (0x4000)
#define DM646X_EMAC_CNTRL_RAM_SIZE (0x2000)
#define DM646X_ATA_REG_BASE (0x01C66000)
#define DM646X_ASYNC_EMIF_CONTROL_BASE 0x20008000
#define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000
void
__init
dm646x_init
(
void
);
void
__init
dm646x_init_ide
(
void
);
void
__init
dm646x_init_mcasp0
(
struct
snd_platform_data
*
pdata
);
void
__init
dm646x_init_mcasp1
(
struct
snd_platform_data
*
pdata
);
void
__init
dm646x_board_setup_refclk
(
struct
clk
*
clk
);
...
...
arch/arm/mach-davinci/include/mach/gpio.h
View file @
db9c244a
...
...
@@ -67,10 +67,10 @@ struct gpio_controller {
*
* These are NOT part of the cross-platform GPIO interface
*/
static
inline
struct
gpio_controller
*
__iomem
static
inline
struct
gpio_controller
__iomem
*
__gpio_to_controller
(
unsigned
gpio
)
{
void
*
__iomem
ptr
;
void
__iomem
*
ptr
;
void
__iomem
*
base
=
davinci_soc_info
.
gpio_base
;
if
(
gpio
<
32
*
1
)
...
...
@@ -102,7 +102,7 @@ static inline u32 __gpio_mask(unsigned gpio)
static
inline
void
gpio_set_value
(
unsigned
gpio
,
int
value
)
{
if
(
__builtin_constant_p
(
value
)
&&
gpio
<
DAVINCI_N_GPIO
)
{
struct
gpio_controller
*
__iomem
g
;
struct
gpio_controller
__iomem
*
g
;
u32
mask
;
g
=
__gpio_to_controller
(
gpio
);
...
...
@@ -128,7 +128,7 @@ static inline void gpio_set_value(unsigned gpio, int value)
*/
static
inline
int
gpio_get_value
(
unsigned
gpio
)
{
struct
gpio_controller
*
__iomem
g
;
struct
gpio_controller
__iomem
*
g
;
if
(
!
__builtin_constant_p
(
gpio
)
||
gpio
>=
DAVINCI_N_GPIO
)
return
__gpio_get_value
(
gpio
);
...
...
arch/arm/mach-davinci/include/mach/irqs.h
View file @
db9c244a
...
...
@@ -401,6 +401,103 @@
#define DA850_N_CP_INTC_IRQ 101
/* TNETV107X specific interrupts */
#define IRQ_TNETV107X_TDM1_TXDMA 0
#define IRQ_TNETV107X_EXT_INT_0 1
#define IRQ_TNETV107X_EXT_INT_1 2
#define IRQ_TNETV107X_GPIO_INT12 3
#define IRQ_TNETV107X_GPIO_INT13 4
#define IRQ_TNETV107X_TIMER_0_TINT12 5
#define IRQ_TNETV107X_TIMER_1_TINT12 6
#define IRQ_TNETV107X_UART0 7
#define IRQ_TNETV107X_TDM1_RXDMA 8
#define IRQ_TNETV107X_MCDMA_INT0 9
#define IRQ_TNETV107X_MCDMA_INT1 10
#define IRQ_TNETV107X_TPCC 11
#define IRQ_TNETV107X_TPCC_INT0 12
#define IRQ_TNETV107X_TPCC_INT1 13
#define IRQ_TNETV107X_TPCC_INT2 14
#define IRQ_TNETV107X_TPCC_INT3 15
#define IRQ_TNETV107X_TPTC0 16
#define IRQ_TNETV107X_TPTC1 17
#define IRQ_TNETV107X_TIMER_0_TINT34 18
#define IRQ_TNETV107X_ETHSS 19
#define IRQ_TNETV107X_TIMER_1_TINT34 20
#define IRQ_TNETV107X_DSP2ARM_INT0 21
#define IRQ_TNETV107X_DSP2ARM_INT1 22
#define IRQ_TNETV107X_ARM_NPMUIRQ 23
#define IRQ_TNETV107X_USB1 24
#define IRQ_TNETV107X_VLYNQ 25
#define IRQ_TNETV107X_UART0_DMATX 26
#define IRQ_TNETV107X_UART0_DMARX 27
#define IRQ_TNETV107X_TDM1_TXMCSP 28
#define IRQ_TNETV107X_SSP 29
#define IRQ_TNETV107X_MCDMA_INT2 30
#define IRQ_TNETV107X_MCDMA_INT3 31
#define IRQ_TNETV107X_TDM_CODECIF_EOT 32
#define IRQ_TNETV107X_IMCOP_SQR_ARM 33
#define IRQ_TNETV107X_USB0 34
#define IRQ_TNETV107X_USB_CDMA 35
#define IRQ_TNETV107X_LCD 36
#define IRQ_TNETV107X_KEYPAD 37
#define IRQ_TNETV107X_KEYPAD_FREE 38
#define IRQ_TNETV107X_RNG 39
#define IRQ_TNETV107X_PKA 40
#define IRQ_TNETV107X_TDM0_TXDMA 41
#define IRQ_TNETV107X_TDM0_RXDMA 42
#define IRQ_TNETV107X_TDM0_TXMCSP 43
#define IRQ_TNETV107X_TDM0_RXMCSP 44
#define IRQ_TNETV107X_TDM1_RXMCSP 45
#define IRQ_TNETV107X_SDIO1 46
#define IRQ_TNETV107X_SDIO0 47
#define IRQ_TNETV107X_TSC 48
#define IRQ_TNETV107X_TS 49
#define IRQ_TNETV107X_UART1 50
#define IRQ_TNETV107X_MBX_LITE 51
#define IRQ_TNETV107X_GPIO_INT00 52
#define IRQ_TNETV107X_GPIO_INT01 53
#define IRQ_TNETV107X_GPIO_INT02 54
#define IRQ_TNETV107X_GPIO_INT03 55
#define IRQ_TNETV107X_UART2 56
#define IRQ_TNETV107X_UART2_DMATX 57
#define IRQ_TNETV107X_UART2_DMARX 58
#define IRQ_TNETV107X_IMCOP_IMX 59
#define IRQ_TNETV107X_IMCOP_VLCD 60
#define IRQ_TNETV107X_AES 61
#define IRQ_TNETV107X_DES 62
#define IRQ_TNETV107X_SHAMD5 63
#define IRQ_TNETV107X_TPCC_ERR 68
#define IRQ_TNETV107X_TPCC_PROT 69
#define IRQ_TNETV107X_TPTC0_ERR 70
#define IRQ_TNETV107X_TPTC1_ERR 71
#define IRQ_TNETV107X_UART0_ERR 72
#define IRQ_TNETV107X_UART1_ERR 73
#define IRQ_TNETV107X_AEMIF_ERR 74
#define IRQ_TNETV107X_DDR_ERR 75
#define IRQ_TNETV107X_WDTARM_INT0 76
#define IRQ_TNETV107X_MCDMA_ERR 77
#define IRQ_TNETV107X_GPIO_ERR 78
#define IRQ_TNETV107X_MPU_ADDR 79
#define IRQ_TNETV107X_MPU_PROT 80
#define IRQ_TNETV107X_IOPU_ADDR 81
#define IRQ_TNETV107X_IOPU_PROT 82
#define IRQ_TNETV107X_KEYPAD_ADDR_ERR 83
#define IRQ_TNETV107X_WDT0_ADDR_ERR 84
#define IRQ_TNETV107X_WDT1_ADDR_ERR 85
#define IRQ_TNETV107X_CLKCTL_ADDR_ERR 86
#define IRQ_TNETV107X_PLL_UNLOCK 87
#define IRQ_TNETV107X_WDTDSP_INT0 88
#define IRQ_TNETV107X_SEC_CTRL_VIOLATION 89
#define IRQ_TNETV107X_KEY_MNG_VIOLATION 90
#define IRQ_TNETV107X_PBIST_CPU 91
#define IRQ_TNETV107X_WDTARM 92
#define IRQ_TNETV107X_PSC 93
#define IRQ_TNETV107X_MMC0 94
#define IRQ_TNETV107X_MMC1 95
#define TNETV107X_N_CP_INTC_IRQ 96
/* da850 currently has the most gpio pins (144) */
#define DAVINCI_N_GPIO 144
/* da850 currently has the most irqs so use DA850_N_CP_INTC_IRQ */
...
...
arch/arm/mach-davinci/include/mach/mux.h
View file @
db9c244a
...
...
@@ -291,6 +291,7 @@ enum davinci_dm365_index {
DM365_GPIO20
,
DM365_GPIO33
,
DM365_GPIO40
,
DM365_GPIO64_57
,
/* Video */
DM365_VOUT_FIELD
,
...
...
@@ -904,12 +905,286 @@ enum davinci_da850_index {
DA850_RTC_ALARM
,
};
enum
davinci_tnetv107x_index
{
TNETV107X_ASR_A00
,
TNETV107X_GPIO32
,
TNETV107X_ASR_A01
,
TNETV107X_GPIO33
,
TNETV107X_ASR_A02
,
TNETV107X_GPIO34
,
TNETV107X_ASR_A03
,
TNETV107X_GPIO35
,
TNETV107X_ASR_A04
,
TNETV107X_GPIO36
,
TNETV107X_ASR_A05
,
TNETV107X_GPIO37
,
TNETV107X_ASR_A06
,
TNETV107X_GPIO38
,
TNETV107X_ASR_A07
,
TNETV107X_GPIO39
,
TNETV107X_ASR_A08
,
TNETV107X_GPIO40
,
TNETV107X_ASR_A09
,
TNETV107X_GPIO41
,
TNETV107X_ASR_A10
,
TNETV107X_GPIO42
,
TNETV107X_ASR_A11
,
TNETV107X_BOOT_STRP_0
,
TNETV107X_ASR_A12
,
TNETV107X_BOOT_STRP_1
,
TNETV107X_ASR_A13
,
TNETV107X_GPIO43
,
TNETV107X_ASR_A14
,
TNETV107X_GPIO44
,
TNETV107X_ASR_A15
,
TNETV107X_GPIO45
,
TNETV107X_ASR_A16
,
TNETV107X_GPIO46
,
TNETV107X_ASR_A17
,
TNETV107X_GPIO47
,
TNETV107X_ASR_A18
,
TNETV107X_GPIO48
,
TNETV107X_SDIO1_DATA3_0
,
TNETV107X_ASR_A19
,
TNETV107X_GPIO49
,
TNETV107X_SDIO1_DATA2_0
,
TNETV107X_ASR_A20
,
TNETV107X_GPIO50
,
TNETV107X_SDIO1_DATA1_0
,
TNETV107X_ASR_A21
,
TNETV107X_GPIO51
,
TNETV107X_SDIO1_DATA0_0
,
TNETV107X_ASR_A22
,
TNETV107X_GPIO52
,
TNETV107X_SDIO1_CMD_0
,
TNETV107X_ASR_A23
,
TNETV107X_GPIO53
,
TNETV107X_SDIO1_CLK_0
,
TNETV107X_ASR_BA_1
,
TNETV107X_GPIO54
,
TNETV107X_SYS_PLL_CLK
,
TNETV107X_ASR_CS0
,
TNETV107X_ASR_CS1
,
TNETV107X_ASR_CS2
,
TNETV107X_TDM_PLL_CLK
,
TNETV107X_ASR_CS3
,
TNETV107X_ETH_PHY_CLK
,
TNETV107X_ASR_D00
,
TNETV107X_GPIO55
,
TNETV107X_ASR_D01
,
TNETV107X_GPIO56
,
TNETV107X_ASR_D02
,
TNETV107X_GPIO57
,
TNETV107X_ASR_D03
,
TNETV107X_GPIO58
,
TNETV107X_ASR_D04
,
TNETV107X_GPIO59_0
,
TNETV107X_ASR_D05
,
TNETV107X_GPIO60_0
,
TNETV107X_ASR_D06
,
TNETV107X_GPIO61_0
,
TNETV107X_ASR_D07
,
TNETV107X_GPIO62_0
,
TNETV107X_ASR_D08
,
TNETV107X_GPIO63_0
,
TNETV107X_ASR_D09
,
TNETV107X_GPIO64_0
,
TNETV107X_ASR_D10
,
TNETV107X_SDIO1_DATA3_1
,
TNETV107X_ASR_D11
,
TNETV107X_SDIO1_DATA2_1
,
TNETV107X_ASR_D12
,
TNETV107X_SDIO1_DATA1_1
,
TNETV107X_ASR_D13
,
TNETV107X_SDIO1_DATA0_1
,
TNETV107X_ASR_D14
,
TNETV107X_SDIO1_CMD_1
,
TNETV107X_ASR_D15
,
TNETV107X_SDIO1_CLK_1
,
TNETV107X_ASR_OE
,
TNETV107X_BOOT_STRP_2
,
TNETV107X_ASR_RNW
,
TNETV107X_GPIO29_0
,
TNETV107X_ASR_WAIT
,
TNETV107X_GPIO30_0
,
TNETV107X_ASR_WE
,
TNETV107X_BOOT_STRP_3
,
TNETV107X_ASR_WE_DQM0
,
TNETV107X_GPIO31
,
TNETV107X_LCD_PD17_0
,
TNETV107X_ASR_WE_DQM1
,
TNETV107X_ASR_BA0_0
,
TNETV107X_VLYNQ_CLK
,
TNETV107X_GPIO14
,
TNETV107X_LCD_PD19_0
,
TNETV107X_VLYNQ_RXD0
,
TNETV107X_GPIO15
,
TNETV107X_LCD_PD20_0
,
TNETV107X_VLYNQ_RXD1
,
TNETV107X_GPIO16
,
TNETV107X_LCD_PD21_0
,
TNETV107X_VLYNQ_TXD0
,
TNETV107X_GPIO17
,
TNETV107X_LCD_PD22_0
,
TNETV107X_VLYNQ_TXD1
,
TNETV107X_GPIO18
,
TNETV107X_LCD_PD23_0
,
TNETV107X_SDIO0_CLK
,
TNETV107X_GPIO19
,
TNETV107X_SDIO0_CMD
,
TNETV107X_GPIO20
,
TNETV107X_SDIO0_DATA0
,
TNETV107X_GPIO21
,
TNETV107X_SDIO0_DATA1
,
TNETV107X_GPIO22
,
TNETV107X_SDIO0_DATA2
,
TNETV107X_GPIO23
,
TNETV107X_SDIO0_DATA3
,
TNETV107X_GPIO24
,
TNETV107X_EMU0
,
TNETV107X_EMU1
,
TNETV107X_RTCK
,
TNETV107X_TRST_N
,
TNETV107X_TCK
,
TNETV107X_TDI
,
TNETV107X_TDO
,
TNETV107X_TMS
,
TNETV107X_TDM1_CLK
,
TNETV107X_TDM1_RX
,
TNETV107X_TDM1_TX
,
TNETV107X_TDM1_FS
,
TNETV107X_KEYPAD_R0
,
TNETV107X_KEYPAD_R1
,
TNETV107X_KEYPAD_R2
,
TNETV107X_KEYPAD_R3
,
TNETV107X_KEYPAD_R4
,
TNETV107X_KEYPAD_R5
,
TNETV107X_KEYPAD_R6
,
TNETV107X_GPIO12
,
TNETV107X_KEYPAD_R7
,
TNETV107X_GPIO10
,
TNETV107X_KEYPAD_C0
,
TNETV107X_KEYPAD_C1
,
TNETV107X_KEYPAD_C2
,
TNETV107X_KEYPAD_C3
,
TNETV107X_KEYPAD_C4
,
TNETV107X_KEYPAD_C5
,
TNETV107X_KEYPAD_C6
,
TNETV107X_GPIO13
,
TNETV107X_TEST_CLK_IN
,
TNETV107X_KEYPAD_C7
,
TNETV107X_GPIO11
,
TNETV107X_SSP0_0
,
TNETV107X_SCC_DCLK
,
TNETV107X_LCD_PD20_1
,
TNETV107X_SSP0_1
,
TNETV107X_SCC_CS_N
,
TNETV107X_LCD_PD21_1
,
TNETV107X_SSP0_2
,
TNETV107X_SCC_D
,
TNETV107X_LCD_PD22_1
,
TNETV107X_SSP0_3
,
TNETV107X_SCC_RESETN
,
TNETV107X_LCD_PD23_1
,
TNETV107X_SSP1_0
,
TNETV107X_GPIO25
,
TNETV107X_UART2_CTS
,
TNETV107X_SSP1_1
,
TNETV107X_GPIO26
,
TNETV107X_UART2_RD
,
TNETV107X_SSP1_2
,
TNETV107X_GPIO27
,
TNETV107X_UART2_RTS
,
TNETV107X_SSP1_3
,
TNETV107X_GPIO28
,
TNETV107X_UART2_TD
,
TNETV107X_UART0_CTS
,
TNETV107X_UART0_RD
,
TNETV107X_UART0_RTS
,
TNETV107X_UART0_TD
,
TNETV107X_UART1_RD
,
TNETV107X_UART1_TD
,
TNETV107X_LCD_AC_NCS
,
TNETV107X_LCD_HSYNC_RNW
,
TNETV107X_LCD_VSYNC_A0
,
TNETV107X_LCD_MCLK
,
TNETV107X_LCD_PD16_0
,
TNETV107X_LCD_PCLK_E
,
TNETV107X_LCD_PD00
,
TNETV107X_LCD_PD01
,
TNETV107X_LCD_PD02
,
TNETV107X_LCD_PD03
,
TNETV107X_LCD_PD04
,
TNETV107X_LCD_PD05
,
TNETV107X_LCD_PD06
,
TNETV107X_LCD_PD07
,
TNETV107X_LCD_PD08
,
TNETV107X_GPIO59_1
,
TNETV107X_LCD_PD09
,
TNETV107X_GPIO60_1
,
TNETV107X_LCD_PD10
,
TNETV107X_ASR_BA0_1
,
TNETV107X_GPIO61_1
,
TNETV107X_LCD_PD11
,
TNETV107X_GPIO62_1
,
TNETV107X_LCD_PD12
,
TNETV107X_GPIO63_1
,
TNETV107X_LCD_PD13
,
TNETV107X_GPIO64_1
,
TNETV107X_LCD_PD14
,
TNETV107X_GPIO29_1
,
TNETV107X_LCD_PD15
,
TNETV107X_GPIO30_1
,
TNETV107X_EINT0
,
TNETV107X_GPIO08
,
TNETV107X_EINT1
,
TNETV107X_GPIO09
,
TNETV107X_GPIO00
,
TNETV107X_LCD_PD20_2
,
TNETV107X_TDM_CLK_IN_2
,
TNETV107X_GPIO01
,
TNETV107X_LCD_PD21_2
,
TNETV107X_24M_CLK_OUT_1
,
TNETV107X_GPIO02
,
TNETV107X_LCD_PD22_2
,
TNETV107X_GPIO03
,
TNETV107X_LCD_PD23_2
,
TNETV107X_GPIO04
,
TNETV107X_LCD_PD16_1
,
TNETV107X_USB0_RXERR
,
TNETV107X_GPIO05
,
TNETV107X_LCD_PD17_1
,
TNETV107X_TDM_CLK_IN_1
,
TNETV107X_GPIO06
,
TNETV107X_LCD_PD18
,
TNETV107X_24M_CLK_OUT_2
,
TNETV107X_GPIO07
,
TNETV107X_LCD_PD19_1
,
TNETV107X_USB1_RXERR
,
TNETV107X_ETH_PLL_CLK
,
TNETV107X_MDIO
,
TNETV107X_MDC
,
TNETV107X_AIC_MUTE_STAT_N
,
TNETV107X_TDM0_CLK
,
TNETV107X_AIC_HNS_EN_N
,
TNETV107X_TDM0_FS
,
TNETV107X_AIC_HDS_EN_STAT_N
,
TNETV107X_TDM0_TX
,
TNETV107X_AIC_HNF_EN_STAT_N
,
TNETV107X_TDM0_RX
,
};
#ifdef CONFIG_DAVINCI_MUX
/* setup pin muxing */
extern
int
davinci_cfg_reg
(
unsigned
long
reg_cfg
);
extern
int
davinci_cfg_reg_list
(
const
short
pins
[]);
#else
/* boot loader does it all (no warnings from CONFIG_DAVINCI_MUX_WARNINGS) */
static
inline
int
davinci_cfg_reg
(
unsigned
long
reg_cfg
)
{
return
0
;
}
static
inline
int
davinci_cfg_reg_list
(
const
short
pins
[])
{
return
0
;
}
#endif
#endif
/* __INC_MACH_MUX_H */
arch/arm/mach-davinci/include/mach/psc.h
View file @
db9c244a
...
...
@@ -180,6 +180,53 @@
#define DA8XX_LPSC1_CR_P3_SS 26
#define DA8XX_LPSC1_L3_CBA_RAM 31
/* TNETV107X LPSC Assignments */
#define TNETV107X_LPSC_ARM 0
#define TNETV107X_LPSC_GEM 1
#define TNETV107X_LPSC_DDR2_PHY 2
#define TNETV107X_LPSC_TPCC 3
#define TNETV107X_LPSC_TPTC0 4
#define TNETV107X_LPSC_TPTC1 5
#define TNETV107X_LPSC_RAM 6
#define TNETV107X_LPSC_MBX_LITE 7
#define TNETV107X_LPSC_LCD 8
#define TNETV107X_LPSC_ETHSS 9
#define TNETV107X_LPSC_AEMIF 10
#define TNETV107X_LPSC_CHIP_CFG 11
#define TNETV107X_LPSC_TSC 12
#define TNETV107X_LPSC_ROM 13
#define TNETV107X_LPSC_UART2 14
#define TNETV107X_LPSC_PKTSEC 15
#define TNETV107X_LPSC_SECCTL 16
#define TNETV107X_LPSC_KEYMGR 17
#define TNETV107X_LPSC_KEYPAD 18
#define TNETV107X_LPSC_GPIO 19
#define TNETV107X_LPSC_MDIO 20
#define TNETV107X_LPSC_SDIO0 21
#define TNETV107X_LPSC_UART0 22
#define TNETV107X_LPSC_UART1 23
#define TNETV107X_LPSC_TIMER0 24
#define TNETV107X_LPSC_TIMER1 25
#define TNETV107X_LPSC_WDT_ARM 26
#define TNETV107X_LPSC_WDT_DSP 27
#define TNETV107X_LPSC_SSP 28
#define TNETV107X_LPSC_TDM0 29
#define TNETV107X_LPSC_VLYNQ 30
#define TNETV107X_LPSC_MCDMA 31
#define TNETV107X_LPSC_USB0 32
#define TNETV107X_LPSC_TDM1 33
#define TNETV107X_LPSC_DEBUGSS 34
#define TNETV107X_LPSC_ETHSS_RGMII 35
#define TNETV107X_LPSC_SYSTEM 36
#define TNETV107X_LPSC_IMCOP 37
#define TNETV107X_LPSC_SPARE 38
#define TNETV107X_LPSC_SDIO1 39
#define TNETV107X_LPSC_USB1 40
#define TNETV107X_LPSC_USBSS 41
#define TNETV107X_LPSC_DDR2_EMIF1_VRST 42
#define TNETV107X_LPSC_DDR2_EMIF2_VCTL_RST 43
#define TNETV107X_LPSC_MAX 44
/* PSC register offsets */
#define EPCPR 0x070
#define PTCMD 0x120
...
...
@@ -189,13 +236,19 @@
#define MDSTAT 0x800
#define MDCTL 0xA00
/* PSC module states */
#define PSC_STATE_SWRSTDISABLE 0
#define PSC_STATE_SYNCRST 1
#define PSC_STATE_DISABLE 2
#define PSC_STATE_ENABLE 3
#define MDSTAT_STATE_MASK 0x1f
#ifndef __ASSEMBLER__
extern
int
davinci_psc_is_clk_active
(
unsigned
int
ctlr
,
unsigned
int
id
);
extern
void
davinci_psc_config
(
unsigned
int
domain
,
unsigned
int
ctlr
,
unsigned
int
id
,
char
enabl
e
);
unsigned
int
id
,
u32
next_stat
e
);
#endif
...
...
arch/arm/mach-davinci/mux.c
View file @
db9c244a
...
...
@@ -91,7 +91,7 @@ int __init_or_module davinci_cfg_reg(const unsigned long index)
}
EXPORT_SYMBOL
(
davinci_cfg_reg
);
int
da8xx_pinmux_setup
(
const
short
pins
[])
int
__init_or_module
davinci_cfg_reg_list
(
const
short
pins
[])
{
int
i
,
error
=
-
EINVAL
;
...
...
arch/arm/mach-davinci/psc.c
View file @
db9c244a
...
...
@@ -47,12 +47,11 @@ int __init davinci_psc_is_clk_active(unsigned int ctlr, unsigned int id)
/* Enable or disable a PSC domain */
void
davinci_psc_config
(
unsigned
int
domain
,
unsigned
int
ctlr
,
unsigned
int
id
,
char
enabl
e
)
unsigned
int
id
,
u32
next_stat
e
)
{
u32
epcpr
,
ptcmd
,
ptstat
,
pdstat
,
pdctl1
,
mdstat
,
mdctl
;
void
__iomem
*
psc_base
;
struct
davinci_soc_info
*
soc_info
=
&
davinci_soc_info
;
u32
next_state
=
enable
?
0x3
:
0x2
;
/* 0x3 enables, 0x2 disables */
if
(
!
soc_info
->
psc_bases
||
(
ctlr
>=
soc_info
->
psc_bases_num
))
{
pr_warning
(
"PSC: Bad psc data: 0x%x[%d]
\n
"
,
...
...
arch/arm/mach-davinci/time.c
View file @
db9c244a
...
...
@@ -361,13 +361,13 @@ static void __init davinci_timer_init(void)
}
}
/* init timer hw */
timer_init
();
timer_clk
=
clk_get
(
NULL
,
"timer0"
);
BUG_ON
(
IS_ERR
(
timer_clk
));
clk_enable
(
timer_clk
);
/* init timer hw */
timer_init
();
davinci_clock_tick_rate
=
clk_get_rate
(
timer_clk
);
/* setup clocksource */
...
...
drivers/rtc/Kconfig
View file @
db9c244a
...
...
@@ -620,6 +620,16 @@ config RTC_DRV_NUC900
comment "on-CPU RTC drivers"
config RTC_DRV_DAVINCI
tristate "TI DaVinci RTC"
depends on ARCH_DAVINCI_DM365
help
If you say yes here you get support for the RTC on the
DaVinci platforms (DM365).
This driver can also be built as a module. If so, the module
will be called rtc-davinci.
config RTC_DRV_OMAP
tristate "TI OMAP1"
depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_DAVINCI_DA8XX
...
...
drivers/rtc/Makefile
View file @
db9c244a
...
...
@@ -27,6 +27,7 @@ obj-$(CONFIG_RTC_DRV_BQ32K) += rtc-bq32k.o
obj-$(CONFIG_RTC_DRV_BQ4802)
+=
rtc-bq4802.o
obj-$(CONFIG_RTC_DRV_CMOS)
+=
rtc-cmos.o
obj-$(CONFIG_RTC_DRV_COH901331)
+=
rtc-coh901331.o
obj-$(CONFIG_RTC_DRV_DAVINCI)
+=
rtc-davinci.o
obj-$(CONFIG_RTC_DRV_DM355EVM)
+=
rtc-dm355evm.o
obj-$(CONFIG_RTC_DRV_DS1216)
+=
rtc-ds1216.o
obj-$(CONFIG_RTC_DRV_DS1286)
+=
rtc-ds1286.o
...
...
drivers/rtc/rtc-davinci.c
0 → 100644
View file @
db9c244a
This diff is collapsed.
Click to expand it.
drivers/rtc/rtc-omap.c
View file @
db9c244a
...
...
@@ -34,7 +34,8 @@
* Board-specific wiring options include using split power mode with
* RTC_OFF_NOFF used as the reset signal (so the RTC won't be reset),
* and wiring RTC_WAKE_INT (so the RTC alarm can wake the system from
* low power modes). See the BOARD-SPECIFIC CUSTOMIZATION comment.
* low power modes) for OMAP1 boards (OMAP-L138 has this built into
* the SoC). See the BOARD-SPECIFIC CUSTOMIZATION comment.
*/
#define OMAP_RTC_BASE 0xfffb4800
...
...
@@ -401,16 +402,17 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
/* BOARD-SPECIFIC CUSTOMIZATION CAN GO HERE:
*
* - Boards wired so that RTC_WAKE_INT does something, and muxed
* right (W13_1610_RTC_WAKE_INT is the default after chip reset),
* should initialize the device wakeup flag appropriately.
* - Device wake-up capability setting should come through chip
* init logic. OMAP1 boards should initialize the "wakeup capable"
* flag in the platform device if the board is wired right for
* being woken up by RTC alarm. For OMAP-L138, this capability
* is built into the SoC by the "Deep Sleep" capability.
*
* - Boards wired so RTC_ON_nOFF is used as the reset signal,
* rather than nPWRON_RESET, should forcibly enable split
* power mode. (Some chip errata report that RTC_CTRL_SPLIT
* is write-only, and always reads as zero...)
*/
device_init_wakeup
(
&
pdev
->
dev
,
0
);
if
(
new_ctrl
&
(
u8
)
OMAP_RTC_CTRL_SPLIT
)
pr_info
(
"%s: split power mode
\n
"
,
pdev
->
name
);
...
...
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