diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-03-26 10:03:03 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-03-26 10:03:03 +0000 | 
| commit | 938c0ace3ffb8cc2073a6d2e68fa7a6ab7cb471e (patch) | |
| tree | 9257bdba52ce88ca0a0c2f6fce1f59a1eb278452 /drivers/ata/pata_palmld.c | |
| parent | 16c29dafcc86024048f1dbb8349d31cb22c7c55a (diff) | |
| parent | 5898eb79fb45d4fd4ce22139c168de937bfaab38 (diff) | |
| download | linux-938c0ace3ffb8cc2073a6d2e68fa7a6ab7cb471e.tar.bz2 | |
Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable
Conflicts:
	arch/arm/mach-pxa/tosa.c
Diffstat (limited to 'drivers/ata/pata_palmld.c')
| -rw-r--r-- | drivers/ata/pata_palmld.c | 43 | 
1 files changed, 22 insertions, 21 deletions
| diff --git a/drivers/ata/pata_palmld.c b/drivers/ata/pata_palmld.c index a2a73d953840..b86d7e22595e 100644 --- a/drivers/ata/pata_palmld.c +++ b/drivers/ata/pata_palmld.c @@ -33,6 +33,11 @@  #define DRV_NAME "pata_palmld" +static struct gpio palmld_hdd_gpios[] = { +	{ GPIO_NR_PALMLD_IDE_PWEN,	GPIOF_INIT_HIGH,	"HDD Power" }, +	{ GPIO_NR_PALMLD_IDE_RESET,	GPIOF_INIT_LOW,		"HDD Reset" }, +}; +  static struct scsi_host_template palmld_sht = {  	ATA_PIO_SHT(DRV_NAME),  }; @@ -52,28 +57,23 @@ static __devinit int palmld_pata_probe(struct platform_device *pdev)  	/* allocate host */  	host = ata_host_alloc(&pdev->dev, 1); -	if (!host) -		return -ENOMEM; +	if (!host) { +		ret = -ENOMEM; +		goto err1; +	}  	/* remap drive's physical memory address */  	mem = devm_ioremap(&pdev->dev, PALMLD_IDE_PHYS, 0x1000); -	if (!mem) -		return -ENOMEM; +	if (!mem) { +		ret = -ENOMEM; +		goto err1; +	}  	/* request and activate power GPIO, IRQ GPIO */ -	ret = gpio_request(GPIO_NR_PALMLD_IDE_PWEN, "HDD PWR"); +	ret = gpio_request_array(palmld_hdd_gpios, +				ARRAY_SIZE(palmld_hdd_gpios));  	if (ret)  		goto err1; -	ret = gpio_direction_output(GPIO_NR_PALMLD_IDE_PWEN, 1); -	if (ret) -		goto err2; - -	ret = gpio_request(GPIO_NR_PALMLD_IDE_RESET, "HDD RST"); -	if (ret) -		goto err2; -	ret = gpio_direction_output(GPIO_NR_PALMLD_IDE_RESET, 0); -	if (ret) -		goto err3;  	/* reset the drive */  	gpio_set_value(GPIO_NR_PALMLD_IDE_RESET, 0); @@ -96,13 +96,15 @@ static __devinit int palmld_pata_probe(struct platform_device *pdev)  	ata_sff_std_ports(&ap->ioaddr);  	/* activate host */ -	return ata_host_activate(host, 0, NULL, IRQF_TRIGGER_RISING, +	ret = ata_host_activate(host, 0, NULL, IRQF_TRIGGER_RISING,  					&palmld_sht); +	if (ret) +		goto err2; + +	return ret; -err3: -	gpio_free(GPIO_NR_PALMLD_IDE_RESET);  err2: -	gpio_free(GPIO_NR_PALMLD_IDE_PWEN); +	gpio_free_array(palmld_hdd_gpios, ARRAY_SIZE(palmld_hdd_gpios));  err1:  	return ret;  } @@ -116,8 +118,7 @@ static __devexit int palmld_pata_remove(struct platform_device *dev)  	/* power down the HDD */  	gpio_set_value(GPIO_NR_PALMLD_IDE_PWEN, 0); -	gpio_free(GPIO_NR_PALMLD_IDE_RESET); -	gpio_free(GPIO_NR_PALMLD_IDE_PWEN); +	gpio_free_array(palmld_hdd_gpios, ARRAY_SIZE(palmld_hdd_gpios));  	return 0;  } |