Changeset 29706


Ignore:
Timestamp:
2012-01-11T10:14:13+01:00 (5 years ago)
Author:
juhosg
Message:

ar71xx: ar71xx_spi: save and restore regs from probe/remove

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/drivers/spi/ar71xx_spi.c

    r23975 r29706  
    9595} 
    9696 
    97 static void ar71xx_spi_setup_regs(struct spi_device *spi) 
    98 { 
    99         struct ar71xx_spi *sp = spidev_to_sp(spi); 
    100  
     97static void ar71xx_spi_setup_regs(struct ar71xx_spi *sp) 
     98{ 
    10199        /* enable GPIO mode */ 
    102100        ar71xx_spi_wr(sp, SPI_REG_FS, SPI_FS_GPIO); 
     
    109107} 
    110108 
    111 static void ar71xx_spi_restore_regs(struct spi_device *spi) 
    112 { 
    113         struct ar71xx_spi *sp = spidev_to_sp(spi); 
    114  
     109static void ar71xx_spi_restore_regs(struct ar71xx_spi *sp) 
     110{ 
    115111        /* restore CTRL register */ 
    116112        ar71xx_spi_wr(sp, SPI_REG_CTRL, sp->reg_ctrl); 
     
    121117static int ar71xx_spi_setup(struct spi_device *spi) 
    122118{ 
    123         int status; 
    124  
    125119        if (spi->bits_per_word > 32) 
    126120                return -EINVAL; 
    127121 
    128         if (!spi->controller_state) 
    129                 ar71xx_spi_setup_regs(spi); 
    130  
    131         status = spi_bitbang_setup(spi); 
    132         if (status && !spi->controller_state) 
    133                 ar71xx_spi_restore_regs(spi); 
    134  
    135         return status; 
     122        return spi_bitbang_setup(spi); 
    136123} 
    137124 
    138125static void ar71xx_spi_cleanup(struct spi_device *spi) 
    139126{ 
    140         ar71xx_spi_restore_regs(spi); 
    141127        spi_bitbang_cleanup(spi); 
    142128} 
     
    230216        } 
    231217 
     218        ar71xx_spi_setup_regs(sp); 
     219 
    232220        ret = spi_bitbang_start(&sp->bitbang); 
    233221        if (!ret) 
    234222                return 0; 
    235223 
     224        ar71xx_spi_restore_regs(sp); 
    236225        iounmap(sp->base); 
    237226err1: 
     
    247236 
    248237        spi_bitbang_stop(&sp->bitbang); 
     238        ar71xx_spi_restore_regs(sp); 
    249239        iounmap(sp->base); 
    250240        platform_set_drvdata(pdev, NULL); 
Note: See TracChangeset for help on using the changeset viewer.