diff options
Diffstat (limited to 'drivers/macintosh')
| -rw-r--r-- | drivers/macintosh/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/macintosh/Makefile | 1 | ||||
| -rw-r--r-- | drivers/macintosh/adb.c | 57 | ||||
| -rw-r--r-- | drivers/macintosh/macio_asic.c | 2 | ||||
| -rw-r--r-- | drivers/macintosh/rack-meter.c | 2 | ||||
| -rw-r--r-- | drivers/macintosh/smu.c | 4 | ||||
| -rw-r--r-- | drivers/macintosh/via-pmu.c | 2 | ||||
| -rw-r--r-- | drivers/macintosh/windfarm_lm75_sensor.c | 2 | ||||
| -rw-r--r-- | drivers/macintosh/windfarm_max6690_sensor.c | 2 | ||||
| -rw-r--r-- | drivers/macintosh/windfarm_pm121.c | 16 | 
10 files changed, 70 insertions, 21 deletions
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig index 696238b9f0f..3067d56b11a 100644 --- a/drivers/macintosh/Kconfig +++ b/drivers/macintosh/Kconfig @@ -32,7 +32,7 @@ config ADB_MACII  config ADB_MACIISI  	bool "Include Mac IIsi ADB driver" -	depends on ADB && MAC +	depends on ADB && MAC && BROKEN  	help  	  Say Y here if want your kernel to support Macintosh systems that use  	  the Mac IIsi style ADB.  This includes the IIsi, IIvi, IIvx, Classic @@ -103,6 +103,7 @@ config ADB_PMU_LED_IDE  	bool "Use front LED as IDE LED by default"  	depends on ADB_PMU_LED  	depends on LEDS_CLASS +	depends on IDE_GD_ATA  	select LEDS_TRIGGERS  	select LEDS_TRIGGER_IDE_DISK  	help diff --git a/drivers/macintosh/Makefile b/drivers/macintosh/Makefile index 6753b65f8ed..d2f0120bc87 100644 --- a/drivers/macintosh/Makefile +++ b/drivers/macintosh/Makefile @@ -40,6 +40,7 @@ obj-$(CONFIG_WINDFARM_RM31)     += windfarm_fcu_controls.o \  				   windfarm_ad7417_sensor.o \  				   windfarm_lm75_sensor.o \  				   windfarm_lm87_sensor.o \ +				   windfarm_max6690_sensor.o \  				   windfarm_pid.o \  				   windfarm_cpufreq_clamp.o \  				   windfarm_rm31.o diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index 04a50498f25..9e9c56758a0 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c @@ -38,7 +38,7 @@  #include <linux/platform_device.h>  #include <linux/mutex.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h>  #ifdef CONFIG_PPC  #include <asm/prom.h>  #include <asm/machdep.h> @@ -193,8 +193,7 @@ static int adb_scan_bus(void)  					break;  				noMovement = 0; -			} -			else { +			} else {  				/*  				 * No devices left at address i; move the  				 * one(s) we moved to `highFree' back to i. @@ -263,7 +262,7 @@ adb_reset_bus(void)  /*   * notify clients before sleep   */ -static int adb_suspend(struct platform_device *dev, pm_message_t state) +static int __adb_suspend(struct platform_device *dev, pm_message_t state)  {  	adb_got_sleep = 1;  	/* We need to get a lock on the probe thread */ @@ -276,10 +275,25 @@ static int adb_suspend(struct platform_device *dev, pm_message_t state)  	return 0;  } +static int adb_suspend(struct device *dev) +{ +	return __adb_suspend(to_platform_device(dev), PMSG_SUSPEND); +} + +static int adb_freeze(struct device *dev) +{ +	return __adb_suspend(to_platform_device(dev), PMSG_FREEZE); +} + +static int adb_poweroff(struct device *dev) +{ +	return __adb_suspend(to_platform_device(dev), PMSG_HIBERNATE); +} +  /*   * reset bus after sleep   */ -static int adb_resume(struct platform_device *dev) +static int __adb_resume(struct platform_device *dev)  {  	adb_got_sleep = 0;  	up(&adb_probe_mutex); @@ -287,6 +301,11 @@ static int adb_resume(struct platform_device *dev)  	return 0;  } + +static int adb_resume(struct device *dev) +{ +	return __adb_resume(to_platform_device(dev)); +}  #endif /* CONFIG_PM */  static int __init adb_init(void) @@ -502,7 +521,7 @@ void  adb_input(unsigned char *buf, int nb, int autopoll)  {  	int i, id; -	static int dump_adb_input = 0; +	static int dump_adb_input;  	unsigned long flags;  	void (*handler)(unsigned char *, int, int); @@ -624,8 +643,7 @@ do_adb_query(struct adb_request *req)  {  	int	ret = -EINVAL; -	switch(req->data[1]) -	{ +	switch(req->data[1]) {  	case ADB_QUERY_GETDEVINFO:  		if (req->nbytes < 3)  			break; @@ -697,7 +715,7 @@ static ssize_t adb_read(struct file *file, char __user *buf,  	int ret = 0;  	struct adbdev_state *state = file->private_data;  	struct adb_request *req; -	DECLARE_WAITQUEUE(wait,current); +	DECLARE_WAITQUEUE(wait, current);  	unsigned long flags;  	if (count < 2) @@ -794,8 +812,8 @@ static ssize_t adb_write(struct file *file, const char __user *buf,  	}  	/* Special case for ADB_BUSRESET request, all others are sent to  	   the controller */ -	else if ((req->data[0] == ADB_PACKET)&&(count > 1) -		&&(req->data[1] == ADB_BUSRESET)) { +	else if ((req->data[0] == ADB_PACKET) && (count > 1) +		&& (req->data[1] == ADB_BUSRESET)) {  		ret = do_adb_reset_bus();  		up(&adb_probe_mutex);  		atomic_dec(&state->n_pending); @@ -831,14 +849,25 @@ static const struct file_operations adb_fops = {  	.release	= adb_release,  }; +#ifdef CONFIG_PM +static const struct dev_pm_ops adb_dev_pm_ops = { +	.suspend = adb_suspend, +	.resume = adb_resume, +	/* Hibernate hooks */ +	.freeze = adb_freeze, +	.thaw = adb_resume, +	.poweroff = adb_poweroff, +	.restore = adb_resume, +}; +#endif +  static struct platform_driver adb_pfdrv = {  	.driver = {  		.name = "adb", -	},  #ifdef CONFIG_PM -	.suspend = adb_suspend, -	.resume = adb_resume, +		.pm = &adb_dev_pm_ops,  #endif +	},  };  static struct platform_device adb_pfdev = { diff --git a/drivers/macintosh/macio_asic.c b/drivers/macintosh/macio_asic.c index ac5c8793986..4f12c6f01fe 100644 --- a/drivers/macintosh/macio_asic.c +++ b/drivers/macintosh/macio_asic.c @@ -24,6 +24,8 @@  #include <linux/init.h>  #include <linux/module.h>  #include <linux/slab.h> +#include <linux/of_address.h> +#include <linux/of_irq.h>  #include <asm/machdep.h>  #include <asm/macio.h> diff --git a/drivers/macintosh/rack-meter.c b/drivers/macintosh/rack-meter.c index cad0e19b47a..4192901cab4 100644 --- a/drivers/macintosh/rack-meter.c +++ b/drivers/macintosh/rack-meter.c @@ -25,6 +25,8 @@  #include <linux/pci.h>  #include <linux/dma-mapping.h>  #include <linux/kernel_stat.h> +#include <linux/of_address.h> +#include <linux/of_irq.h>  #include <asm/io.h>  #include <asm/prom.h> diff --git a/drivers/macintosh/smu.c b/drivers/macintosh/smu.c index b3b2d36c009..4eab93aa570 100644 --- a/drivers/macintosh/smu.c +++ b/drivers/macintosh/smu.c @@ -35,6 +35,7 @@  #include <linux/poll.h>  #include <linux/mutex.h>  #include <linux/of_device.h> +#include <linux/of_irq.h>  #include <linux/of_platform.h>  #include <linux/slab.h> @@ -1256,7 +1257,8 @@ static unsigned int smu_fpoll(struct file *file, poll_table *wait)  		if (pp->busy && pp->cmd.status != 1)  			mask |= POLLIN;  		spin_unlock_irqrestore(&pp->lock, flags); -	} if (pp->mode == smu_file_events) { +	} +	if (pp->mode == smu_file_events) {  		/* Not yet implemented */  	}  	return mask; diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index 283e1b53c6b..dee88e59f0d 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -46,6 +46,8 @@  #include <linux/suspend.h>  #include <linux/cpu.h>  #include <linux/compat.h> +#include <linux/of_address.h> +#include <linux/of_irq.h>  #include <asm/prom.h>  #include <asm/machdep.h>  #include <asm/io.h> diff --git a/drivers/macintosh/windfarm_lm75_sensor.c b/drivers/macintosh/windfarm_lm75_sensor.c index 9ef32b3df91..590214ba736 100644 --- a/drivers/macintosh/windfarm_lm75_sensor.c +++ b/drivers/macintosh/windfarm_lm75_sensor.c @@ -133,7 +133,7 @@ static int wf_lm75_probe(struct i2c_client *client,  	lm->inited = 0;  	lm->ds1775 = ds1775;  	lm->i2c = client; -	lm->sens.name = (char *)name; /* XXX fix constness in structure */ +	lm->sens.name = name;  	lm->sens.ops = &wf_lm75_ops;  	i2c_set_clientdata(client, lm); diff --git a/drivers/macintosh/windfarm_max6690_sensor.c b/drivers/macintosh/windfarm_max6690_sensor.c index 945a25b2f31..87e439b1031 100644 --- a/drivers/macintosh/windfarm_max6690_sensor.c +++ b/drivers/macintosh/windfarm_max6690_sensor.c @@ -95,7 +95,7 @@ static int wf_max6690_probe(struct i2c_client *client,  	}  	max->i2c = client; -	max->sens.name = (char *)name; /* XXX fix constness in structure */ +	max->sens.name = name;  	max->sens.ops = &wf_max6690_ops;  	i2c_set_clientdata(client, max); diff --git a/drivers/macintosh/windfarm_pm121.c b/drivers/macintosh/windfarm_pm121.c index 7fe58b0ae8b..b350fb86ff0 100644 --- a/drivers/macintosh/windfarm_pm121.c +++ b/drivers/macintosh/windfarm_pm121.c @@ -555,8 +555,18 @@ static void pm121_create_sys_fans(int loop_id)  	pid_param.interval	= PM121_SYS_INTERVAL;  	pid_param.history_len	= PM121_SYS_HISTORY_SIZE;  	pid_param.itarget	= param->itarget; -	pid_param.min		= control->ops->get_min(control); -	pid_param.max		= control->ops->get_max(control); +	if(control) +	{ +		pid_param.min		= control->ops->get_min(control); +		pid_param.max		= control->ops->get_max(control); +	} else { +		/* +		 * This is probably not the right!? +		 * Perhaps goto fail  if control == NULL  above? +		 */ +		pid_param.min		= 0; +		pid_param.max		= 0; +	}  	wf_pid_init(&pm121_sys_state[loop_id]->pid, &pid_param); @@ -571,7 +581,7 @@ static void pm121_create_sys_fans(int loop_id)  	   control the same control */  	printk(KERN_WARNING "pm121: failed to set up %s loop "  	       "setting \"%s\" to max speed.\n", -	       loop_names[loop_id], control->name); +	       loop_names[loop_id], control ? control->name : "uninitialized value");  	if (control)  		wf_control_set_max(control);  | 
