Skip to content

Commit

Permalink
Sleep Issue changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Notion Ink committed Jun 30, 2011
1 parent 1fb6563 commit 8f16231
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 19 deletions.
1 change: 0 additions & 1 deletion Makefile 100644 → 100755
Expand Up @@ -5,7 +5,6 @@ EXTRAVERSION = .9
NAME = Man-Eating Seals of Antiquity

# *DOCUMENTATION*
#Test Change
# To see a list of typical targets execute "make help"
# More info can be located in ./README
# Comments in this file are targeted only to the developer, do not
Expand Down
2 changes: 1 addition & 1 deletion README
Expand Up @@ -24,7 +24,7 @@ ON WHAT HARDWARE DOES IT RUN?
today Linux also runs on (at least) the Compaq Alpha AXP, Sun SPARC and
UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell,
IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS,
Xtensa, AVR32 and Renesas M32R architectures.............
Xtensa, AVR32 and Renesas M32R architectures.

Linux is easily portable to most general-purpose 32- or 64-bit architectures
as long as they have a paged memory management unit (PMMU) and a port of the
Expand Down
16 changes: 8 additions & 8 deletions arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c 100644 → 100755
Expand Up @@ -278,24 +278,24 @@ static NvOdmWakeupPadInfo s_NvOdmWakeupPadInfo[] =
{NV_FALSE, 2, NvOdmWakeupPadPolarity_High}, // Wake Event 2 - dvi_d3
{NV_FALSE, 3, NvOdmWakeupPadPolarity_Low}, // Wake Event 3 - sdio3_dat1
{NV_FALSE, 4, NvOdmWakeupPadPolarity_High}, // Wake Event 4 - hdmi_int (HDMI_HPD)
{NV_TRUE, 5, NvOdmWakeupPadPolarity_Low}, // Wake Event 5 - vgp[6] (VI_GP6, Flash_EN2)
{NV_FALSE, 5, NvOdmWakeupPadPolarity_Low}, // Wake Event 5 - vgp[6] (VI_GP6, Flash_EN2)
{NV_FALSE, 6, NvOdmWakeupPadPolarity_High}, // Wake Event 6 - gp3_pu[5] (GPS_ON_OFF, GPS_IRQ)
#ifdef CONFIG_BT_BLUESLEEP
{NV_TRUE, 7, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 7 - gp3_pu[6] (GPS_INT, BT_IRQ)
{NV_FALSE, 7, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 7 - gp3_pu[6] (GPS_INT, BT_IRQ)
#else
{NV_FALSE, 7, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 7 - gp3_pu[6] (GPS_INT, BT_IRQ)
#endif
{NV_FALSE, 8, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 8 - gmi_wp_n (MICRO SD_CD)
{NV_FALSE, 9, NvOdmWakeupPadPolarity_High}, // Wake Event 9 - gp3_ps[2] (KB_COL10)
{NV_FALSE, 10, NvOdmWakeupPadPolarity_High}, // Wake Event 10 - gmi_ad21 (Accelerometer_TH/TAP)
{NV_TRUE, 11, NvOdmWakeupPadPolarity_Low}, // Wake Event 11 - spi2_cs2 (PEN_INT, AUDIO-IRQ, LOW_BAT#)
{NV_FALSE, 11, NvOdmWakeupPadPolarity_Low}, // Wake Event 11 - spi2_cs2 (PEN_INT, AUDIO-IRQ, LOW_BAT#)
{NV_FALSE, 12, NvOdmWakeupPadPolarity_Low}, // Wake Event 12 - spi2_cs1 (HEADSET_DET, not used)
{NV_TRUE, 13, NvOdmWakeupPadPolarity_Low}, // Wake Event 13 - sdio1_dat1 (WLAN_WAKE)
{NV_FALSE, 13, NvOdmWakeupPadPolarity_Low}, // Wake Event 13 - sdio1_dat1 (WLAN_WAKE)
{NV_FALSE, 14, NvOdmWakeupPadPolarity_High}, // Wake Event 14 - gp3_pv[6] (WLAN_INT)
{NV_FALSE, 15, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 15 - gmi_ad16 (SPI3_DOUT, DTV_SPI4_CS1)
{NV_TRUE, 16, NvOdmWakeupPadPolarity_High}, // Wake Event 16 - rtc_irq
{NV_FALSE, 16, NvOdmWakeupPadPolarity_High}, // Wake Event 16 - rtc_irq
#ifdef CONFIG_KEYBOARD_TEGRA
{NV_TRUE, 17, NvOdmWakeupPadPolarity_High}, // Wake Event 17 - kbc_interrupt
{NV_FALSE, 17, NvOdmWakeupPadPolarity_High}, // Wake Event 17 - kbc_interrupt
#else
{NV_FALSE, 17, NvOdmWakeupPadPolarity_High},
#endif
Expand All @@ -304,8 +304,8 @@ static NvOdmWakeupPadInfo s_NvOdmWakeupPadInfo[] =
{NV_FALSE, 20, NvOdmWakeupPadPolarity_High}, // Wake Event 20 - usb_vbus_wakeup[1]
{NV_FALSE, 21, NvOdmWakeupPadPolarity_Low}, // Wake Event 21 - usb_iddig[0]
{NV_FALSE, 22, NvOdmWakeupPadPolarity_Low}, // Wake Event 22 - usb_iddig[1]
{NV_TRUE, 23, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 23 - gmi_iordy (HSMMC_CLK)
{NV_TRUE, 24, NvOdmWakeupPadPolarity_Low}, // Wake Event 24 - gp3_pv[2]
{NV_FALSE, 23, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 23 - gmi_iordy (HSMMC_CLK)
{NV_FALSE, 24, NvOdmWakeupPadPolarity_Low}, // Wake Event 24 - gp3_pv[2]
{NV_FALSE, 25, NvOdmWakeupPadPolarity_High}, // Wake Event 25 - gp3_ps[4] (KB_COL12)
{NV_FALSE, 26, NvOdmWakeupPadPolarity_High}, // Wake Event 26 - gp3_ps[5] (KB_COL10)
{NV_FALSE, 27, NvOdmWakeupPadPolarity_High}, // Wake Event 27 - gp3_ps[0] (KB_COL8)
Expand Down
4 changes: 2 additions & 2 deletions drivers/rtc/Makefile
Expand Up @@ -57,9 +57,9 @@ obj-$(CONFIG_RTC_DRV_MAX6902) += rtc-max6902.o
obj-$(CONFIG_RTC_DRV_MV) += rtc-mv.o
obj-$(CONFIG_RTC_DRV_OMAP) += rtc-omap.o
obj-$(CONFIG_RTC_DRV_PCAP) += rtc-pcap.o
#obj-$(CONFIG_RTC_DRV_TEGRA) += rtc-tegra.o
#obj-$(CONFIG_RTC_DRV_TEGRA) += rtc-tegra.o
obj-$(CONFIG_RTC_DRV_TEGRA_ODM) += rtc-tegra-odm.o
obj-$(CONFIG_RTC_DRV_TEGRA) += rtc-tegra.o
obj-$(CONFIG_RTC_DRV_TEGRA) += rtc-tegra.o
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o
obj-$(CONFIG_RTC_DRV_PCF2123) += rtc-pcf2123.o
Expand Down
59 changes: 52 additions & 7 deletions drivers/rtc/rtc-tegra-odm.c
Expand Up @@ -32,10 +32,18 @@
#include <linux/platform_device.h>
#include "nvodm_pmu.h"

#define SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC (1)
/* Create a custom rtc structrue and move this to that structure */
static NvOdmPmuDeviceHandle hPmu = NULL;
static struct platform_device *tegra_rtc_pdev = NULL;

#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC
extern int internal_tegra_rtc_read_time(struct rtc_time *tm);
extern int internal_tegra_rtc_set_time(struct rtc_time *tm);
extern int internal_tegra_rtc_read_alarm(struct rtc_wkalrm *t);
extern int internal_tegra_rtc_set_alarm(struct rtc_wkalrm *t);
#endif

static int tegra_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
{
return -ENOIOCTLCMD;
Expand All @@ -44,6 +52,11 @@ static int tegra_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long a
static int tegra_rtc_read_time(struct device *dev, struct rtc_time *tm)
{
NvU32 now;
#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC
struct rtc_time iner_rtc_tm;
unsigned long iner_now;
int ret = 0;
#endif

if (hPmu == NULL)
return -1;
Expand All @@ -54,7 +67,17 @@ static int tegra_rtc_read_time(struct device *dev, struct rtc_time *tm)
}

rtc_time_to_tm(now, tm);
#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC
ret = internal_tegra_rtc_read_time(&iner_rtc_tm);
if(ret) return ret;
ret = rtc_tm_to_time(&iner_rtc_tm, &iner_now);
if((ret == 0) && (now != iner_now)) {
ret = internal_tegra_rtc_set_time(tm); /* Set internal rtc with external rtc time */
}
return ret;
#else
return 0;
#endif
}

static int tegra_rtc_set_time(struct device *dev, struct rtc_time *tm)
Expand All @@ -73,7 +96,11 @@ static int tegra_rtc_set_time(struct device *dev, struct rtc_time *tm)
printk("NvOdmPmuWriteRtc failed\n");
return -1;
}
#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC
return internal_tegra_rtc_set_time(tm);
#else
return 0;
#endif
}

static int tegra_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
Expand All @@ -87,7 +114,11 @@ static int tegra_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)

rtc_time_to_tm(alarm_sec, time);

#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC
return internal_tegra_rtc_read_alarm(wkalrm); /* ???? */
#else
return 0;
#endif
}

static int tegra_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
Expand All @@ -100,11 +131,11 @@ static int tegra_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
printk("%s(): wkalrm->enabled=%d\n", __func__, wkalrm?wkalrm->enabled:-1);

pr_debug("wkalrm->enabled = %d\n", wkalrm->enabled);
if (wkalrm->enabled == 0) {
if(!NvOdmPmuWriteAlarm(hPmu, 0))
return -EINVAL;
return 0;
}
if (wkalrm->enabled == 0) {
if(!NvOdmPmuWriteAlarm(hPmu, 0))
return -EINVAL;
return 0;
}

if (!NvOdmPmuReadRtc(hPmu, &now)) {
pr_debug("NvOdmPmuReadRtc failed\n");
Expand All @@ -128,10 +159,24 @@ static int tegra_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)

pr_debug("alarm_sec = %u\n", alarm_sec);

if(!NvOdmPmuWriteAlarm(hPmu, alarm_sec))
if(!NvOdmPmuWriteAlarm(hPmu, alarm_sec-now))
return -EINVAL;

return 0;
#if SYNC_EXTERNAL_RTC_TO_INTERNAL_RTC

return internal_tegra_rtc_set_alarm(wkalrm);
#else

pr_info("%s():enter.\n", __func__);

/* Alarm set */
events |= RTC_IRQF | RTC_AF;

if (rtc)
rtc_update_irq(rtc, 1, events);

return NV_TRUE;
#endif
}

static NvBool tegra_rtc_alarm_interrupt(NvOdmPmuDeviceHandle hPmu) {
Expand Down
20 changes: 20 additions & 0 deletions drivers/rtc/rtc-tegra.c
Expand Up @@ -323,6 +323,26 @@ static struct rtc_class_ops tegra_rtc_ops = {
.alarm_irq_enable = tegra_rtc_alarm_irq_enable,
};

int internal_tegra_rtc_read_time(struct rtc_time *tm)
{
struct device *dev = &(rtc_dev->dev);
return tegra_rtc_read_time(dev, tm);
}
int internal_tegra_rtc_set_time(struct rtc_time *tm)
{
struct device *dev = &(rtc_dev->dev);
return tegra_rtc_set_time(dev, tm);
}
int internal_tegra_rtc_read_alarm(struct rtc_wkalrm *t)
{
struct device *dev = &(rtc_dev->dev);
return tegra_rtc_read_alarm(dev, t);
}
int internal_tegra_rtc_set_alarm(struct rtc_wkalrm *t)
{
struct device *dev = &(rtc_dev->dev);
return tegra_rtc_set_alarm(dev, t);
}
static int __init tegra_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
Expand Down

0 comments on commit 8f16231

Please sign in to comment.