Commit 4c8aded7 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://kernel.bkbits.net/jgarzik/libata-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents f5b8a851 892e9689
......@@ -1207,6 +1207,10 @@ config GENERIC_HARDIRQS
bool
default y
config GENERIC_IRQ_PROBE
bool
default y
config X86_SMP
bool
depends on SMP && !X86_VOYAGER
......
......@@ -71,6 +71,11 @@ unsigned long ppc_cached_irq_mask[NR_MASK_WORDS];
unsigned long ppc_lost_interrupts[NR_MASK_WORDS];
atomic_t ppc_n_lost_interrupts;
#ifdef CONFIG_TAU_INT
extern int tau_initialized;
extern int tau_interrupts(int);
#endif
int show_interrupts(struct seq_file *p, void *v)
{
int i = *(loff_t *) v, j;
......
......@@ -166,7 +166,7 @@ void start(unsigned long a1, unsigned long a2, void *promptr)
gunzip((void *)vmlinux.addr, vmlinux.size,
(unsigned char *)vmlinuz.addr, &len);
printf("done 0x%lx bytes\n\r", len);
printf("0x%x bytes of heap consumed, max in use 0x%\n\r",
printf("0x%x bytes of heap consumed, max in use 0x%x\n\r",
(unsigned)(avail_high - begin_avail), heap_max);
} else {
memmove((void *)vmlinux.addr,(void *)vmlinuz.addr,vmlinuz.size);
......
......@@ -675,7 +675,7 @@ static void __init prom_init_mem(void)
if ( RELOC(of_platform) == PLATFORM_PSERIES_LPAR )
RELOC(alloc_top) = RELOC(rmo_top);
else
RELOC(alloc_top) = min(0x40000000ul, RELOC(ram_top));
RELOC(alloc_top) = RELOC(rmo_top) = min(0x40000000ul, RELOC(ram_top));
RELOC(alloc_bottom) = PAGE_ALIGN(RELOC(klimit) - offset + 0x4000);
RELOC(alloc_top_high) = RELOC(ram_top);
......
......@@ -265,7 +265,7 @@ int __ioremap_explicit(unsigned long pa, unsigned long ea,
} else {
area = im_get_area(ea, size, IM_REGION_UNUSED|IM_REGION_SUBSET);
if (area == NULL) {
printk(KERN_ERR "could not obtain imalloc area for ea 0x%lx\n", ea);
/* Expected when PHB-dlpar is in play */
return 1;
}
if (ea != (unsigned long) area->addr) {
......
......@@ -346,6 +346,10 @@ config GENERIC_HARDIRQS
bool
default y
config GENERIC_IRQ_PROBE
bool
default y
menu "Power management options"
source kernel/power/Kconfig
......
This diff is collapsed.
......@@ -119,18 +119,33 @@ static char * critical_overtemp_path = "/sbin/critical_overtemp";
#define ADC_CPU_CURRENT_SCALE 0x1f40 /* _AD4 */
/*
* PID factors for the U3/Backside fan control loop
* PID factors for the U3/Backside fan control loop. We have 2 sets
* of values here, one set for U3 and one set for U3H
*/
#define BACKSIDE_FAN_PWM_ID 1
#define BACKSIDE_PID_G_d 0x02800000
#define BACKSIDE_FAN_PWM_DEFAULT_ID 1
#define BACKSIDE_FAN_PWM_INDEX 0
#define BACKSIDE_PID_U3_G_d 0x02800000
#define BACKSIDE_PID_U3H_G_d 0x01400000
#define BACKSIDE_PID_G_p 0x00500000
#define BACKSIDE_PID_G_r 0x00000000
#define BACKSIDE_PID_INPUT_TARGET 0x00410000
#define BACKSIDE_PID_U3_INPUT_TARGET 0x00410000
#define BACKSIDE_PID_U3H_INPUT_TARGET 0x004b0000
#define BACKSIDE_PID_INTERVAL 5
#define BACKSIDE_PID_OUTPUT_MAX 100
#define BACKSIDE_PID_OUTPUT_MIN 20
#define BACKSIDE_PID_U3_OUTPUT_MIN 20
#define BACKSIDE_PID_U3H_OUTPUT_MIN 30
#define BACKSIDE_PID_HISTORY_SIZE 2
struct basckside_pid_params
{
s32 G_d;
s32 G_p;
s32 G_r;
s32 input_target;
s32 output_min;
s32 output_max;
};
struct backside_pid_state
{
int ticks;
......@@ -146,7 +161,8 @@ struct backside_pid_state
/*
* PID factors for the Drive Bay fan control loop
*/
#define DRIVES_FAN_RPM_ID 2
#define DRIVES_FAN_RPM_DEFAULT_ID 2
#define DRIVES_FAN_RPM_INDEX 1
#define DRIVES_PID_G_d 0x01e00000
#define DRIVES_PID_G_p 0x00500000
#define DRIVES_PID_G_r 0x00000000
......@@ -168,7 +184,8 @@ struct drives_pid_state
int first;
};
#define SLOTS_FAN_PWM_ID 2
#define SLOTS_FAN_PWM_DEFAULT_ID 2
#define SLOTS_FAN_PWM_INDEX 2
#define SLOTS_FAN_DEFAULT_PWM 50 /* Do better here ! */
/*
......@@ -191,10 +208,15 @@ struct drives_pid_state
* CPU B FAKE POWER 49 (I_V_inputs: 18, 19)
*/
#define CPUA_INTAKE_FAN_RPM_ID 3
#define CPUA_EXHAUST_FAN_RPM_ID 4
#define CPUB_INTAKE_FAN_RPM_ID 5
#define CPUB_EXHAUST_FAN_RPM_ID 6
#define CPUA_INTAKE_FAN_RPM_DEFAULT_ID 3
#define CPUA_EXHAUST_FAN_RPM_DEFAULT_ID 4
#define CPUB_INTAKE_FAN_RPM_DEFAULT_ID 5
#define CPUB_EXHAUST_FAN_RPM_DEFAULT_ID 6
#define CPUA_INTAKE_FAN_RPM_INDEX 3
#define CPUA_EXHAUST_FAN_RPM_INDEX 4
#define CPUB_INTAKE_FAN_RPM_INDEX 5
#define CPUB_EXHAUST_FAN_RPM_INDEX 6
#define CPU_INTAKE_SCALE 0x0000f852
#define CPU_TEMP_HISTORY_SIZE 2
......@@ -202,6 +224,11 @@ struct drives_pid_state
#define CPU_PID_INTERVAL 1
#define CPU_MAX_OVERTEMP 30
#define CPUA_PUMP_RPM_INDEX 7
#define CPUB_PUMP_RPM_INDEX 8
#define CPU_PUMP_OUTPUT_MAX 3700
#define CPU_PUMP_OUTPUT_MIN 1000
struct cpu_pid_state
{
int index;
......@@ -219,6 +246,7 @@ struct cpu_pid_state
s32 voltage;
s32 current_a;
s32 last_temp;
s32 last_power;
int first;
u8 adc_config;
};
......
......@@ -924,7 +924,7 @@ struct aic7xxx_host {
volatile long flags;
ahc_feature features; /* chip features */
unsigned long base; /* card base address */
volatile unsigned char *maddr; /* memory mapped address */
volatile unsigned char __iomem *maddr; /* memory mapped address */
unsigned long isr_count; /* Interrupt count */
unsigned long spurious_int;
scb_data_type *scb_data;
......@@ -7967,8 +7967,8 @@ aic7xxx_register(Scsi_Host_Template *template, struct aic7xxx_host *p,
printk(KERN_INFO "(scsi%d) BIOS %sabled, IO Port 0x%lx, IRQ %d\n",
p->host_no, (p->flags & AHC_BIOS_ENABLED) ? "en" : "dis",
p->base, p->irq);
printk(KERN_INFO "(scsi%d) IO Memory at 0x%lx, MMAP Memory at 0x%lx\n",
p->host_no, p->mbase, (unsigned long)p->maddr);
printk(KERN_INFO "(scsi%d) IO Memory at 0x%lx, MMAP Memory at %p\n",
p->host_no, p->mbase, p->maddr);
}
#ifdef CONFIG_PCI
......@@ -9311,14 +9311,9 @@ aic7xxx_detect(Scsi_Host_Template *template)
((temp_p->chip != (AHC_AIC7870 | AHC_PCI)) &&
(temp_p->chip != (AHC_AIC7880 | AHC_PCI))) )
{
unsigned long page_offset, base;
base = temp_p->mbase & PAGE_MASK;
page_offset = temp_p->mbase - base;
temp_p->maddr = ioremap_nocache(base, page_offset + 256);
temp_p->maddr = ioremap_nocache(temp_p->mbase, 256);
if(temp_p->maddr)
{
temp_p->maddr += page_offset;
/*
* We need to check the I/O with the MMAPed address. Some machines
* simply fail to work with MMAPed I/O and certain controllers.
......@@ -9335,7 +9330,7 @@ aic7xxx_detect(Scsi_Host_Template *template)
PCI_FUNC(temp_p->pci_device_fn));
printk(KERN_INFO "aic7xxx: MMAPed I/O failed, reverting to "
"Programmed I/O.\n");
iounmap((void *) (((unsigned long) temp_p->maddr) & PAGE_MASK));
iounmap(temp_p->maddr);
temp_p->maddr = NULL;
if(temp_p->base == 0)
{
......@@ -10965,7 +10960,7 @@ aic7xxx_release(struct Scsi_Host *host)
#ifdef MMAPIO
if(p->maddr)
{
iounmap((void *) (((unsigned long) p->maddr) & PAGE_MASK));
iounmap(p->maddr);
}
#endif /* MMAPIO */
if(!p->pdev)
......
......@@ -316,7 +316,7 @@ static void tul_do_pause(unsigned amount)
/*******************************************************************
Use memeory refresh time ~ 15us * 2
********************************************************************/
void tul_se2_wait()
void tul_se2_wait(void)
{
#if 1
udelay(30);
......@@ -815,7 +815,7 @@ void tul_release_scb(HCS * hcsp, SCB * scbp)
printk("Release SCB %lx; ", (ULONG) scbp);
#endif
spin_lock_irqsave(&(hcsp->HCS_AvailLock), flags);
scbp->SCB_Srb = 0;
scbp->SCB_Srb = NULL;
scbp->SCB_Status = 0;
scbp->SCB_NxtScb = NULL;
if (hcsp->HCS_LastAvail != NULL) {
......@@ -1231,7 +1231,7 @@ int tul_device_reset(HCS * pCurHcb, struct scsi_cmnd *pSrb,
pScb->SCB_Target = target;
pScb->SCB_Mode = 0;
pScb->SCB_Srb = 0;
pScb->SCB_Srb = NULL;
if (ResetFlags & SCSI_RESET_SYNCHRONOUS) {
pScb->SCB_Srb = pSrb;
}
......@@ -2535,8 +2535,8 @@ int tul_post_scsi_rst(HCS * pCurHcb)
TCS *pCurTcb;
int i;
pCurHcb->HCS_ActScb = 0;
pCurHcb->HCS_ActTcs = 0;
pCurHcb->HCS_ActScb = NULL;
pCurHcb->HCS_ActTcs = NULL;
pCurHcb->HCS_Flags = 0;
while ((pCurScb = tul_pop_busy_scb(pCurHcb)) != NULL) {
......
......@@ -564,7 +564,7 @@ struct isp_queue_entry {
};
struct isp1020_hostdata {
u_long memaddr;
void __iomem *memaddr;
u_char revision;
struct host_param host_param;
struct dev_param dev_param[MAX_TARGETS];
......@@ -714,7 +714,7 @@ int isp1020_detect(Scsi_Host_Template *tmpt)
continue;
fail_uninit:
iounmap((void *)hostdata->memaddr);
iounmap(hostdata->memaddr);
release_region(host->io_port, 0xff);
fail_and_unregister:
if (hostdata->res_cpu)
......@@ -747,7 +747,7 @@ int isp1020_release(struct Scsi_Host *host)
isp_outw(0x0, host, PCI_INTF_CTL);
free_irq(host->irq, host);
iounmap((void *)hostdata->memaddr);
iounmap(hostdata->memaddr);
release_region(host->io_port, 0xff);
......@@ -769,7 +769,7 @@ const char *isp1020_info(struct Scsi_Host *host)
"QLogic ISP1020 SCSI on PCI bus %02x device %02x irq %d %s base 0x%lx",
hostdata->pci_dev->bus->number, hostdata->pci_dev->devfn, host->irq,
(hostdata->memaddr ? "MEM" : "I/O"),
(hostdata->memaddr ? hostdata->memaddr : host->io_port));
(hostdata->memaddr ? (unsigned long)hostdata->memaddr : host->io_port));
LEAVE("isp1020_info");
......@@ -1410,18 +1410,17 @@ static int isp1020_init(struct Scsi_Host *sh)
if ((command & PCI_COMMAND_MEMORY) &&
((mem_flags & 1) == 0)) {
mem_base = (u_long) ioremap(mem_base, PAGE_SIZE);
if (!mem_base) {
hostdata->memaddr = ioremap(mem_base, PAGE_SIZE);
if (!hostdata->memaddr) {
printk("qlogicisp : i/o remapping failed.\n");
goto out_release;
}
hostdata->memaddr = mem_base;
} else {
if (command & PCI_COMMAND_IO && (io_flags & 3) != 1) {
printk("qlogicisp : i/o mapping is disabled\n");
goto out_release;
}
hostdata->memaddr = 0; /* zero to signify no i/o mapping */
hostdata->memaddr = NULL; /* zero to signify no i/o mapping */
mem_base = 0;
}
......@@ -1470,7 +1469,7 @@ static int isp1020_init(struct Scsi_Host *sh)
return 0;
out_unmap:
iounmap((void *)hostdata->memaddr);
iounmap(hostdata->memaddr);
out_release:
release_region(sh->io_port, 0xff);
return 1;
......
......@@ -397,7 +397,7 @@ struct aty128fb_par {
struct aty128_ddafifo fifo_reg;
u32 accel_flags;
struct aty128_constants constants; /* PLL and others */
void *regbase; /* remapped mmio */
void __iomem *regbase; /* remapped mmio */
u32 vram_size; /* onboard video ram */
int chip_gen;
const struct aty128_meminfo *mem; /* onboard mem info */
......@@ -450,9 +450,9 @@ static int aty128_decode_var(struct fb_var_screeninfo *var,
struct aty128fb_par *par);
#if 0
static void __init aty128_get_pllinfo(struct aty128fb_par *par,
void *bios);
static void __init *aty128_map_ROM(struct pci_dev *pdev, const struct aty128fb_par *par);
static void __init aty128_unmap_ROM(struct pci_dev *dev, void * rom);
void __iomem *bios);
static void __init __iomem *aty128_map_ROM(struct pci_dev *pdev, const struct aty128fb_par *par);
static void __init aty128_unmap_ROM(struct pci_dev *dev, void __iomem * rom);
#endif
static void aty128_timings(struct aty128fb_par *par);
static void aty128_init_engine(struct aty128fb_par *par);
......@@ -788,7 +788,7 @@ static u32 depth_to_dst(u32 depth)
#ifndef __sparc__
static void __init aty128_unmap_ROM(struct pci_dev *dev, void * rom)
static void __init aty128_unmap_ROM(struct pci_dev *dev, void __iomem * rom)
{
struct resource *r = &dev->resource[PCI_ROM_RESOURCE];
......@@ -806,12 +806,12 @@ static void __init aty128_unmap_ROM(struct pci_dev *dev, void * rom)
}
static void * __init aty128_map_ROM(const struct aty128fb_par *par, struct pci_dev *dev)
static void __iomem * __init aty128_map_ROM(const struct aty128fb_par *par, struct pci_dev *dev)
{
struct resource *r;
u16 dptr;
u8 rom_type;
void *bios;
void __iomem *bios;
/* Fix from ATI for problem with Rage128 hardware not leaving ROM enabled */
unsigned int temp;
......@@ -903,7 +903,7 @@ static void * __init aty128_map_ROM(const struct aty128fb_par *par, struct pci_d
return NULL;
}
static void __init aty128_get_pllinfo(struct aty128fb_par *par, unsigned char *bios)
static void __init aty128_get_pllinfo(struct aty128fb_par *par, unsigned char __iomem *bios)
{
unsigned int bios_hdr;
unsigned int bios_pll;
......@@ -925,7 +925,7 @@ static void __init aty128_get_pllinfo(struct aty128fb_par *par, unsigned char *b
}
#ifdef CONFIG_X86
static void * __devinit aty128_find_mem_vbios(struct aty128fb_par *par)
static void __iomem * __devinit aty128_find_mem_vbios(struct aty128fb_par *par)
{
/* I simplified this code as we used to miss the signatures in
* a lot of case. It's now closer to XFree, we just don't check
......@@ -933,10 +933,10 @@ static void * __devinit aty128_find_mem_vbios(struct aty128fb_par *par)
* if we end up having conflicts
*/
u32 segstart;
unsigned char *rom_base = NULL;
unsigned char __iomem *rom_base = NULL;
for (segstart=0x000c0000; segstart<0x000f0000; segstart+=0x00001000) {
rom_base = (char *)ioremap(segstart, 0x10000);
rom_base = ioremap(segstart, 0x10000);
if (rom_base == NULL)
return NULL;
if ((*rom_base == 0x55) && (((*(rom_base + 1)) & 0xff) == 0xaa))
......@@ -1885,7 +1885,7 @@ static int __init aty128_probe(struct pci_dev *pdev, const struct pci_device_id
struct fb_info *info;
int err;
#ifndef __sparc__
void *bios = NULL;
void __iomem *bios = NULL;
#endif
/* Enable device in PCI config */
......
......@@ -59,15 +59,15 @@ union aty_pll {
struct aty_cursor {
u8 bits[8][64];
u8 mask[8][64];
u8 *ram;
u8 __iomem *ram;
};
struct atyfb_par {
struct aty_cmap_regs *aty_cmap_regs;
struct aty_cmap_regs __iomem *aty_cmap_regs;
const struct aty_dac_ops *dac_ops;
const struct aty_pll_ops *pll_ops;
struct aty_cursor *cursor;
unsigned long ati_regbase;
void __iomem *ati_regbase;
unsigned long clk_wr_offset;
struct crtc crtc;
union aty_pll pll;
......
......@@ -1514,7 +1514,7 @@ static int __init aty_init(struct fb_info *info, const char *name)
u8 pll_ref_div;
par->aty_cmap_regs =
(struct aty_cmap_regs *) (par->ati_regbase + 0xc0);
(struct aty_cmap_regs __iomem *) (par->ati_regbase + 0xc0);
chip_id = aty_ld_le32(CONFIG_CHIP_ID, par);
type = chip_id & CFG_CHIP_TYPE;
rev = (chip_id & CFG_CHIP_REV) >> 24;
......@@ -1782,8 +1782,7 @@ static int __init aty_init(struct fb_info *info, const char *name)
info->fix.smem_len -= GUI_RESERVE;
/* Clear the video memory */
fb_memset((void *) info->screen_base, 0,
info->fix.smem_len);
fb_memset(info->screen_base, 0, info->fix.smem_len);
info->fbops = &atyfb_ops;
info->pseudo_palette = pseudo_palette;
......@@ -2216,7 +2215,7 @@ int __init atyfb_do_init(void)
#else /* __sparc__ */
info->fix.mmio_start = 0x7ff000 + addr;
default_par->ati_regbase = (unsigned long)
default_par->ati_regbase =
ioremap(info->fix.mmio_start, 0x1000);
if (!default_par->ati_regbase) {
......@@ -2249,8 +2248,7 @@ int __init atyfb_do_init(void)
/* Map in frame buffer */
info->fix.smem_start = addr;
info->screen_base =
(char *) ioremap(addr, 0x800000);
info->screen_base = ioremap(addr, 0x800000);
if (!info->screen_base) {
#ifdef __sparc__
......@@ -2616,9 +2614,9 @@ void cleanup_module(void)
#ifndef __sparc__
if (par->ati_regbase)
iounmap((void *) par->ati_regbase);
iounmap(par->ati_regbase);
if (info->screen_base)
iounmap((void *) info->screen_base);
iounmap(info->screen_base);
#ifdef __BIG_ENDIAN
if (par->cursor && par->cursor->ram)
iounmap(par->cursor->ram);
......
......@@ -73,7 +73,8 @@ void aty_set_cursor_shape(struct fb_info *info)
struct atyfb_par *par = (struct atyfb_par *) info->par;
struct fb_cursor *cursor = &info->cursor;
struct aty_cursor *c = par->cursor;
u8 *ram, m, b;
u8 m, b;
u8 __iomem *ram;
int x, y;
if (!c)
......@@ -178,7 +179,7 @@ int atyfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
struct aty_cursor *__init aty_init_cursor(struct fb_info *info)
{
struct aty_cursor *cursor;
unsigned long addr;
void __iomem *addr;
cursor = kmalloc(sizeof(struct aty_cursor), GFP_ATOMIC);
if (!cursor)
......@@ -195,8 +196,8 @@ struct aty_cursor *__init aty_init_cursor(struct fb_info *info)
addr = info->fix.smem_start - 0x800000 + info->fix.smem_len;
cursor->ram = (u8 *) ioremap(addr, 1024);
#else
addr = (unsigned long) info->screen_base + info->fix.smem_len;
cursor->ram = (u8 *) addr;
addr = info->screen_base + info->fix.smem_len;
cursor->ram = addr;
#endif
#endif
if (!cursor->ram) {
......
......@@ -51,7 +51,7 @@ struct thread_info {
#endif
#define PREEMPT_ACTIVE 0x4000000
#define PREEMPT_ACTIVE 0x10000000
#ifdef CONFIG_4KSTACKS
#define THREAD_SIZE (4096)
#else
......
......@@ -65,7 +65,7 @@ static inline struct thread_info *current_thread_info(void)
*/
#define THREAD_SIZE 8192 /* 2 pages */
#define PREEMPT_ACTIVE 0x4000000
#define PREEMPT_ACTIVE 0x10000000
/*
* thread information flag bit numbers
......
......@@ -82,7 +82,7 @@ static inline struct thread_info *current_thread_info(void)
#endif /* __ASSEMBLY__ */
#define PREEMPT_ACTIVE 0x4000000
#define PREEMPT_ACTIVE 0x10000000
/*
* thread information flag bit numbers
......
......@@ -125,7 +125,7 @@ static inline struct thread_info *stack_thread_info(void)
/* work to do on any return to user space */
#define _TIF_ALLWORK_MASK 0x0000FFFF
#define PREEMPT_ACTIVE 0x4000000
#define PREEMPT_ACTIVE 0x10000000
/*
* Thread-synchronous status.
......
......@@ -14,7 +14,7 @@
* - bits 8-15 are the softirq count (max # of softirqs: 256)
* - bits 16-27 are the hardirq count (max # of hardirqs: 4096)
*
* - ( bit 26 is the PREEMPT_ACTIVE flag. )
* - ( bit 28 is the PREEMPT_ACTIVE flag. )
*
* PREEMPT_MASK: 0x000000ff
* SOFTIRQ_MASK: 0x0000ff00
......
......@@ -252,8 +252,24 @@ extern void tasklet_init(struct tasklet_struct *t,
* or zero if none occurred, or a negative irq number
* if more than one irq occurred.
*/
#if defined(CONFIG_GENERIC_HARDIRQS) && !defined(CONFIG_GENERIC_IRQ_PROBE)
static inline unsigned long probe_irq_on(void)
{
return 0;
}
static inline int probe_irq_off(unsigned long val)
{
return 0;
}
static inline unsigned int probe_irq_mask(unsigned long val)
{
return 0;
}
#else
extern unsigned long probe_irq_on(void); /* returns 0 on failure */
extern int probe_irq_off(unsigned long); /* returns 0 or negative on failure */
extern unsigned int probe_irq_mask(unsigned long); /* returns mask of ISA interrupts */
#endif
#endif
obj-y := autoprobe.o handle.o manage.o spurious.o
obj-y := handle.o manage.o spurious.o
obj-$(CONFIG_GENERIC_IRQ_PROBE) += autoprobe.o
obj-$(CONFIG_PROC_FS) += proc.o
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