mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge master.kernel.org:/home/rmk/linux-2.6-arm
This commit is contained in:
commit
4208ff04a2
17 changed files with 461 additions and 55 deletions
|
|
@ -17,16 +17,21 @@
|
|||
|
||||
#define IO_SPACE_LIMIT 0xffffffff
|
||||
#define __mem_pci(a) (a)
|
||||
#define ___io(p) ((void __iomem *)((p)+IXP2000_PCI_IO_VIRT_BASE))
|
||||
|
||||
/*
|
||||
* The IXP2400 before revision B0 asserts byte lanes for PCI I/O
|
||||
* The A? revisions of the IXP2000s assert byte lanes for PCI I/O
|
||||
* transactions the other way round (MEM transactions don't have this
|
||||
* issue), so we need to override the standard functions. B0 and later
|
||||
* have a bit that can be set to 1 to get the 'proper' behavior, but
|
||||
* since that isn't available on the A? revisions we just keep doing
|
||||
* things manually.
|
||||
* issue), so if we want to support those models, we need to override
|
||||
* the standard I/O functions.
|
||||
*
|
||||
* B0 and later have a bit that can be set to 1 to get the proper
|
||||
* behavior for I/O transactions, which then allows us to use the
|
||||
* standard I/O functions. This is what we do if the user does not
|
||||
* explicitly ask for support for pre-B0.
|
||||
*/
|
||||
#ifdef CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO
|
||||
#define ___io(p) ((void __iomem *)((p)+IXP2000_PCI_IO_VIRT_BASE))
|
||||
|
||||
#define alignb(addr) (void __iomem *)((unsigned long)(addr) ^ 3)
|
||||
#define alignw(addr) (void __iomem *)((unsigned long)(addr) ^ 2)
|
||||
|
||||
|
|
@ -119,6 +124,9 @@
|
|||
#define ioport_map(port, nr) ___io(port)
|
||||
|
||||
#define ioport_unmap(addr)
|
||||
#else
|
||||
#define __io(p) ((void __iomem *)((p)+IXP2000_PCI_IO_VIRT_BASE))
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_ARCH_IXDP2X01
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@
|
|||
#define PCI_CONTROL_BE_DEI (1 << 21) /* Big Endian Data Enable In */
|
||||
#define PCI_CONTROL_BE_BEO (1 << 20) /* Big Endian Byte Enable Out */
|
||||
#define PCI_CONTROL_BE_BEI (1 << 19) /* Big Endian Byte Enable In */
|
||||
#define PCI_CONTROL_PNR (1 << 17) /* PCI Not Reset bit */
|
||||
#define PCI_CONTROL_IEE (1 << 17) /* I/O cycle Endian swap Enable */
|
||||
|
||||
#define IXP2000_PCI_RST_REL (1 << 2)
|
||||
#define CFG_RST_DIR (*IXP2000_PCI_CONTROL & IXP2000_PCICNTL_PCF)
|
||||
|
|
|
|||
|
|
@ -39,8 +39,29 @@ struct sys_timer {
|
|||
void (*suspend)(void);
|
||||
void (*resume)(void);
|
||||
unsigned long (*offset)(void);
|
||||
|
||||
#ifdef CONFIG_NO_IDLE_HZ
|
||||
struct dyn_tick_timer *dyn_tick;
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NO_IDLE_HZ
|
||||
|
||||
#define DYN_TICK_SKIPPING (1 << 2)
|
||||
#define DYN_TICK_ENABLED (1 << 1)
|
||||
#define DYN_TICK_SUITABLE (1 << 0)
|
||||
|
||||
struct dyn_tick_timer {
|
||||
unsigned int state; /* Current state */
|
||||
int (*enable)(void); /* Enables dynamic tick */
|
||||
int (*disable)(void); /* Disables dynamic tick */
|
||||
void (*reprogram)(unsigned long); /* Reprograms the timer */
|
||||
int (*handler)(int, void *, struct pt_regs *);
|
||||
};
|
||||
|
||||
void timer_dyn_reprogram(void);
|
||||
#endif
|
||||
|
||||
extern struct sys_timer *system_timer;
|
||||
extern void timer_tick(struct pt_regs *);
|
||||
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ typedef unsigned long sigset_t;
|
|||
#define SIGSTKSZ 8192
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#define SA_TIMER 0x40000000
|
||||
#define SA_IRQNOMASK 0x08000000
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue