Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 63625
b: refs/heads/master
c: 3a97aeb
h: refs/heads/master
i:
  63623: 6ae3831
v: v3
  • Loading branch information
David S. Miller committed Aug 3, 2007
1 parent 168556d commit 40a44d3
Show file tree
Hide file tree
Showing 307 changed files with 3,483 additions and 7,394 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5f8f1c3c87e44f1bd0180cf19d0e7c83d062b4dc
refs/heads/master: 3a97aeb5c199070f136c085f8b0f9338d19c4148
1 change: 1 addition & 0 deletions trunk/Documentation/Changes
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ o nfs-utils 1.0.5 # showmount --version
o procps 3.2.0 # ps --version
o oprofile 0.9 # oprofiled --version
o udev 081 # udevinfo -V
o grub 0.93 # grub --version

Kernel compilation
==================
Expand Down
4 changes: 2 additions & 2 deletions trunk/Documentation/hwmon/adm1031
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ Supported chips:
Prefix: 'adm1030'
Addresses scanned: I2C 0x2c to 0x2e
Datasheet: Publicly available at the Analog Devices website
http://products.analog.com/products/info.asp?product=ADM1030
http://www.analog.com/en/prod/0%2C2877%2CADM1030%2C00.html

* Analog Devices ADM1031
Prefix: 'adm1031'
Addresses scanned: I2C 0x2c to 0x2e
Datasheet: Publicly available at the Analog Devices website
http://products.analog.com/products/info.asp?product=ADM1031
http://www.analog.com/en/prod/0%2C2877%2CADM1031%2C00.html

Authors:
Alexandre d'Alton <alex@alexdalton.org>
Expand Down
74 changes: 74 additions & 0 deletions trunk/Documentation/hwmon/thmc50
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
Kernel driver thmc50
=====================

Supported chips:
* Analog Devices ADM1022
Prefix: 'adm1022'
Addresses scanned: I2C 0x2c - 0x2e
Datasheet: http://www.analog.com/en/prod/0,2877,ADM1022,00.html
* Texas Instruments THMC50
Prefix: 'thmc50'
Addresses scanned: I2C 0x2c - 0x2e
Datasheet: http://focus.ti.com/docs/prod/folders/print/thmc50.html

Author: Krzysztof Helt <krzysztof.h1@wp.pl>

This driver was derived from the 2.4 kernel thmc50.c source file.

Credits:
thmc50.c (2.4 kernel):
Frodo Looijaard <frodol@dds.nl>
Philip Edelbrock <phil@netroedge.com>

Module Parameters
-----------------

* adm1022_temp3: short array
List of adapter,address pairs to force chips into ADM1022 mode with
second remote temperature. This does not work for original THMC50 chips.

Description
-----------

The THMC50 implements: an internal temperature sensor, support for an
external diode-type temperature sensor (compatible w/ the diode sensor inside
many processors), and a controllable fan/analog_out DAC. For the temperature
sensors, limits can be set through the appropriate Overtemperature Shutdown
register and Hysteresis register. Each value can be set and read to half-degree
accuracy. An alarm is issued (usually to a connected LM78) when the
temperature gets higher then the Overtemperature Shutdown value; it stays on
until the temperature falls below the Hysteresis value. All temperatures are in
degrees Celsius, and are guaranteed within a range of -55 to +125 degrees.

The THMC50 only updates its values each 1.5 seconds; reading it more often
will do no harm, but will return 'old' values.

The THMC50 is usually used in combination with LM78-like chips, to measure
the temperature of the processor(s).

The ADM1022 works the same as THMC50 but it is faster (5 Hz instead of
1 Hz for THMC50). It can be also put in a new mode to handle additional
remote temperature sensor. The driver use the mode set by BIOS by default.

In case the BIOS is broken and the mode is set incorrectly, you can force
the mode with additional remote temperature with adm1022_temp3 parameter.
A typical symptom of wrong setting is a fan forced to full speed.

Driver Features
---------------

The driver provides up to three temperatures:

temp1 -- internal
temp2 -- remote
temp3 -- 2nd remote only for ADM1022

pwm1 -- fan speed (0 = stop, 255 = full)
pwm1_mode -- always 0 (DC mode)

The value of 0 for pwm1 also forces FAN_OFF signal from the chip,
so it stops fans even if the value 0 into the ANALOG_OUT register does not.

The driver was tested on Compaq AP550 with two ADM1022 chips (one works
in the temp3 mode), five temperature readings and two fans.

10 changes: 9 additions & 1 deletion trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,14 @@ L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
W: http://blackfin.uclinux.org
S: Supported

BLACKFIN WATCHDOG DRIVER
P: Mike Frysinger
M: michael.frysinger@analog.com
M: vapier.adi@gmail.com
L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
W: http://blackfin.uclinux.org
S: Supported

BAYCOM/HDLCDRV DRIVERS FOR AX.25
P: Thomas Sailer
M: t.sailer@alumni.ethz.ch
Expand Down Expand Up @@ -3746,7 +3754,7 @@ L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/gadget
S: Maintained

