X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Farm%2Fmach-pxa%2Fssp.c;fp=arch%2Farm%2Fmach-pxa%2Fssp.c;h=93096befd0173a3ed767f1c48550dcedc0b66fa3;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=1fddfeaa630def3f09dfde30108605b82711b5bd;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c index 1fddfeaa6..93096befd 100644 --- a/arch/arm/mach-pxa/ssp.c +++ b/arch/arm/mach-pxa/ssp.c @@ -40,8 +40,6 @@ #define PXA_SSP_PORTS 3 -#define TIMEOUT 100000 - struct ssp_info_ { int irq; u32 clock; @@ -94,18 +92,13 @@ static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) * The caller is expected to perform the necessary locking. * * Returns: - * %-ETIMEDOUT timeout occurred + * %-ETIMEDOUT timeout occurred (for future) * 0 success */ int ssp_write_word(struct ssp_dev *dev, u32 data) { - int timeout = TIMEOUT; - - while (!(SSSR_P(dev->port) & SSSR_TNF)) { - if (!--timeout) - return -ETIMEDOUT; + while (!(SSSR_P(dev->port) & SSSR_TNF)) cpu_relax(); - } SSDR_P(dev->port) = data; @@ -124,21 +117,15 @@ int ssp_write_word(struct ssp_dev *dev, u32 data) * The caller is expected to perform the necessary locking. * * Returns: - * %-ETIMEDOUT timeout occurred + * %-ETIMEDOUT timeout occurred (for future) * 32-bit data success */ -int ssp_read_word(struct ssp_dev *dev, u32 *data) +int ssp_read_word(struct ssp_dev *dev) { - int timeout = TIMEOUT; - - while (!(SSSR_P(dev->port) & SSSR_RNE)) { - if (!--timeout) - return -ETIMEDOUT; + while (!(SSSR_P(dev->port) & SSSR_RNE)) cpu_relax(); - } - *data = SSDR_P(dev->port); - return 0; + return SSDR_P(dev->port); } /** @@ -149,21 +136,13 @@ int ssp_read_word(struct ssp_dev *dev, u32 *data) * * The caller is expected to perform the necessary locking. */ -int ssp_flush(struct ssp_dev *dev) +void ssp_flush(struct ssp_dev *dev) { - int timeout = TIMEOUT * 2; - do { while (SSSR_P(dev->port) & SSSR_RNE) { - if (!--timeout) - return -ETIMEDOUT; (void) SSDR_P(dev->port); } - if (!--timeout) - return -ETIMEDOUT; } while (SSSR_P(dev->port) & SSSR_BSY); - - return 0; } /**