pcmcia.c (c1f3ee120bb61045b1c0a3ead620d1d65af47130) | pcmcia.c (ffc7689ddae5cbe12bde437ae0f2b386d568b5cd) |
---|---|
1/* 2 * Sonics Silicon Backplane 3 * PCMCIA-Hostbus related functions 4 * 5 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2007 Michael Buesch <mb@bu3sch.de> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. --- 158 unchanged lines hidden (view full) --- 167 err = ssb_pcmcia_switch_segment(bus, need_segment); 168 if (unlikely(err)) 169 return err; 170 } 171 172 return 0; 173} 174 | 1/* 2 * Sonics Silicon Backplane 3 * PCMCIA-Hostbus related functions 4 * 5 * Copyright 2006 Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2007 Michael Buesch <mb@bu3sch.de> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. --- 158 unchanged lines hidden (view full) --- 167 err = ssb_pcmcia_switch_segment(bus, need_segment); 168 if (unlikely(err)) 169 return err; 170 } 171 172 return 0; 173} 174 |
175static u8 ssb_pcmcia_read8(struct ssb_device *dev, u16 offset) 176{ 177 struct ssb_bus *bus = dev->bus; 178 unsigned long flags; 179 int err; 180 u8 value = 0xFF; 181 182 spin_lock_irqsave(&bus->bar_lock, flags); 183 err = select_core_and_segment(dev, &offset); 184 if (likely(!err)) 185 value = readb(bus->mmio + offset); 186 spin_unlock_irqrestore(&bus->bar_lock, flags); 187 188 return value; 189} 190 |
|
175static u16 ssb_pcmcia_read16(struct ssb_device *dev, u16 offset) 176{ 177 struct ssb_bus *bus = dev->bus; 178 unsigned long flags; 179 int err; 180 u16 value = 0xFFFF; 181 182 spin_lock_irqsave(&bus->bar_lock, flags); --- 18 unchanged lines hidden (view full) --- 201 lo = readw(bus->mmio + offset); 202 hi = readw(bus->mmio + offset + 2); 203 } 204 spin_unlock_irqrestore(&bus->bar_lock, flags); 205 206 return (lo | (hi << 16)); 207} 208 | 191static u16 ssb_pcmcia_read16(struct ssb_device *dev, u16 offset) 192{ 193 struct ssb_bus *bus = dev->bus; 194 unsigned long flags; 195 int err; 196 u16 value = 0xFFFF; 197 198 spin_lock_irqsave(&bus->bar_lock, flags); --- 18 unchanged lines hidden (view full) --- 217 lo = readw(bus->mmio + offset); 218 hi = readw(bus->mmio + offset + 2); 219 } 220 spin_unlock_irqrestore(&bus->bar_lock, flags); 221 222 return (lo | (hi << 16)); 223} 224 |
225static void ssb_pcmcia_write8(struct ssb_device *dev, u16 offset, u8 value) 226{ 227 struct ssb_bus *bus = dev->bus; 228 unsigned long flags; 229 int err; 230 231 spin_lock_irqsave(&bus->bar_lock, flags); 232 err = select_core_and_segment(dev, &offset); 233 if (likely(!err)) 234 writeb(value, bus->mmio + offset); 235 mmiowb(); 236 spin_unlock_irqrestore(&bus->bar_lock, flags); 237} 238 |
|
209static void ssb_pcmcia_write16(struct ssb_device *dev, u16 offset, u16 value) 210{ 211 struct ssb_bus *bus = dev->bus; 212 unsigned long flags; 213 int err; 214 215 spin_lock_irqsave(&bus->bar_lock, flags); 216 err = select_core_and_segment(dev, &offset); --- 16 unchanged lines hidden (view full) --- 233 writew(((value & 0xFFFF0000) >> 16), bus->mmio + offset + 2); 234 } 235 mmiowb(); 236 spin_unlock_irqrestore(&bus->bar_lock, flags); 237} 238 239/* Not "static", as it's used in main.c */ 240const struct ssb_bus_ops ssb_pcmcia_ops = { | 239static void ssb_pcmcia_write16(struct ssb_device *dev, u16 offset, u16 value) 240{ 241 struct ssb_bus *bus = dev->bus; 242 unsigned long flags; 243 int err; 244 245 spin_lock_irqsave(&bus->bar_lock, flags); 246 err = select_core_and_segment(dev, &offset); --- 16 unchanged lines hidden (view full) --- 263 writew(((value & 0xFFFF0000) >> 16), bus->mmio + offset + 2); 264 } 265 mmiowb(); 266 spin_unlock_irqrestore(&bus->bar_lock, flags); 267} 268 269/* Not "static", as it's used in main.c */ 270const struct ssb_bus_ops ssb_pcmcia_ops = { |
271 .read8 = ssb_pcmcia_read8, |
|
241 .read16 = ssb_pcmcia_read16, 242 .read32 = ssb_pcmcia_read32, | 272 .read16 = ssb_pcmcia_read16, 273 .read32 = ssb_pcmcia_read32, |
274 .write8 = ssb_pcmcia_write8, |
|
243 .write16 = ssb_pcmcia_write16, 244 .write32 = ssb_pcmcia_write32, 245}; 246 247#include <linux/etherdevice.h> 248int ssb_pcmcia_get_invariants(struct ssb_bus *bus, 249 struct ssb_init_invariants *iv) 250{ --- 37 unchanged lines hidden --- | 275 .write16 = ssb_pcmcia_write16, 276 .write32 = ssb_pcmcia_write32, 277}; 278 279#include <linux/etherdevice.h> 280int ssb_pcmcia_get_invariants(struct ssb_bus *bus, 281 struct ssb_init_invariants *iv) 282{ --- 37 unchanged lines hidden --- |