mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
This commit is contained in:
commit
3f00d3e8fb
38 changed files with 1896 additions and 917 deletions
1
include/asm-mips/.gitignore
vendored
Normal file
1
include/asm-mips/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
asm_offsets.h
|
||||
|
|
@ -84,4 +84,13 @@ static inline void __udelay(unsigned long usecs, unsigned long lpj)
|
|||
|
||||
#define udelay(usecs) __udelay((usecs),__udelay_val)
|
||||
|
||||
/* make sure "usecs *= ..." in udelay do not overflow. */
|
||||
#if HZ >= 1000
|
||||
#define MAX_UDELAY_MS 1
|
||||
#elif HZ <= 200
|
||||
#define MAX_UDELAY_MS 5
|
||||
#else
|
||||
#define MAX_UDELAY_MS (1000 / HZ)
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_DELAY_H */
|
||||
|
|
|
|||
|
|
@ -119,10 +119,6 @@
|
|||
#define EOWNERDEAD 165 /* Owner died */
|
||||
#define ENOTRECOVERABLE 166 /* State not recoverable */
|
||||
|
||||
/* for robust mutexes */
|
||||
#define EOWNERDEAD 165 /* Owner died */
|
||||
#define ENOTRECOVERABLE 166 /* State not recoverable */
|
||||
|
||||
#define EDQUOT 1133 /* Quota exceeded */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
|
|
|||
|
|
@ -147,6 +147,29 @@ struct mace_audio {
|
|||
} chan[3];
|
||||
};
|
||||
|
||||
|
||||
/* register definitions for parallel port DMA */
|
||||
struct mace_parport {
|
||||
/* 0 - do nothing, 1 - pulse terminal count to the device after buffer is drained */
|
||||
#define MACEPAR_CONTEXT_LASTFLAG BIT(63)
|
||||
/* Should not cross 4K page boundary */
|
||||
#define MACEPAR_CONTEXT_DATALEN_MASK 0xfff00000000
|
||||
/* Can be arbitrarily aligned on any byte boundary on output, 64 byte aligned on input */
|
||||
#define MACEPAR_CONTEXT_BASEADDR_MASK 0xffffffff
|
||||
volatile u64 context_a;
|
||||
volatile u64 context_b;
|
||||
#define MACEPAR_CTLSTAT_DIRECTION BIT(0) /* 0 - mem->device, 1 - device->mem */
|
||||
#define MACEPAR_CTLSTAT_ENABLE BIT(1) /* 0 - channel frozen, 1 - channel enabled */
|
||||
#define MACEPAR_CTLSTAT_RESET BIT(2) /* 0 - channel active, 1 - complete channel reset */
|
||||
#define MACEPAR_CTLSTAT_CTXB_VALID BIT(3)
|
||||
#define MACEPAR_CTLSTAT_CTXA_VALID BIT(4)
|
||||
volatile u64 cntlstat; /* Control/Status register */
|
||||
#define MACEPAR_DIAG_CTXINUSE BIT(1)
|
||||
#define MACEPAR_DIAG_DMACTIVE BIT(2) /* 1 - Dma engine is enabled and processing something */
|
||||
#define MACEPAR_DIAG_CTRMASK 0x3ffc /* Counter of bytes left */
|
||||
volatile u64 diagnostic; /* RO: diagnostic register */
|
||||
};
|
||||
|
||||
/* ISA Control and DMA registers */
|
||||
struct mace_isactrl {
|
||||
volatile unsigned long ringbase;
|
||||
|
|
@ -199,6 +222,7 @@ struct mace_isactrl {
|
|||
volatile unsigned long _pad[0x2000/8 - 4];
|
||||
|
||||
volatile unsigned long dp_ram[0x400];
|
||||
struct mace_parport parport;
|
||||
};
|
||||
|
||||
/* Keyboard & Mouse registers
|
||||
|
|
@ -277,7 +301,7 @@ struct mace_perif {
|
|||
*/
|
||||
|
||||
/* Parallel port */
|
||||
struct mace_parallel { /* later... */
|
||||
struct mace_parallel {
|
||||
};
|
||||
|
||||
struct mace_ecp1284 { /* later... */
|
||||
|
|
|
|||
|
|
@ -168,8 +168,12 @@ static inline void __ide_mm_outsl(void __iomem * port, void *addr, u32 count)
|
|||
/* ide_insw calls insw, not __ide_insw. Why? */
|
||||
#undef insw
|
||||
#undef insl
|
||||
#undef outsw
|
||||
#undef outsl
|
||||
#define insw(port, addr, count) __ide_insw(port, addr, count)
|
||||
#define insl(port, addr, count) __ide_insl(port, addr, count)
|
||||
#define outsw(port, addr, count) __ide_outsw(port, addr, count)
|
||||
#define outsl(port, addr, count) __ide_outsl(port, addr, count)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@ static inline int mc146818_set_rtc_mmss(unsigned long nowtime)
|
|||
int real_seconds, real_minutes, cmos_minutes;
|
||||
unsigned char save_control, save_freq_select;
|
||||
int retval = 0;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&rtc_lock, flags);
|
||||
save_control = CMOS_READ(RTC_CONTROL); /* tell the clock it's being set */
|
||||
CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL);
|
||||
|
||||
|
|
@ -79,14 +81,30 @@ static inline int mc146818_set_rtc_mmss(unsigned long nowtime)
|
|||
*/
|
||||
CMOS_WRITE(save_control, RTC_CONTROL);
|
||||
CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
|
||||
spin_unlock_irqrestore(&rtc_lock, flags);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns true if a clock update is in progress
|
||||
*/
|
||||
static inline unsigned char rtc_is_updating(void)
|
||||
{
|
||||
unsigned char uip;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&rtc_lock, flags);
|
||||
uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
|
||||
spin_unlock_irqrestore(&rtc_lock, flags);
|
||||
return uip;
|
||||
}
|
||||
|
||||
static inline unsigned long mc146818_get_cmos_time(void)
|
||||
{
|
||||
unsigned int year, mon, day, hour, min, sec;
|
||||
int i;
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
* The Linux interpretation of the CMOS clock register contents:
|
||||
|
|
@ -97,12 +115,13 @@ static inline unsigned long mc146818_get_cmos_time(void)
|
|||
|
||||
/* read RTC exactly on falling edge of update flag */
|
||||
for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */
|
||||
if (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP)
|
||||
if (rtc_is_updating())
|
||||
break;
|
||||
for (i = 0 ; i < 1000000 ; i++) /* must try at least 2.228 ms */
|
||||
if (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP))
|
||||
if (!rtc_is_updating())
|
||||
break;
|
||||
|
||||
spin_lock_irqsave(&rtc_lock, flags);
|
||||
do { /* Isn't this overkill ? UIP above should guarantee consistency */
|
||||
sec = CMOS_READ(RTC_SECONDS);
|
||||
min = CMOS_READ(RTC_MINUTES);
|
||||
|
|
@ -120,6 +139,7 @@ static inline unsigned long mc146818_get_cmos_time(void)
|
|||
BCD_TO_BIN(mon);
|
||||
BCD_TO_BIN(year);
|
||||
}
|
||||
spin_unlock_irqrestore(&rtc_lock, flags);
|
||||
year = mc146818_decode_year(year);
|
||||
|
||||
return mktime(year, mon, day, hour, min, sec);
|
||||
|
|
|
|||
|
|
@ -76,43 +76,43 @@ search_module_dbetables(unsigned long addr)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_MIPS32_R1
|
||||
#define MODULE_PROC_FAMILY "MIPS32_R1"
|
||||
#define MODULE_PROC_FAMILY "MIPS32_R1 "
|
||||
#elif defined CONFIG_CPU_MIPS32_R2
|
||||
#define MODULE_PROC_FAMILY "MIPS32_R2"
|
||||
#define MODULE_PROC_FAMILY "MIPS32_R2 "
|
||||
#elif defined CONFIG_CPU_MIPS64_R1
|
||||
#define MODULE_PROC_FAMILY "MIPS64_R1"
|
||||
#define MODULE_PROC_FAMILY "MIPS64_R1 "
|
||||
#elif defined CONFIG_CPU_MIPS64_R2
|
||||
#define MODULE_PROC_FAMILY "MIPS64_R2"
|
||||
#define MODULE_PROC_FAMILY "MIPS64_R2 "
|
||||
#elif defined CONFIG_CPU_R3000
|
||||
#define MODULE_PROC_FAMILY "R3000"
|
||||
#define MODULE_PROC_FAMILY "R3000 "
|
||||
#elif defined CONFIG_CPU_TX39XX
|
||||
#define MODULE_PROC_FAMILY "TX39XX"
|
||||
#define MODULE_PROC_FAMILY "TX39XX "
|
||||
#elif defined CONFIG_CPU_VR41XX
|
||||
#define MODULE_PROC_FAMILY "VR41XX"
|
||||
#define MODULE_PROC_FAMILY "VR41XX "
|
||||
#elif defined CONFIG_CPU_R4300
|
||||
#define MODULE_PROC_FAMILY "R4300"
|
||||
#define MODULE_PROC_FAMILY "R4300 "
|
||||
#elif defined CONFIG_CPU_R4X00
|
||||
#define MODULE_PROC_FAMILY "R4X00"
|
||||
#define MODULE_PROC_FAMILY "R4X00 "
|
||||
#elif defined CONFIG_CPU_TX49XX
|
||||
#define MODULE_PROC_FAMILY "TX49XX"
|
||||
#define MODULE_PROC_FAMILY "TX49XX "
|
||||
#elif defined CONFIG_CPU_R5000
|
||||
#define MODULE_PROC_FAMILY "R5000"
|
||||
#define MODULE_PROC_FAMILY "R5000 "
|
||||
#elif defined CONFIG_CPU_R5432
|
||||
#define MODULE_PROC_FAMILY "R5432"
|
||||
#define MODULE_PROC_FAMILY "R5432 "
|
||||
#elif defined CONFIG_CPU_R6000
|
||||
#define MODULE_PROC_FAMILY "R6000"
|
||||
#define MODULE_PROC_FAMILY "R6000 "
|
||||
#elif defined CONFIG_CPU_NEVADA
|
||||
#define MODULE_PROC_FAMILY "NEVADA"
|
||||
#define MODULE_PROC_FAMILY "NEVADA "
|
||||
#elif defined CONFIG_CPU_R8000
|
||||
#define MODULE_PROC_FAMILY "R8000"
|
||||
#define MODULE_PROC_FAMILY "R8000 "
|
||||
#elif defined CONFIG_CPU_R10000
|
||||
#define MODULE_PROC_FAMILY "R10000"
|
||||
#define MODULE_PROC_FAMILY "R10000 "
|
||||
#elif defined CONFIG_CPU_RM7000
|
||||
#define MODULE_PROC_FAMILY "RM7000"
|
||||
#define MODULE_PROC_FAMILY "RM7000 "
|
||||
#elif defined CONFIG_CPU_RM9000
|
||||
#define MODULE_PROC_FAMILY "RM9000"
|
||||
#define MODULE_PROC_FAMILY "RM9000 "
|
||||
#elif defined CONFIG_CPU_SB1
|
||||
#define MODULE_PROC_FAMILY "SB1"
|
||||
#define MODULE_PROC_FAMILY "SB1 "
|
||||
#else
|
||||
#error MODULE_PROC_FAMILY undefined for your processor configuration
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
|
|
@ -29,17 +28,13 @@
|
|||
#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */
|
||||
#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */
|
||||
|
||||
static DEFINE_SPINLOCK(mips_rtc_lock);
|
||||
|
||||
static inline unsigned int get_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
unsigned long nowtime;
|
||||
|
||||
spin_lock(&mips_rtc_lock);
|
||||
nowtime = rtc_get_time();
|
||||
to_tm(nowtime, time);
|
||||
time->tm_year -= 1900;
|
||||
spin_unlock(&mips_rtc_lock);
|
||||
|
||||
return RTC_24H;
|
||||
}
|
||||
|
|
@ -49,12 +44,10 @@ static inline int set_rtc_time(struct rtc_time *time)
|
|||
unsigned long nowtime;
|
||||
int ret;
|
||||
|
||||
spin_lock(&mips_rtc_lock);
|
||||
nowtime = mktime(time->tm_year+1900, time->tm_mon+1,
|
||||
time->tm_mday, time->tm_hour, time->tm_min,
|
||||
time->tm_sec);
|
||||
ret = rtc_set_time(nowtime);
|
||||
spin_unlock(&mips_rtc_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,21 +16,19 @@
|
|||
#define RTLX_ID (RTLX_xID | RTLX_VERSION)
|
||||
#define RTLX_CHANNELS 8
|
||||
|
||||
enum rtlx_state {
|
||||
RTLX_STATE_UNUSED = 0,
|
||||
RTLX_STATE_INITIALISED,
|
||||
RTLX_STATE_REMOTE_READY,
|
||||
RTLX_STATE_OPENED
|
||||
};
|
||||
|
||||
#define RTLX_BUFFER_SIZE 1024
|
||||
|
||||
/*
|
||||
* lx_state bits
|
||||
*/
|
||||
#define RTLX_STATE_OPENED 1UL
|
||||
|
||||
/* each channel supports read and write.
|
||||
linux (vpe0) reads lx_buffer and writes rt_buffer
|
||||
SP (vpe1) reads rt_buffer and writes lx_buffer
|
||||
*/
|
||||
typedef struct rtlx_channel {
|
||||
enum rtlx_state rt_state;
|
||||
enum rtlx_state lx_state;
|
||||
struct rtlx_channel {
|
||||
unsigned long lx_state;
|
||||
|
||||
int buffer_size;
|
||||
|
||||
|
|
@ -43,14 +41,12 @@ typedef struct rtlx_channel {
|
|||
|
||||
void *queues;
|
||||
|
||||
} rtlx_channel_t;
|
||||
};
|
||||
|
||||
typedef struct rtlx_info {
|
||||
struct rtlx_info {
|
||||
unsigned long id;
|
||||
enum rtlx_state state;
|
||||
|
||||
struct rtlx_channel channel[RTLX_CHANNELS];
|
||||
};
|
||||
|
||||
} rtlx_info_t;
|
||||
|
||||
#endif
|
||||
#endif /* _RTLX_H_ */
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@
|
|||
#include <linux/linkage.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
extern spinlock_t rtc_lock;
|
||||
|
||||
/*
|
||||
* RTC ops. By default, they point to no-RTC functions.
|
||||
|
|
|
|||
Loading…
Reference in a new issue