Lines Matching refs:gdev
103 static u32 gisb_read(struct brcmstb_gisb_arb_device *gdev, int reg) in gisb_read() argument
105 int offset = gdev->gisb_offsets[reg]; in gisb_read()
111 return ioread32(gdev->base + offset); in gisb_read()
114 static void gisb_write(struct brcmstb_gisb_arb_device *gdev, u32 val, int reg) in gisb_write() argument
116 int offset = gdev->gisb_offsets[reg]; in gisb_write()
120 iowrite32(val, gdev->base + reg); in gisb_write()
128 struct brcmstb_gisb_arb_device *gdev = platform_get_drvdata(pdev); in gisb_arb_get_timeout() local
131 mutex_lock(&gdev->lock); in gisb_arb_get_timeout()
132 timeout = gisb_read(gdev, ARB_TIMER); in gisb_arb_get_timeout()
133 mutex_unlock(&gdev->lock); in gisb_arb_get_timeout()
143 struct brcmstb_gisb_arb_device *gdev = platform_get_drvdata(pdev); in gisb_arb_set_timeout() local
153 mutex_lock(&gdev->lock); in gisb_arb_set_timeout()
154 gisb_write(gdev, val, ARB_TIMER); in gisb_arb_set_timeout()
155 mutex_unlock(&gdev->lock); in gisb_arb_set_timeout()
161 brcmstb_gisb_master_to_str(struct brcmstb_gisb_arb_device *gdev, in brcmstb_gisb_master_to_str() argument
164 u32 mask = gdev->valid_mask & masters; in brcmstb_gisb_master_to_str()
169 return gdev->master_names[ffs(mask) - 1]; in brcmstb_gisb_master_to_str()
172 static int brcmstb_gisb_arb_decode_addr(struct brcmstb_gisb_arb_device *gdev, in brcmstb_gisb_arb_decode_addr() argument
181 cap_status = gisb_read(gdev, ARB_ERR_CAP_STATUS); in brcmstb_gisb_arb_decode_addr()
188 arb_addr = gisb_read(gdev, ARB_ERR_CAP_ADDR) & 0xffffffff; in brcmstb_gisb_arb_decode_addr()
190 arb_addr |= (u64)gisb_read(gdev, ARB_ERR_CAP_HI_ADDR) << 32; in brcmstb_gisb_arb_decode_addr()
192 master = gisb_read(gdev, ARB_ERR_CAP_MASTER); in brcmstb_gisb_arb_decode_addr()
194 m_name = brcmstb_gisb_master_to_str(gdev, master); in brcmstb_gisb_arb_decode_addr()
207 gisb_write(gdev, ARB_ERR_CAP_CLEAR, ARB_ERR_CAP_CLR); in brcmstb_gisb_arb_decode_addr()
217 struct brcmstb_gisb_arb_device *gdev; in brcmstb_bus_error_handler() local
220 list_for_each_entry(gdev, &brcmstb_gisb_arb_device_list, next) in brcmstb_bus_error_handler()
221 ret |= brcmstb_gisb_arb_decode_addr(gdev, "bus error"); in brcmstb_bus_error_handler()
271 struct brcmstb_gisb_arb_device *gdev; in brcmstb_gisb_arb_probe() local
282 gdev = devm_kzalloc(&pdev->dev, sizeof(*gdev), GFP_KERNEL); in brcmstb_gisb_arb_probe()
283 if (!gdev) in brcmstb_gisb_arb_probe()
286 mutex_init(&gdev->lock); in brcmstb_gisb_arb_probe()
287 INIT_LIST_HEAD(&gdev->next); in brcmstb_gisb_arb_probe()
289 gdev->base = devm_ioremap_resource(&pdev->dev, r); in brcmstb_gisb_arb_probe()
290 if (IS_ERR(gdev->base)) in brcmstb_gisb_arb_probe()
291 return PTR_ERR(gdev->base); in brcmstb_gisb_arb_probe()
298 gdev->gisb_offsets = of_id->data; in brcmstb_gisb_arb_probe()
302 gdev); in brcmstb_gisb_arb_probe()
308 gdev); in brcmstb_gisb_arb_probe()
314 &gdev->valid_mask)) in brcmstb_gisb_arb_probe()
315 gdev->valid_mask = 0xffffffff; in brcmstb_gisb_arb_probe()
322 if (hweight_long(gdev->valid_mask) == num_masters) { in brcmstb_gisb_arb_probe()
323 first = ffs(gdev->valid_mask) - 1; in brcmstb_gisb_arb_probe()
324 last = fls(gdev->valid_mask) - 1; in brcmstb_gisb_arb_probe()
327 if (!(gdev->valid_mask & BIT(i))) in brcmstb_gisb_arb_probe()
332 &gdev->master_names[i]); in brcmstb_gisb_arb_probe()
341 platform_set_drvdata(pdev, gdev); in brcmstb_gisb_arb_probe()
343 list_add_tail(&gdev->next, &brcmstb_gisb_arb_device_list); in brcmstb_gisb_arb_probe()
351 gdev->base, timeout_irq, tea_irq); in brcmstb_gisb_arb_probe()
360 struct brcmstb_gisb_arb_device *gdev = platform_get_drvdata(pdev); in brcmstb_gisb_arb_suspend() local
362 gdev->saved_timeout = gisb_read(gdev, ARB_TIMER); in brcmstb_gisb_arb_suspend()
373 struct brcmstb_gisb_arb_device *gdev = platform_get_drvdata(pdev); in brcmstb_gisb_arb_resume_noirq() local
375 gisb_write(gdev, gdev->saved_timeout, ARB_TIMER); in brcmstb_gisb_arb_resume_noirq()