• Home
  • Raw
  • Download

Lines Matching refs:occ

48 struct occ {  struct
59 #define to_occ(x) container_of((x), struct occ, mdev) argument
70 struct occ *occ; member
85 struct occ *occ = to_occ(mdev); in occ_open() local
96 client->occ = occ; in occ_open()
180 rc = fsi_occ_submit(client->occ->dev, cmd, data_length + 6, cmd, in occ_write()
216 static int occ_verify_checksum(struct occ *occ, struct occ_response *resp, in occ_verify_checksum() argument
233 dev_err(occ->dev, "Bad checksum: %04x!=%04x\n", checksum, in occ_verify_checksum()
241 static int occ_getsram(struct occ *occ, u32 offset, void *data, ssize_t len) in occ_getsram() argument
252 switch (occ->version) { in occ_getsram()
277 rc = sbefifo_submit(occ->sbefifo, cmd, cmd_len, resp, &resp_len); in occ_getsram()
281 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_GET_OCC_SRAM, in occ_getsram()
288 dev_err(occ->dev, "SRAM read expected %d bytes got %zd\n", in occ_getsram()
298 dev_err(occ->dev, "SRAM read returned failure status: %08x\n", in occ_getsram()
307 static int occ_putsram(struct occ *occ, const void *data, ssize_t len, in occ_putsram() argument
316 cmd_len = (occ->version == occ_p10) ? 6 : 5; in occ_putsram()
336 switch (occ->version) { in occ_putsram()
362 rc = sbefifo_submit(occ->sbefifo, buf, cmd_len, buf, &resp_len); in occ_putsram()
366 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_PUT_OCC_SRAM, in occ_putsram()
372 dev_err(occ->dev, "SRAM write response length invalid: %zd\n", in occ_putsram()
378 dev_err(occ->dev, in occ_putsram()
388 dev_err(occ->dev, "SRAM write returned failure status: %08x\n", in occ_putsram()
397 static int occ_trigger_attn(struct occ *occ) in occ_trigger_attn() argument
406 switch (occ->version) { in occ_trigger_attn()
428 rc = sbefifo_submit(occ->sbefifo, buf, cmd_len, buf, &resp_len); in occ_trigger_attn()
432 rc = sbefifo_parse_status(occ->sbefifo, SBEFIFO_CMD_PUT_OCC_SRAM, in occ_trigger_attn()
438 dev_err(occ->dev, "SRAM attn response length invalid: %zd\n", in occ_trigger_attn()
444 dev_err(occ->dev, in occ_trigger_attn()
454 dev_err(occ->dev, "SRAM attn returned failure status: %08x\n", in occ_trigger_attn()
468 struct occ *occ = dev_get_drvdata(dev); in fsi_occ_submit() local
478 if (!occ) in fsi_occ_submit()
490 mutex_lock(&occ->occ_lock); in fsi_occ_submit()
500 seq_no = occ->sequence_number++; in fsi_occ_submit()
501 if (!occ->sequence_number) in fsi_occ_submit()
502 occ->sequence_number = 1; in fsi_occ_submit()
505 rc = occ_putsram(occ, request, req_len, seq_no, checksum); in fsi_occ_submit()
509 rc = occ_trigger_attn(occ); in fsi_occ_submit()
516 rc = occ_getsram(occ, 0, resp, 8); in fsi_occ_submit()
526 dev_err(occ->dev, "resp timeout status=%02x " in fsi_occ_submit()
553 rc = occ_getsram(occ, 8, &resp->data[3], resp_data_length - 1); in fsi_occ_submit()
559 rc = occ_verify_checksum(occ, resp, resp_data_length); in fsi_occ_submit()
562 mutex_unlock(&occ->occ_lock); in fsi_occ_submit()
581 struct occ *occ; in occ_probe() local
589 occ = devm_kzalloc(dev, sizeof(*occ), GFP_KERNEL); in occ_probe()
590 if (!occ) in occ_probe()
593 occ->version = (uintptr_t)of_device_get_match_data(dev); in occ_probe()
594 occ->dev = dev; in occ_probe()
595 occ->sbefifo = dev->parent; in occ_probe()
596 occ->sequence_number = 1; in occ_probe()
597 mutex_init(&occ->occ_lock); in occ_probe()
603 occ->idx = ida_simple_get(&occ_ida, reg, reg + 1, in occ_probe()
605 if (occ->idx < 0) in occ_probe()
606 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, in occ_probe()
609 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, in occ_probe()
613 occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, GFP_KERNEL); in occ_probe()
616 platform_set_drvdata(pdev, occ); in occ_probe()
618 snprintf(occ->name, sizeof(occ->name), "occ%d", occ->idx); in occ_probe()
619 occ->mdev.fops = &occ_fops; in occ_probe()
620 occ->mdev.minor = MISC_DYNAMIC_MINOR; in occ_probe()
621 occ->mdev.name = occ->name; in occ_probe()
622 occ->mdev.parent = dev; in occ_probe()
624 rc = misc_register(&occ->mdev); in occ_probe()
627 ida_simple_remove(&occ_ida, occ->idx); in occ_probe()
631 hwmon_dev_info.id = occ->idx; in occ_probe()
641 struct occ *occ = platform_get_drvdata(pdev); in occ_remove() local
643 misc_deregister(&occ->mdev); in occ_remove()
647 ida_simple_remove(&occ_ida, occ->idx); in occ_remove()