diff options
| -rw-r--r-- | drivers/sbus/char/bbc_envctrl.c | 6 | ||||
| -rw-r--r-- | drivers/sbus/char/bbc_i2c.c | 11 | 
2 files changed, 14 insertions, 3 deletions
| diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c index 160e7510aca6..0787b9756165 100644 --- a/drivers/sbus/char/bbc_envctrl.c +++ b/drivers/sbus/char/bbc_envctrl.c @@ -452,6 +452,9 @@ static void attach_one_temp(struct bbc_i2c_bus *bp, struct platform_device *op,  	if (!tp)  		return; +	INIT_LIST_HEAD(&tp->bp_list); +	INIT_LIST_HEAD(&tp->glob_list); +  	tp->client = bbc_i2c_attach(bp, op);  	if (!tp->client) {  		kfree(tp); @@ -497,6 +500,9 @@ static void attach_one_fan(struct bbc_i2c_bus *bp, struct platform_device *op,  	if (!fp)  		return; +	INIT_LIST_HEAD(&fp->bp_list); +	INIT_LIST_HEAD(&fp->glob_list); +  	fp->client = bbc_i2c_attach(bp, op);  	if (!fp->client) {  		kfree(fp); diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c index c7763e482eb2..812b5f0361b6 100644 --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c @@ -300,13 +300,18 @@ static struct bbc_i2c_bus * attach_one_i2c(struct platform_device *op, int index  	if (!bp)  		return NULL; +	INIT_LIST_HEAD(&bp->temps); +	INIT_LIST_HEAD(&bp->fans); +  	bp->i2c_control_regs = of_ioremap(&op->resource[0], 0, 0x2, "bbc_i2c_regs");  	if (!bp->i2c_control_regs)  		goto fail; -	bp->i2c_bussel_reg = of_ioremap(&op->resource[1], 0, 0x1, "bbc_i2c_bussel"); -	if (!bp->i2c_bussel_reg) -		goto fail; +	if (op->num_resources == 2) { +		bp->i2c_bussel_reg = of_ioremap(&op->resource[1], 0, 0x1, "bbc_i2c_bussel"); +		if (!bp->i2c_bussel_reg) +			goto fail; +	}  	bp->waiting = 0;  	init_waitqueue_head(&bp->wq); | 
