Lines Matching defs:gdev
139 static u32 gisb_read(struct brcmstb_gisb_arb_device *gdev, int reg)
141 int offset = gdev->gisb_offsets[reg];
151 if (gdev->big_endian)
152 return ioread32be(gdev->base + offset);
154 return ioread32(gdev->base + offset);
157 static u64 gisb_read_address(struct brcmstb_gisb_arb_device *gdev)
161 value = gisb_read(gdev, ARB_ERR_CAP_ADDR);
162 value |= (u64)gisb_read(gdev, ARB_ERR_CAP_HI_ADDR) << 32;
167 static u64 gisb_read_bp_address(struct brcmstb_gisb_arb_device *gdev)
171 value = gisb_read(gdev, ARB_BP_CAP_ADDR);
172 value |= (u64)gisb_read(gdev, ARB_BP_CAP_HI_ADDR) << 32;
177 static void gisb_write(struct brcmstb_gisb_arb_device *gdev, u32 val, int reg)
179 int offset = gdev->gisb_offsets[reg];
184 if (gdev->big_endian)
185 iowrite32be(val, gdev->base + offset);
187 iowrite32(val, gdev->base + offset);
194 struct brcmstb_gisb_arb_device *gdev = dev_get_drvdata(dev);
197 mutex_lock(&gdev->lock);
198 timeout = gisb_read(gdev, ARB_TIMER);
199 mutex_unlock(&gdev->lock);
208 struct brcmstb_gisb_arb_device *gdev = dev_get_drvdata(dev);
218 mutex_lock(&gdev->lock);
219 gisb_write(gdev, val, ARB_TIMER);
220 mutex_unlock(&gdev->lock);
226 brcmstb_gisb_master_to_str(struct brcmstb_gisb_arb_device *gdev,
229 u32 mask = gdev->valid_mask & masters;
234 return gdev->master_names[ffs(mask) - 1];
237 static int brcmstb_gisb_arb_decode_addr(struct brcmstb_gisb_arb_device *gdev,
246 cap_status = gisb_read(gdev, ARB_ERR_CAP_STATUS);
253 arb_addr = gisb_read_address(gdev);
254 master = gisb_read(gdev, ARB_ERR_CAP_MASTER);
256 m_name = brcmstb_gisb_master_to_str(gdev, master);
269 gisb_write(gdev, ARB_ERR_CAP_CLEAR, ARB_ERR_CAP_CLR);
278 struct brcmstb_gisb_arb_device *gdev;
281 list_for_each_entry(gdev, &brcmstb_gisb_arb_device_list, next) {
282 cap_status = gisb_read(gdev, ARB_ERR_CAP_STATUS);
290 ret |= brcmstb_gisb_arb_decode_addr(gdev, "bus error");
313 struct brcmstb_gisb_arb_device *gdev = dev_id;
320 bp_status = gisb_read(gdev, ARB_BP_CAP_STATUS);
327 arb_addr = gisb_read_bp_address(gdev);
328 master = gisb_read(gdev, ARB_BP_CAP_MASTER);
330 m_name = brcmstb_gisb_master_to_str(gdev, master);
341 gisb_write(gdev, ARB_ERR_CAP_CLEAR, ARB_ERR_CAP_CLR);
363 struct brcmstb_gisb_arb_device *gdev;
370 list_for_each_entry(gdev, &brcmstb_gisb_arb_device_list, next)
371 brcmstb_gisb_arb_decode_addr(gdev, reason);
401 struct brcmstb_gisb_arb_device *gdev;
413 gdev = devm_kzalloc(&pdev->dev, sizeof(*gdev), GFP_KERNEL);
414 if (!gdev)
417 mutex_init(&gdev->lock);
418 INIT_LIST_HEAD(&gdev->next);
420 gdev->base = devm_ioremap_resource(&pdev->dev, r);
421 if (IS_ERR(gdev->base))
422 return PTR_ERR(gdev->base);
429 gdev->gisb_offsets = of_id->data;
430 gdev->big_endian = of_device_is_big_endian(dn);
434 gdev);
440 gdev);
448 gdev);
455 &gdev->valid_mask))
456 gdev->valid_mask = 0xffffffff;
463 if (hweight_long(gdev->valid_mask) == num_masters) {
464 first = ffs(gdev->valid_mask) - 1;
465 last = fls(gdev->valid_mask) - 1;
468 if (!(gdev->valid_mask & BIT(i)))
473 &gdev->master_names[i]);
482 platform_set_drvdata(pdev, gdev);
484 list_add_tail(&gdev->next, &brcmstb_gisb_arb_device_list);
505 struct brcmstb_gisb_arb_device *gdev = dev_get_drvdata(dev);
507 gdev->saved_timeout = gisb_read(gdev, ARB_TIMER);
517 struct brcmstb_gisb_arb_device *gdev = dev_get_drvdata(dev);
519 gisb_write(gdev, gdev->saved_timeout, ARB_TIMER);