source: trunk/target/linux/brcm47xx/patches-2.6.23/001-ssb-fix-gpio-api.patch @ 10495

Last change on this file since 10495 was 10495, checked in by mb, 8 years ago

ssb: Update the GPIO API

File size: 6.3 KB
  • drivers/ssb/driver_chipcommon.c

    old new static inline void chipco_write32(struct 
    3939        ssb_write32(cc->dev, offset, value); 
    4040} 
    4141 
    42 static inline void chipco_write32_masked(struct ssb_chipcommon *cc, u16 offset, 
    43                                          u32 mask, u32 value) 
     42static inline u32 chipco_write32_masked(struct ssb_chipcommon *cc, u16 offset, 
     43                                        u32 mask, u32 value) 
    4444{ 
    4545        value &= mask; 
    4646        value |= chipco_read32(cc, offset) & ~mask; 
    4747        chipco_write32(cc, offset, value); 
     48 
     49        return value; 
    4850} 
    4951 
    5052void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc, 
    u32 ssb_chipco_gpio_in(struct ssb_chipco 
    355357{ 
    356358        return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask; 
    357359} 
     360EXPORT_SYMBOL(ssb_chipco_gpio_in); 
     361 
     362u32 ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value) 
     363{ 
     364        return chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUT, mask, value); 
     365} 
     366EXPORT_SYMBOL(ssb_chipco_gpio_out); 
     367 
     368u32 ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value) 
     369{ 
     370        return chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUTEN, mask, value); 
     371} 
     372EXPORT_SYMBOL(ssb_chipco_gpio_outen); 
     373 
     374u32 ssb_chipco_gpio_control(struct ssb_chipcommon *cc, u32 mask, u32 value) 
     375{ 
     376        return chipco_write32_masked(cc, SSB_CHIPCO_GPIOCTL, mask, value); 
     377} 
     378EXPORT_SYMBOL(ssb_chipco_gpio_control); 
    358379 
    359 void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value) 
     380u32 ssb_chipco_gpio_intmask(struct ssb_chipcommon *cc, u32 mask, u32 value) 
    360381{ 
    361         chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUT, mask, value); 
     382        return chipco_write32_masked(cc, SSB_CHIPCO_GPIOIRQ, mask, value); 
    362383} 
     384EXPORT_SYMBOL(ssb_chipco_gpio_intmask); 
    363385 
    364 void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value) 
     386u32 ssb_chipco_gpio_polarity(struct ssb_chipcommon *cc, u32 mask, u32 value) 
    365387{ 
    366         chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUTEN, mask, value); 
     388        return chipco_write32_masked(cc, SSB_CHIPCO_GPIOPOL, mask, value); 
    367389} 
     390EXPORT_SYMBOL(ssb_chipco_gpio_polarity); 
    368391 
    369392#ifdef CONFIG_SSB_SERIAL 
    370393int ssb_chipco_serial_init(struct ssb_chipcommon *cc, 
  • drivers/ssb/driver_extif.c

    old new static inline void extif_write32(struct  
    2727        ssb_write32(extif->dev, offset, value); 
    2828} 
    2929 
    30 static inline void extif_write32_masked(struct ssb_extif *extif, u16 offset, 
    31                                         u32 mask, u32 value) 
     30static inline u32 extif_write32_masked(struct ssb_extif *extif, u16 offset, 
     31                                       u32 mask, u32 value) 
    3232{ 
    3333        value &= mask; 
    3434        value |= extif_read32(extif, offset) & ~mask; 
    3535        extif_write32(extif, offset, value); 
     36 
     37        return value; 
    3638} 
    3739 
    3840#ifdef CONFIG_SSB_SERIAL 
    u32 ssb_extif_gpio_in(struct ssb_extif * 
    114116{ 
    115117        return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask; 
    116118} 
     119EXPORT_SYMBOL(ssb_extif_gpio_in); 
    117120 
    118 void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value) 
     121u32 ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value) 
    119122{ 
    120123        return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUT(0), 
    121124                                   mask, value); 
    122125} 
     126EXPORT_SYMBOL(ssb_extif_gpio_out); 
    123127 
    124 void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value) 
     128u32 ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value) 
    125129{ 
    126130        return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUTEN(0), 
    127131                                   mask, value); 
    128132} 
     133EXPORT_SYMBOL(ssb_extif_gpio_outen); 
     134 
     135u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask, u32 value) 
     136{ 
     137        return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTPOL, mask, value); 
     138} 
     139EXPORT_SYMBOL(ssb_extif_gpio_polarity); 
    129140 
     141u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask, u32 value) 
     142{ 
     143        return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value); 
     144} 
     145EXPORT_SYMBOL(ssb_extif_gpio_intmask); 
  • include/linux/ssb/ssb_driver_chipcommon.h

    old new extern void ssb_chipco_set_clockmode(str 
    382382extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, 
    383383                                          u32 ticks); 
    384384 
     385/* Chipcommon GPIO pin access. */ 
    385386u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask); 
    386  
    387 void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value); 
    388  
    389 void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value); 
     387u32 ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value); 
     388u32 ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value); 
     389u32 ssb_chipco_gpio_control(struct ssb_chipcommon *cc, u32 mask, u32 value); 
     390u32 ssb_chipco_gpio_intmask(struct ssb_chipcommon *cc, u32 mask, u32 value); 
     391u32 ssb_chipco_gpio_polarity(struct ssb_chipcommon *cc, u32 mask, u32 value); 
    390392 
    391393#ifdef CONFIG_SSB_SERIAL 
    392394extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, 
  • include/linux/ssb/ssb_driver_extif.h

    old new extern void ssb_extif_get_clockcontrol(s 
    171171extern void ssb_extif_timing_init(struct ssb_extif *extif, 
    172172                                  unsigned long ns); 
    173173 
     174/* Extif GPIO pin access */ 
    174175u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask); 
    175  
    176 void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value); 
    177  
    178 void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value); 
     176u32 ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value); 
     177u32 ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value); 
     178u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask, u32 value); 
     179u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask, u32 value); 
    179180 
    180181#ifdef CONFIG_SSB_SERIAL 
    181182extern int ssb_extif_serial_init(struct ssb_extif *extif, 
Note: See TracBrowser for help on using the repository browser.