USB HID/HIDBP DRIVERS
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
P: Jiri Kosina
M: jkosina@suse.cz
L: linux-usb-devel@lists.sourceforge.net
Expand Down
3 changes: 2 additions & 1 deletion trunk/arch/frv/mb93090-mb00/pci-vdk.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,8 @@ int __init pcibios_init(void)
__reg_MB86943_pci_sl_mem_base = __region_CS2 + 0x08000000;
mb();

*(volatile unsigned long *)(__region_CS2+0x01300014) == 1;
/* enable PCI arbitration */
__reg_MB86943_pci_arbiter = MB86943_PCIARB_EN;

ioport_resource.start = (__reg_MB86943_sl_pci_io_base << 9) & 0xfffffc00;
ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/i386/boot/edd.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ static int get_edd_info(u8 devno, struct edd_info *ei)
ax = 0x4800;
dx = devno;
asm("pushfl; int $0x13; popfl"
: "+a" (ax), "+d" (dx)
: "+a" (ax), "+d" (dx), "=m" (ei->params)
: "S" (&ei->params)
: "ebx", "ecx", "edi");

Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/i386/boot/video-vesa.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ void vesa_store_edid(void)
dx = 0; /* EDID block number */
di =(size_t) &boot_params.edid_info; /* (ES:)Pointer to block */
asm(INT10
: "+a" (ax), "+b" (bx), "+d" (dx)
: "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info)
: "c" (cx), "D" (di)
: "esi");
#endif /* CONFIG_FIRMWARE_EDID */
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/ia64/ia32/sys_ia32.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
#include <linux/uio.h>
#include <linux/nfs_fs.h>
#include <linux/quota.h>
#include <linux/syscalls.h>
#include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsd.h>
#include <linux/nfsd/cache.h>
Expand Down
19 changes: 10 additions & 9 deletions trunk/arch/ia64/kernel/iosapic.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ struct iosapic_rte_info {
static struct iosapic_intr_info {
struct list_head rtes; /* RTEs using this vector (empty =>
* not an IOSAPIC interrupt) */
int count; /* # of RTEs that shares this vector */
int count; /* # of registered RTEs */
u32 low32; /* current value of low word of
* Redirection table entry */
unsigned int dest; /* destination CPU physical ID */
Expand Down Expand Up @@ -313,7 +313,7 @@ mask_irq (unsigned int irq)
int rte_index;
struct iosapic_rte_info *rte;

if (list_empty(&iosapic_intr_info[irq].rtes))
if (!iosapic_intr_info[irq].count)
return; /* not an IOSAPIC interrupt! */

/* set only the mask bit */
Expand All @@ -331,7 +331,7 @@ unmask_irq (unsigned int irq)
int rte_index;
struct iosapic_rte_info *rte;

if (list_empty(&iosapic_intr_info[irq].rtes))
if (!iosapic_intr_info[irq].count)
return; /* not an IOSAPIC interrupt! */

low32 = iosapic_intr_info[irq].low32 &= ~IOSAPIC_MASK;
Expand Down Expand Up @@ -363,7 +363,7 @@ iosapic_set_affinity (unsigned int irq, cpumask_t mask)

dest = cpu_physical_id(first_cpu(mask));

if (list_empty(&iosapic_intr_info[irq].rtes))
if (!iosapic_intr_info[irq].count)
return; /* not an IOSAPIC interrupt */

set_irq_affinity_info(irq, dest, redir);
Expand Down Expand Up @@ -542,7 +542,7 @@ iosapic_reassign_vector (int irq)
{
int new_irq;

if (!list_empty(&iosapic_intr_info[irq].rtes)) {
if (iosapic_intr_info[irq].count) {
new_irq = create_irq();
if (new_irq < 0)
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
Expand All @@ -560,7 +560,7 @@ iosapic_reassign_vector (int irq)
}
}

static struct iosapic_rte_info *iosapic_alloc_rte (void)
static struct iosapic_rte_info * __init_refok iosapic_alloc_rte (void)
{
int i;
struct iosapic_rte_info *rte;
Expand Down Expand Up @@ -677,7 +677,7 @@ get_target_cpu (unsigned int gsi, int irq)
* In case of vector shared by multiple RTEs, all RTEs that
* share the vector need to use the same destination CPU.
*/
if (!list_empty(&iosapic_intr_info[irq].rtes))
if (iosapic_intr_info[irq].count)
return iosapic_intr_info[irq].dest;

/*
Expand Down Expand Up @@ -794,8 +794,9 @@ iosapic_register_intr (unsigned int gsi,
err = register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY,
polarity, trigger);
if (err < 0) {
spin_unlock(&irq_desc[irq].lock);
irq = err;
goto unlock_all;
goto unlock_iosapic_lock;
}

/*
Expand All @@ -811,7 +812,7 @@ iosapic_register_intr (unsigned int gsi,
gsi, (trigger == IOSAPIC_EDGE ? "edge" : "level"),
(polarity == IOSAPIC_POL_HIGH ? "high" : "low"),
cpu_logical_id(dest), dest, irq_to_vector(irq));
unlock_all:

spin_unlock(&irq_desc[irq].lock);
unlock_iosapic_lock:
spin_unlock_irqrestore(&iosapic_lock, flags);
Expand Down
17 changes: 6 additions & 11 deletions trunk/arch/ia64/kernel/irq_ia64.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,6 @@ int check_irq_used(int irq)
return -1;
}

static void reserve_irq(unsigned int irq)
{
unsigned long flags;

spin_lock_irqsave(&vector_lock, flags);
irq_status[irq] = IRQ_RSVD;
spin_unlock_irqrestore(&vector_lock, flags);
}

static inline int find_unassigned_irq(void)
{
int irq;
Expand Down Expand Up @@ -302,10 +293,14 @@ static cpumask_t vector_allocation_domain(int cpu)

void destroy_and_reserve_irq(unsigned int irq)
{
unsigned long flags;

dynamic_irq_cleanup(irq);

clear_irq_vector(irq);
reserve_irq(irq);
spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq);
irq_status[irq] = IRQ_RSVD;
spin_unlock_irqrestore(&vector_lock, flags);
}

static int __reassign_irq_vector(int irq, int cpu)
Expand Down
17 changes: 11 additions & 6 deletions trunk/arch/ia64/kernel/mca.c
Original file line number Diff line number Diff line change
Expand Up @@ -1750,8 +1750,17 @@ format_mca_init_stack(void *mca_data, unsigned long offset,
strncpy(p->comm, type, sizeof(p->comm)-1);
}

/* Do per-CPU MCA-related initialization. */
/* Caller prevents this from being called after init */
static void * __init_refok mca_bootmem(void)
{
void *p;

p = alloc_bootmem(sizeof(struct ia64_mca_cpu) * NR_CPUS +
KERNEL_STACK_SIZE);
return (void *)ALIGN((unsigned long)p, KERNEL_STACK_SIZE);
}

/* Do per-CPU MCA-related initialization. */
void __cpuinit
ia64_mca_cpu_init(void *cpu_data)
{
Expand All @@ -1763,11 +1772,7 @@ ia64_mca_cpu_init(void *cpu_data)
int cpu;

first_time = 0;
mca_data = alloc_bootmem(sizeof(struct ia64_mca_cpu)
* NR_CPUS + KERNEL_STACK_SIZE);
mca_data = (void *)(((unsigned long)mca_data +
KERNEL_STACK_SIZE - 1) &
(-KERNEL_STACK_SIZE));
mca_data = mca_bootmem();
for (cpu = 0; cpu < NR_CPUS; cpu++) {
format_mca_init_stack(mca_data,
offsetof(struct ia64_mca_cpu, mca_stack),
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/ia64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
#include <asm/smp.h>
#include <asm/system.h>
#include <asm/unistd.h>
#include <asm/system.h>

#if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE)
# error "struct cpuinfo_ia64 too big!"
Expand Down
8 changes: 5 additions & 3 deletions trunk/arch/ia64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ smp_flush_tlb_mm (struct mm_struct *mm)
}

/*
* Run a function on another CPU
* Run a function on a specific CPU
* <func> The function to run. This must be fast and non-blocking.
* <info> An arbitrary pointer to pass to the function.
* <nonatomic> Currently unused.
Expand All @@ -366,9 +366,11 @@ smp_call_function_single (int cpuid, void (*func) (void *info), void *info, int
int me = get_cpu(); /* prevent preemption and reschedule on another processor */

if (cpuid == me) {
printk(KERN_INFO "%s: trying to call self\n", __FUNCTION__);
local_irq_disable();
func(info);
local_irq_enable();
put_cpu();
return -EBUSY;
return 0;
}

data.func = func;
Expand Down
16 changes: 15 additions & 1 deletion trunk/arch/ia64/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,21 @@ ia64_init_itm (void)
if (!nojitter)
itc_jitter_data.itc_jitter = 1;
#endif
}
} else
/*
* ITC is drifty and we have not synchronized the ITCs in smpboot.c.
* ITC values may fluctuate significantly between processors.
* Clock should not be used for hrtimers. Mark itc as only
* useful for boot and testing.
*
* Note that jitter compensation is off! There is no point of
* synchronizing ITCs since they may be large differentials
* that change over time.
*
* The only way to fix this would be to repeatedly sync the
* ITCs. Until that time we have to avoid ITC.
*/
clocksource_itc.rating = 50;

/* Setup the CPU local timer tick */
ia64_cpu_local_tick();
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ia64/sn/kernel/io_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ void sn_bus_free_sysdata(void)
* hubdev_init_node() - Creates the HUB data structure and link them to it's
* own NODE specific data area.
*/
void hubdev_init_node(nodepda_t * npda, cnodeid_t node)
void __init hubdev_init_node(nodepda_t * npda, cnodeid_t node)
{
struct hubdev_info *hubdev_info;
int size;
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/ia64/sn/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <linux/interrupt.h>
#include <linux/acpi.h>
#include <linux/compiler.h>
#include <linux/sched.h>
#include <linux/root_dev.h>
#include <linux/nodemask.h>
#include <linux/pm.h>
Expand Down
Loading

0 comments on commit 40a44d3

Please sign in to comment.