Commit 894955f6 authored by Kevin Hilman's avatar Kevin Hilman

Merge branch 'davinci-next' into davinci-reset

parents d5925c8a 5ee7303c
...@@ -229,15 +229,22 @@ static const short da830_evm_mmc_sd_pins[] = { ...@@ -229,15 +229,22 @@ static const short da830_evm_mmc_sd_pins[] = {
}; };
#define DA830_MMCSD_WP_PIN GPIO_TO_PIN(2, 1) #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) static int da830_evm_mmc_get_ro(int index)
{ {
return gpio_get_value(DA830_MMCSD_WP_PIN); 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 = { static struct davinci_mmc_config da830_evm_mmc_config = {
.get_ro = da830_evm_mmc_get_ro, .get_ro = da830_evm_mmc_get_ro,
.wires = 4, .get_cd = da830_evm_mmc_get_cd,
.wires = 8,
.max_freq = 50000000, .max_freq = 50000000,
.caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
.version = MMC_CTLR_VERSION_2, .version = MMC_CTLR_VERSION_2,
...@@ -262,6 +269,14 @@ static inline void da830_evm_init_mmc(void) ...@@ -262,6 +269,14 @@ static inline void da830_evm_init_mmc(void)
} }
gpio_direction_input(DA830_MMCSD_WP_PIN); 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); ret = da8xx_register_mmcsd0(&da830_evm_mmc_config);
if (ret) { if (ret) {
pr_warning("da830_evm_init: mmc/sd registration failed: %d\n", pr_warning("da830_evm_init: mmc/sd registration failed: %d\n",
......
...@@ -358,9 +358,11 @@ static irqreturn_t dma_irq_handler(int irq, void *data) ...@@ -358,9 +358,11 @@ static irqreturn_t dma_irq_handler(int irq, void *data)
while (1) { while (1) {
int j; 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; 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; j = 1;
else else
break; break;
...@@ -368,8 +370,9 @@ static irqreturn_t dma_irq_handler(int irq, void *data) ...@@ -368,8 +370,9 @@ static irqreturn_t dma_irq_handler(int irq, void *data)
edma_shadow0_read_array(ctlr, SH_IPR, j)); edma_shadow0_read_array(ctlr, SH_IPR, j));
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
int k = (j << 5) + i; int k = (j << 5) + i;
if (edma_shadow0_read_array(ctlr, SH_IPR, j) & if ((edma_shadow0_read_array(ctlr, SH_IPR, j) & BIT(i))
(1 << i)) { && (edma_shadow0_read_array(ctlr,
SH_IER, j) & BIT(i))) {
/* Clear the corresponding IPR bits */ /* Clear the corresponding IPR bits */
edma_shadow0_write_array(ctlr, SH_ICR, j, edma_shadow0_write_array(ctlr, SH_ICR, j,
(1 << i)); (1 << i));
......
...@@ -620,6 +620,16 @@ config RTC_DRV_NUC900 ...@@ -620,6 +620,16 @@ config RTC_DRV_NUC900
comment "on-CPU RTC drivers" 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 config RTC_DRV_OMAP
tristate "TI OMAP1" tristate "TI OMAP1"
depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_DAVINCI_DA8XX depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_DAVINCI_DA8XX
......
...@@ -27,6 +27,7 @@ obj-$(CONFIG_RTC_DRV_BQ32K) += rtc-bq32k.o ...@@ -27,6 +27,7 @@ obj-$(CONFIG_RTC_DRV_BQ32K) += rtc-bq32k.o
obj-$(CONFIG_RTC_DRV_BQ4802) += rtc-bq4802.o obj-$(CONFIG_RTC_DRV_BQ4802) += rtc-bq4802.o
obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o
obj-$(CONFIG_RTC_DRV_COH901331) += rtc-coh901331.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_DM355EVM) += rtc-dm355evm.o
obj-$(CONFIG_RTC_DRV_DS1216) += rtc-ds1216.o obj-$(CONFIG_RTC_DRV_DS1216) += rtc-ds1216.o
obj-$(CONFIG_RTC_DRV_DS1286) += rtc-ds1286.o obj-$(CONFIG_RTC_DRV_DS1286) += rtc-ds1286.o
......
This diff is collapsed.
...@@ -34,7 +34,8 @@ ...@@ -34,7 +34,8 @@
* Board-specific wiring options include using split power mode with * 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), * 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 * 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 #define OMAP_RTC_BASE 0xfffb4800
...@@ -401,16 +402,17 @@ static int __init omap_rtc_probe(struct platform_device *pdev) ...@@ -401,16 +402,17 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
/* BOARD-SPECIFIC CUSTOMIZATION CAN GO HERE: /* BOARD-SPECIFIC CUSTOMIZATION CAN GO HERE:
* *
* - Boards wired so that RTC_WAKE_INT does something, and muxed * - Device wake-up capability setting should come through chip
* right (W13_1610_RTC_WAKE_INT is the default after chip reset), * init logic. OMAP1 boards should initialize the "wakeup capable"
* should initialize the device wakeup flag appropriately. * 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, * - Boards wired so RTC_ON_nOFF is used as the reset signal,
* rather than nPWRON_RESET, should forcibly enable split * rather than nPWRON_RESET, should forcibly enable split
* power mode. (Some chip errata report that RTC_CTRL_SPLIT * power mode. (Some chip errata report that RTC_CTRL_SPLIT
* is write-only, and always reads as zero...) * is write-only, and always reads as zero...)
*/ */
device_init_wakeup(&pdev->dev, 0);
if (new_ctrl & (u8) OMAP_RTC_CTRL_SPLIT) if (new_ctrl & (u8) OMAP_RTC_CTRL_SPLIT)
pr_info("%s: split power mode\n", pdev->name); pr_info("%s: split power mode\n", pdev->name);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment