Lines Matching refs:occ
40 struct occ { struct
49 #define to_occ(x) container_of((x), struct occ, mdev) argument
60 struct occ *occ; member
75 struct occ *occ = to_occ(mdev); in occ_open() local
86 client->occ = occ; in occ_open()
181 rc = fsi_occ_submit(client->occ->dev, cmd, data_length + 6, cmd, in occ_write()
238 static int occ_getsram(struct occ *occ, u32 address, void *data, ssize_t len) in occ_getsram() argument
260 rc = sbefifo_submit(occ->sbefifo, cmd, 5, resp, &resp_len); in occ_getsram()
264 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_GET_OCC_SRAM, in occ_getsram()
271 dev_err(occ->dev, "SRAM read expected %d bytes got %zd\n", in occ_getsram()
281 dev_err(occ->dev, "SRAM read returned failure status: %08x\n", in occ_getsram()
290 static int occ_putsram(struct occ *occ, u32 address, const void *data, in occ_putsram() argument
321 rc = sbefifo_submit(occ->sbefifo, buf, cmd_len, buf, &resp_len); in occ_putsram()
325 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_PUT_OCC_SRAM, in occ_putsram()
331 dev_err(occ->dev, "SRAM write response length invalid: %zd\n", in occ_putsram()
337 dev_err(occ->dev, in occ_putsram()
347 dev_err(occ->dev, "SRAM write returned failure status: %08x\n", in occ_putsram()
356 static int occ_trigger_attn(struct occ *occ) in occ_trigger_attn() argument
373 rc = sbefifo_submit(occ->sbefifo, buf, 7, buf, &resp_len); in occ_trigger_attn()
377 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_PUT_OCC_SRAM, in occ_trigger_attn()
383 dev_err(occ->dev, "SRAM attn response length invalid: %zd\n", in occ_trigger_attn()
389 dev_err(occ->dev, in occ_trigger_attn()
399 dev_err(occ->dev, "SRAM attn returned failure status: %08x\n", in occ_trigger_attn()
413 struct occ *occ = dev_get_drvdata(dev); in fsi_occ_submit() local
420 if (!occ) in fsi_occ_submit()
428 mutex_lock(&occ->occ_lock); in fsi_occ_submit()
432 rc = occ_putsram(occ, OCC_SRAM_CMD_ADDR, request, req_len); in fsi_occ_submit()
436 rc = occ_trigger_attn(occ); in fsi_occ_submit()
443 rc = occ_getsram(occ, OCC_SRAM_RSP_ADDR, resp, 8); in fsi_occ_submit()
453 dev_err(occ->dev, "resp timeout status=%02x " in fsi_occ_submit()
480 rc = occ_getsram(occ, OCC_SRAM_RSP_ADDR + 8, in fsi_occ_submit()
490 mutex_unlock(&occ->occ_lock); in fsi_occ_submit()
509 struct occ *occ; in occ_probe() local
517 occ = devm_kzalloc(dev, sizeof(*occ), GFP_KERNEL); in occ_probe()
518 if (!occ) in occ_probe()
521 occ->dev = dev; in occ_probe()
522 occ->sbefifo = dev->parent; in occ_probe()
523 mutex_init(&occ->occ_lock); in occ_probe()
529 occ->idx = ida_simple_get(&occ_ida, reg, reg + 1, in occ_probe()
531 if (occ->idx < 0) in occ_probe()
532 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, in occ_probe()
535 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, in occ_probe()
539 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, GFP_KERNEL); in occ_probe()
542 platform_set_drvdata(pdev, occ); in occ_probe()
544 snprintf(occ->name, sizeof(occ->name), "occ%d", occ->idx); in occ_probe()
545 occ->mdev.fops = &occ_fops; in occ_probe()
546 occ->mdev.minor = MISC_DYNAMIC_MINOR; in occ_probe()
547 occ->mdev.name = occ->name; in occ_probe()
548 occ->mdev.parent = dev; in occ_probe()
550 rc = misc_register(&occ->mdev); in occ_probe()
553 ida_simple_remove(&occ_ida, occ->idx); in occ_probe()
557 hwmon_dev_info.id = occ->idx; in occ_probe()
567 struct occ *occ = platform_get_drvdata(pdev); in occ_remove() local
569 misc_deregister(&occ->mdev); in occ_remove()
573 ida_simple_remove(&occ_ida, occ->idx); in occ_remove()