Lines Matching refs:x
53 int xc_stop(struct xc *x) in xc_stop() argument
55 writel(RPU_HOLD_PC, x->xmac_base + NETX_XMAC_RPU_HOLD_PC_OFS); in xc_stop()
56 writel(TPU_HOLD_PC, x->xmac_base + NETX_XMAC_TPU_HOLD_PC_OFS); in xc_stop()
57 writel(XPU_HOLD_PC, x->xpec_base + NETX_XPEC_XPU_HOLD_PC_OFS); in xc_stop()
61 int xc_start(struct xc *x) in xc_start() argument
63 writel(0, x->xmac_base + NETX_XMAC_RPU_HOLD_PC_OFS); in xc_start()
64 writel(0, x->xmac_base + NETX_XMAC_TPU_HOLD_PC_OFS); in xc_start()
65 writel(0, x->xpec_base + NETX_XPEC_XPU_HOLD_PC_OFS); in xc_start()
69 int xc_running(struct xc *x) in xc_running() argument
71 return (readl(x->xmac_base + NETX_XMAC_RPU_HOLD_PC_OFS) & RPU_HOLD_PC) in xc_running()
72 || (readl(x->xmac_base + NETX_XMAC_TPU_HOLD_PC_OFS) & TPU_HOLD_PC) in xc_running()
73 || (readl(x->xpec_base + NETX_XPEC_XPU_HOLD_PC_OFS) & XPU_HOLD_PC) ? in xc_running()
77 int xc_reset(struct xc *x) in xc_reset() argument
79 writel(0, x->xpec_base + NETX_XPEC_PC_OFS); in xc_reset()
83 static int xc_check_ptr(struct xc *x, unsigned long adr, unsigned int size) in xc_check_ptr() argument
85 if (adr >= NETX_PA_XMAC(x->no) && in xc_check_ptr()
86 adr + size < NETX_PA_XMAC(x->no) + XMAC_MEM_SIZE) in xc_check_ptr()
89 if (adr >= NETX_PA_XPEC(x->no) && in xc_check_ptr()
90 adr + size < NETX_PA_XPEC(x->no) + XPEC_MEM_SIZE) in xc_check_ptr()
93 dev_err(x->dev, "Illegal pointer in firmware found. aborting\n"); in xc_check_ptr()
98 static int xc_patch(struct xc *x, const void *patch, int count) in xc_patch() argument
107 if (xc_check_ptr(x, adr, 4) < 0) in xc_patch()
115 int xc_request_firmware(struct xc *x) in xc_request_firmware() argument
126 sprintf(name, "xc%d.bin", x->no); in xc_request_firmware()
128 ret = request_firmware(&fw, name, x->dev); in xc_request_firmware()
131 dev_err(x->dev, "request_firmware failed\n"); in xc_request_firmware()
138 dev_err(x->dev, in xc_request_firmware()
143 dev_err(x->dev, "unrecognized firmware magic 0x%08x\n", in xc_request_firmware()
149 x->type = head->type; in xc_request_firmware()
150 x->version = head->version; in xc_request_firmware()
160 if (xc_check_ptr(x, dst, size)) in xc_request_firmware()
167 ret = xc_patch(x, src, size); in xc_request_firmware()
182 struct xc *x = NULL; in request_xc() local
191 x = kmalloc(sizeof (struct xc), GFP_KERNEL); in request_xc()
192 if (!x) in request_xc()
207 x->xpec_base = (void * __iomem)io_p2v(NETX_PA_XPEC(xcno)); in request_xc()
208 x->xmac_base = (void * __iomem)io_p2v(NETX_PA_XMAC(xcno)); in request_xc()
209 x->sram_base = ioremap(SRAM_INTERNAL_PHYS(xcno), SRAM_MEM_SIZE); in request_xc()
210 if (!x->sram_base) in request_xc()
213 x->irq = NETX_IRQ_XPEC(xcno); in request_xc()
215 x->no = xcno; in request_xc()
216 x->dev = dev; in request_xc()
229 kfree(x); in request_xc()
230 x = NULL; in request_xc()
233 return x; in request_xc()
236 void free_xc(struct xc *x) in free_xc() argument
238 int xcno = x->no; in free_xc()
242 iounmap(x->sram_base); in free_xc()
246 xc_in_use &= ~(1 << x->no); in free_xc()
247 kfree(x); in free_xc()