Lines Matching refs:bridge
3 * Fake VME bridge support.
5 * This drive provides a fake VME bridge chip, this enables debugging of the
96 struct fake_driver *bridge;
99 bridge = fake_bridge->driver_priv;
101 vme_irq_handler(fake_bridge, bridge->int_level, bridge->int_statid);
130 struct fake_driver *bridge;
132 bridge = fake_bridge->driver_priv;
134 mutex_lock(&bridge->vme_int);
136 bridge->int_level = level;
138 bridge->int_statid = statid;
144 tasklet_schedule(&bridge->int_tasklet);
146 mutex_unlock(&bridge->vme_int);
161 struct fake_driver *bridge;
164 bridge = fake_bridge->driver_priv;
208 bridge->slaves[i].enabled = enabled;
209 bridge->slaves[i].vme_base = vme_base;
210 bridge->slaves[i].size = size;
211 bridge->slaves[i].buf_base = fake_pci_to_ptr(buf_base);
212 bridge->slaves[i].aspace = aspace;
213 bridge->slaves[i].cycle = cycle;
228 struct fake_driver *bridge;
230 bridge = image->parent->driver_priv;
236 *enabled = bridge->slaves[i].enabled;
237 *vme_base = bridge->slaves[i].vme_base;
238 *size = bridge->slaves[i].size;
239 *buf_base = fake_ptr_to_pci(bridge->slaves[i].buf_base);
240 *aspace = bridge->slaves[i].aspace;
241 *cycle = bridge->slaves[i].cycle;
258 struct fake_driver *bridge;
262 bridge = fake_bridge->driver_priv;
317 bridge->masters[i].enabled = enabled;
318 bridge->masters[i].vme_base = vme_base;
319 bridge->masters[i].size = size;
320 bridge->masters[i].aspace = aspace;
321 bridge->masters[i].cycle = cycle;
322 bridge->masters[i].dwidth = dwidth;
343 struct fake_driver *bridge;
345 bridge = image->parent->driver_priv;
349 *enabled = bridge->masters[i].enabled;
350 *vme_base = bridge->masters[i].vme_base;
351 *size = bridge->masters[i].size;
352 *aspace = bridge->masters[i].aspace;
353 *cycle = bridge->masters[i].cycle;
354 *dwidth = bridge->masters[i].dwidth;
377 static void fake_lm_check(struct fake_driver *bridge, unsigned long long addr,
388 fake_bridge = bridge->parent;
395 if (bridge->lm_enabled == 0)
398 lm_base = bridge->lm_base;
399 lm_aspace = bridge->lm_aspace;
400 lm_cycle = bridge->lm_cycle;
408 if (bridge->lm_callback[i])
409 bridge->lm_callback[i](
410 bridge->lm_data[i]);
417 static noinline_for_stack u8 fake_vmeread8(struct fake_driver *bridge,
427 start = bridge->slaves[i].vme_base;
428 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
430 if (aspace != bridge->slaves[i].aspace)
433 if (cycle != bridge->slaves[i].cycle)
437 offset = addr - bridge->slaves[i].vme_base;
438 loc = (u8 *)(bridge->slaves[i].buf_base + offset);
445 fake_lm_check(bridge, addr, aspace, cycle);
450 static noinline_for_stack u16 fake_vmeread16(struct fake_driver *bridge,
460 if (aspace != bridge->slaves[i].aspace)
463 if (cycle != bridge->slaves[i].cycle)
466 start = bridge->slaves[i].vme_base;
467 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
470 offset = addr - bridge->slaves[i].vme_base;
471 loc = (u16 *)(bridge->slaves[i].buf_base + offset);
478 fake_lm_check(bridge, addr, aspace, cycle);
483 static noinline_for_stack u32 fake_vmeread32(struct fake_driver *bridge,
493 if (aspace != bridge->slaves[i].aspace)
496 if (cycle != bridge->slaves[i].cycle)
499 start = bridge->slaves[i].vme_base;
500 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
503 offset = addr - bridge->slaves[i].vme_base;
504 loc = (u32 *)(bridge->slaves[i].buf_base + offset);
511 fake_lm_check(bridge, addr, aspace, cycle);
544 * On the other hand, the bridge itself assures that the maximum data
615 static noinline_for_stack void fake_vmewrite8(struct fake_driver *bridge,
624 if (aspace != bridge->slaves[i].aspace)
627 if (cycle != bridge->slaves[i].cycle)
630 start = bridge->slaves[i].vme_base;
631 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
634 offset = addr - bridge->slaves[i].vme_base;
635 loc = (u8 *)((void *)bridge->slaves[i].buf_base + offset);
642 fake_lm_check(bridge, addr, aspace, cycle);
646 static noinline_for_stack void fake_vmewrite16(struct fake_driver *bridge,
655 if (aspace != bridge->slaves[i].aspace)
658 if (cycle != bridge->slaves[i].cycle)
661 start = bridge->slaves[i].vme_base;
662 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
665 offset = addr - bridge->slaves[i].vme_base;
666 loc = (u16 *)((void *)bridge->slaves[i].buf_base + offset);
673 fake_lm_check(bridge, addr, aspace, cycle);
677 static noinline_for_stack void fake_vmewrite32(struct fake_driver *bridge,
686 if (aspace != bridge->slaves[i].aspace)
689 if (cycle != bridge->slaves[i].cycle)
692 start = bridge->slaves[i].vme_base;
693 end = bridge->slaves[i].vme_base + bridge->slaves[i].size;
696 offset = addr - bridge->slaves[i].vme_base;
697 loc = (u32 *)((void *)bridge->slaves[i].buf_base + offset);
704 fake_lm_check(bridge, addr, aspace, cycle);
719 struct fake_driver *bridge;
723 bridge = fake_bridge->driver_priv;
727 addr = bridge->masters[i].vme_base + offset;
728 aspace = bridge->masters[i].aspace;
729 cycle = bridge->masters[i].cycle;
730 dwidth = bridge->masters[i].dwidth;
738 fake_vmewrite8(bridge, (u8 *)buf, addr, aspace, cycle);
747 fake_vmewrite8(bridge, (u8 *)(buf + done),
752 fake_vmewrite16(bridge, (u16 *)(buf + done),
762 fake_vmewrite32(bridge, (u32 *)(buf + done),
769 fake_vmewrite16(bridge, (u16 *)(buf + done),
776 fake_vmewrite8(bridge, (u8 *)(buf + done), addr + done,
785 fake_vmewrite16(bridge, (u16 *)(buf + done),
792 fake_vmewrite8(bridge, (u8 *)(buf + done), addr + done, aspace,
817 struct fake_driver *bridge;
819 bridge = image->parent->driver_priv;
824 base = bridge->masters[i].vme_base;
825 aspace = bridge->masters[i].aspace;
826 cycle = bridge->masters[i].cycle;
832 tmp = fake_vmeread32(bridge, base + offset, aspace, cycle);
840 fake_vmewrite32(bridge, &tmp, base + offset, aspace, cycle);
861 struct fake_driver *bridge;
865 bridge = fake_bridge->driver_priv;
871 if (bridge->lm_callback[i]) {
890 bridge->lm_base = lm_base;
891 bridge->lm_aspace = aspace;
892 bridge->lm_cycle = cycle;
905 struct fake_driver *bridge;
907 bridge = lm->parent->driver_priv;
911 *lm_base = bridge->lm_base;
912 *aspace = bridge->lm_aspace;
913 *cycle = bridge->lm_cycle;
917 return bridge->lm_enabled;
929 struct fake_driver *bridge;
933 bridge = fake_bridge->driver_priv;
938 if (bridge->lm_cycle == 0) {
945 if (bridge->lm_callback[monitor]) {
952 bridge->lm_callback[monitor] = callback;
953 bridge->lm_data[monitor] = data;
956 bridge->lm_enabled = 1;
970 struct fake_driver *bridge;
972 bridge = lm->parent->driver_priv;
977 bridge->lm_callback[monitor] = NULL;
978 bridge->lm_data[monitor] = NULL;
983 if (bridge->lm_callback[i])
988 bridge->lm_enabled = 0;
1037 struct fake_driver *bridge;
1039 bridge = fake_bridge->driver_priv;
1042 bridge->crcsr_kernel = kzalloc(VME_CRCSR_BUF_SIZE, GFP_KERNEL);
1043 bridge->crcsr_bus = fake_ptr_to_pci(bridge->crcsr_kernel);
1044 if (!bridge->crcsr_kernel)
1056 struct fake_driver *bridge;
1058 bridge = fake_bridge->driver_priv;
1060 kfree(bridge->crcsr_kernel);
1079 /* If we want to support more than one bridge at some point, we need to
1252 struct fake_driver *bridge;
1256 bridge = fake_bridge->driver_priv;
1264 bridge->masters[i].enabled = 0;
1267 bridge->slaves[i].enabled = 0;
1272 bridge->lm_enabled = 0;
1303 MODULE_DESCRIPTION("Fake VME bridge driver");