diff options
Diffstat (limited to 'drivers/spi/spi-pl022.c')
| -rw-r--r-- | drivers/spi/spi-pl022.c | 23 | 
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c index 400ae2121a2..aab518ec2bb 100644 --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c @@ -489,6 +489,11 @@ static void giveback(struct pl022 *pl022)  	pl022->cur_transfer = NULL;  	pl022->cur_chip = NULL;  	spi_finalize_current_message(pl022->master); + +	/* disable the SPI/SSP operation */ +	writew((readw(SSP_CR1(pl022->virtbase)) & +		(~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase)); +  }  /** @@ -2048,6 +2053,9 @@ pl022_probe(struct amba_device *adev, const struct amba_id *id)  	printk(KERN_INFO "pl022: mapped registers from 0x%08x to %p\n",  	       adev->res.start, pl022->virtbase); +	pm_runtime_enable(dev); +	pm_runtime_resume(dev); +  	pl022->clk = clk_get(&adev->dev, NULL);  	if (IS_ERR(pl022->clk)) {  		status = PTR_ERR(pl022->clk); @@ -2158,6 +2166,7 @@ pl022_remove(struct amba_device *adev)  	clk_disable(pl022->clk);  	clk_unprepare(pl022->clk);  	clk_put(pl022->clk); +	pm_runtime_disable(&adev->dev);  	iounmap(pl022->virtbase);  	amba_release_regions(adev);  	tasklet_disable(&pl022->pump_transfers); @@ -2251,15 +2260,6 @@ static struct vendor_data vendor_st_pl023 = {  	.loopback = false,  }; -static struct vendor_data vendor_db5500_pl023 = { -	.fifodepth = 32, -	.max_bpw = 32, -	.unidir = false, -	.extended_cr = true, -	.pl023 = true, -	.loopback = true, -}; -  static struct amba_id pl022_ids[] = {  	{  		/* @@ -2291,11 +2291,6 @@ static struct amba_id pl022_ids[] = {  		.mask	= 0xffffffff,  		.data	= &vendor_st_pl023,  	}, -	{ -		.id	= 0x10080023, -		.mask	= 0xffffffff, -		.data	= &vendor_db5500_pl023, -	},  	{ 0, 0 },  };  |