Lines Matching +full:on +full:- +full:die
1 // SPDX-License-Identifier: GPL-2.0+
3 * The Huawei Cache Coherence System (HCCS) is a multi-chip interconnection
10 * - Retrieve the following information about each port:
11 * - port type
12 * - lane mode
13 * - enable
14 * - current lane mode
15 * - link finite state machine
16 * - lane mask
17 * - CRC error count
19 * - Retrieve the following information about all the ports on the chip or
20 * the die:
21 * - if all enabled ports are in linked
22 * - if all linked ports are in full lane
23 * - CRC error count sum
72 if (ares->type != ACPI_RESOURCE_TYPE_GENERIC_REGISTER) in hccs_get_register_cb()
75 reg = &ares->data.generic_reg; in hccs_get_register_cb()
76 if (reg->space_id != ACPI_ADR_SPACE_PLATFORM_COMM) { in hccs_get_register_cb()
77 dev_err(ctx->dev, "Bad register resource.\n"); in hccs_get_register_cb()
78 ctx->err = -EINVAL; in hccs_get_register_cb()
81 ctx->chan_id = reg->access_size; in hccs_get_register_cb()
88 acpi_handle handle = ACPI_HANDLE(hdev->dev); in hccs_get_pcc_chan_id()
93 return -ENODEV; in hccs_get_pcc_chan_id()
95 ctx.dev = hdev->dev; in hccs_get_pcc_chan_id()
100 hdev->chan_id = ctx.chan_id; in hccs_get_pcc_chan_id()
117 struct hccs_mbox_client_info *cl_info = &hdev->cl_info; in hccs_unregister_pcc_channel()
119 if (cl_info->pcc_comm_addr) in hccs_unregister_pcc_channel()
120 iounmap(cl_info->pcc_comm_addr); in hccs_unregister_pcc_channel()
121 pcc_mbox_free_channel(hdev->cl_info.pcc_chan); in hccs_unregister_pcc_channel()
126 struct hccs_mbox_client_info *cl_info = &hdev->cl_info; in hccs_register_pcc_channel()
127 struct mbox_client *cl = &cl_info->client; in hccs_register_pcc_channel()
129 struct device *dev = hdev->dev; in hccs_register_pcc_channel()
132 cl->dev = dev; in hccs_register_pcc_channel()
133 cl->tx_block = false; in hccs_register_pcc_channel()
134 cl->knows_txdone = true; in hccs_register_pcc_channel()
135 cl->tx_done = hccs_chan_tx_done; in hccs_register_pcc_channel()
136 pcc_chan = pcc_mbox_request_channel(cl, hdev->chan_id); in hccs_register_pcc_channel()
139 rc = -ENODEV; in hccs_register_pcc_channel()
142 cl_info->pcc_chan = pcc_chan; in hccs_register_pcc_channel()
143 cl_info->mbox_chan = pcc_chan->mchan; in hccs_register_pcc_channel()
146 * pcc_chan->latency is just a nominal value. In reality the remote in hccs_register_pcc_channel()
148 * of wait on top of nominal. in hccs_register_pcc_channel()
150 cl_info->deadline_us = in hccs_register_pcc_channel()
151 HCCS_PCC_CMD_WAIT_RETRIES_NUM * pcc_chan->latency; in hccs_register_pcc_channel()
152 if (cl_info->mbox_chan->mbox->txdone_irq) { in hccs_register_pcc_channel()
154 rc = -EINVAL; in hccs_register_pcc_channel()
158 if (pcc_chan->shmem_base_addr) { in hccs_register_pcc_channel()
159 cl_info->pcc_comm_addr = ioremap(pcc_chan->shmem_base_addr, in hccs_register_pcc_channel()
160 pcc_chan->shmem_size); in hccs_register_pcc_channel()
161 if (!cl_info->pcc_comm_addr) { in hccs_register_pcc_channel()
162 dev_err(dev, "Failed to ioremap PCC communication region for channel-%d.\n", in hccs_register_pcc_channel()
163 hdev->chan_id); in hccs_register_pcc_channel()
164 rc = -ENOMEM; in hccs_register_pcc_channel()
172 pcc_mbox_free_channel(cl_info->pcc_chan); in hccs_register_pcc_channel()
179 struct hccs_mbox_client_info *cl_info = &hdev->cl_info; in hccs_check_chan_cmd_complete()
181 cl_info->pcc_comm_addr; in hccs_check_chan_cmd_complete()
189 ret = readw_poll_timeout(&comm_base->status, status, in hccs_check_chan_cmd_complete()
192 cl_info->deadline_us); in hccs_check_chan_cmd_complete()
194 dev_err(hdev->dev, "poll PCC status failed, ret = %d.\n", ret); in hccs_check_chan_cmd_complete()
202 struct hccs_mbox_client_info *cl_info = &hdev->cl_info; in hccs_pcc_cmd_send()
203 void __iomem *comm_space = cl_info->pcc_comm_addr + in hccs_pcc_cmd_send()
211 tmp.signature = HCCS_PCC_SIGNATURE_MASK | hdev->chan_id; in hccs_pcc_cmd_send()
216 memcpy_toio(cl_info->pcc_comm_addr, (void *)&tmp, in hccs_pcc_cmd_send()
220 comm_space_size = HCCS_PCC_SHARE_MEM_BYTES - in hccs_pcc_cmd_send()
225 ret = mbox_send_message(cl_info->mbox_chan, &cmd); in hccs_pcc_cmd_send()
227 dev_err(hdev->dev, "Send PCC mbox message failed, ret = %d.\n", in hccs_pcc_cmd_send()
239 fw_inner_head = &desc->rsp.fw_inner_head; in hccs_pcc_cmd_send()
240 if (fw_inner_head->retStatus) { in hccs_pcc_cmd_send()
241 dev_err(hdev->dev, "Execute PCC command failed, error code = %u.\n", in hccs_pcc_cmd_send()
242 fw_inner_head->retStatus); in hccs_pcc_cmd_send()
243 ret = -EIO; in hccs_pcc_cmd_send()
247 mbox_client_txdone(cl_info->mbox_chan, ret); in hccs_pcc_cmd_send()
253 struct hccs_req_desc *req = &desc->req; in hccs_init_req_desc()
256 req->req_head.module_code = HCCS_SERDES_MODULE_CODE; in hccs_init_req_desc()
267 dev_err(hdev->dev, "Get device capabilities failed, ret = %d.\n", in hccs_get_dev_caps()
271 memcpy(&hdev->caps, desc.rsp.data, sizeof(hdev->caps)); in hccs_get_dev_caps()
284 dev_err(hdev->dev, "query system chip number failed, ret = %d.\n", in hccs_query_chip_num_on_platform()
289 hdev->chip_num = *((u8 *)&desc.rsp.data); in hccs_query_chip_num_on_platform()
290 if (!hdev->chip_num) { in hccs_query_chip_num_on_platform()
291 dev_err(hdev->dev, "chip num obtained from firmware is zero.\n"); in hccs_query_chip_num_on_platform()
292 return -EINVAL; in hccs_query_chip_num_on_platform()
307 req_param->chip_id = chip->chip_id; in hccs_get_chip_info()
312 chip->die_num = *((u8 *)&desc.rsp.data); in hccs_get_chip_info()
325 dev_err(hdev->dev, "query chip number on platform failed, ret = %d.\n", in hccs_query_chip_info_on_platform()
330 hdev->chips = devm_kzalloc(hdev->dev, in hccs_query_chip_info_on_platform()
331 hdev->chip_num * sizeof(struct hccs_chip_info), in hccs_query_chip_info_on_platform()
333 if (!hdev->chips) { in hccs_query_chip_info_on_platform()
334 dev_err(hdev->dev, "allocate all chips memory failed.\n"); in hccs_query_chip_info_on_platform()
335 return -ENOMEM; in hccs_query_chip_info_on_platform()
338 for (idx = 0; idx < hdev->chip_num; idx++) { in hccs_query_chip_info_on_platform()
339 chip = &hdev->chips[idx]; in hccs_query_chip_info_on_platform()
340 chip->chip_id = idx; in hccs_query_chip_info_on_platform()
343 dev_err(hdev->dev, "get chip%u info failed, ret = %d.\n", in hccs_query_chip_info_on_platform()
347 chip->hdev = hdev; in hccs_query_chip_info_on_platform()
354 u8 die_idx, struct hccs_die_info *die) in hccs_query_die_info_on_chip() argument
363 req_param->chip_id = chip_id; in hccs_query_die_info_on_chip()
364 req_param->die_idx = die_idx; in hccs_query_die_info_on_chip()
370 die->die_id = rsp_data->die_id; in hccs_query_die_info_on_chip()
371 die->port_num = rsp_data->port_num; in hccs_query_die_info_on_chip()
372 die->min_port_id = rsp_data->min_port_id; in hccs_query_die_info_on_chip()
373 die->max_port_id = rsp_data->max_port_id; in hccs_query_die_info_on_chip()
374 if (die->min_port_id > die->max_port_id) { in hccs_query_die_info_on_chip()
375 dev_err(hdev->dev, "min port id(%u) > max port id(%u) on die_idx(%u).\n", in hccs_query_die_info_on_chip()
376 die->min_port_id, die->max_port_id, die_idx); in hccs_query_die_info_on_chip()
377 return -EINVAL; in hccs_query_die_info_on_chip()
379 if (die->max_port_id > HCCS_DIE_MAX_PORT_ID) { in hccs_query_die_info_on_chip()
380 dev_err(hdev->dev, "max port id(%u) on die_idx(%u) is too big.\n", in hccs_query_die_info_on_chip()
381 die->max_port_id, die_idx); in hccs_query_die_info_on_chip()
382 return -EINVAL; in hccs_query_die_info_on_chip()
390 struct device *dev = hdev->dev; in hccs_query_all_die_info_on_platform()
392 struct hccs_die_info *die; in hccs_query_all_die_info_on_platform() local
396 for (i = 0; i < hdev->chip_num; i++) { in hccs_query_all_die_info_on_platform()
397 chip = &hdev->chips[i]; in hccs_query_all_die_info_on_platform()
398 if (!chip->die_num) in hccs_query_all_die_info_on_platform()
401 chip->dies = devm_kzalloc(hdev->dev, in hccs_query_all_die_info_on_platform()
402 chip->die_num * sizeof(struct hccs_die_info), in hccs_query_all_die_info_on_platform()
404 if (!chip->dies) { in hccs_query_all_die_info_on_platform()
405 dev_err(dev, "allocate all dies memory on chip%u failed.\n", in hccs_query_all_die_info_on_platform()
407 return -ENOMEM; in hccs_query_all_die_info_on_platform()
410 for (j = 0; j < chip->die_num; j++) { in hccs_query_all_die_info_on_platform()
411 die = &chip->dies[j]; in hccs_query_all_die_info_on_platform()
412 ret = hccs_query_die_info_on_chip(hdev, i, j, die); in hccs_query_all_die_info_on_platform()
414 dev_err(dev, "get die idx (%u) info on chip%u failed, ret = %d.\n", in hccs_query_all_die_info_on_platform()
418 die->chip = chip; in hccs_query_all_die_info_on_platform()
438 rsp = &desc->rsp; in hccs_get_bd_info()
439 head = &rsp->rsp_head; in hccs_get_bd_info()
440 if (head->data_len > buf_len) { in hccs_get_bd_info()
441 dev_err(hdev->dev, in hccs_get_bd_info()
443 buf_len, head->data_len); in hccs_get_bd_info()
444 return -ENOMEM; in hccs_get_bd_info()
447 memcpy(buf, rsp->data, head->data_len); in hccs_get_bd_info()
454 struct hccs_die_info *die, in hccs_get_all_port_attr() argument
469 start_id = die->min_port_id; in hccs_get_all_port_attr()
470 while (start_id <= die->max_port_id) { in hccs_get_all_port_attr()
473 req_head->start_id = start_id; in hccs_get_all_port_attr()
475 req_param->chip_id = die->chip->chip_id; in hccs_get_all_port_attr()
476 req_param->die_id = die->die_id; in hccs_get_all_port_attr()
481 dev_err(hdev->dev, in hccs_get_all_port_attr()
482 "get the information of port%u on die%u failed, ret = %d.\n", in hccs_get_all_port_attr()
483 start_id, die->die_id, ret); in hccs_get_all_port_attr()
488 left_buf_len -= rsp_head.data_len; in hccs_get_all_port_attr()
490 dev_err(hdev->dev, in hccs_get_all_port_attr()
491 "next port id (%u) is not greater than last start id (%u) on die%u.\n", in hccs_get_all_port_attr()
492 rsp_head.next_id, start_id, die->die_id); in hccs_get_all_port_attr()
493 return -EINVAL; in hccs_get_all_port_attr()
502 struct hccs_die_info *die) in hccs_get_all_port_info_on_die() argument
509 attrs = kcalloc(die->port_num, sizeof(struct hccs_port_attr), in hccs_get_all_port_info_on_die()
512 return -ENOMEM; in hccs_get_all_port_info_on_die()
514 ret = hccs_get_all_port_attr(hdev, die, attrs, die->port_num); in hccs_get_all_port_info_on_die()
518 for (i = 0; i < die->port_num; i++) { in hccs_get_all_port_info_on_die()
519 port = &die->ports[i]; in hccs_get_all_port_info_on_die()
520 port->port_id = attrs[i].port_id; in hccs_get_all_port_info_on_die()
521 port->port_type = attrs[i].port_type; in hccs_get_all_port_info_on_die()
522 port->lane_mode = attrs[i].lane_mode; in hccs_get_all_port_info_on_die()
523 port->enable = attrs[i].enable; in hccs_get_all_port_info_on_die()
524 port->die = die; in hccs_get_all_port_info_on_die()
535 struct device *dev = hdev->dev; in hccs_query_all_port_info_on_platform()
537 struct hccs_die_info *die; in hccs_query_all_port_info_on_platform() local
541 for (i = 0; i < hdev->chip_num; i++) { in hccs_query_all_port_info_on_platform()
542 chip = &hdev->chips[i]; in hccs_query_all_port_info_on_platform()
543 for (j = 0; j < chip->die_num; j++) { in hccs_query_all_port_info_on_platform()
544 die = &chip->dies[j]; in hccs_query_all_port_info_on_platform()
545 if (!die->port_num) in hccs_query_all_port_info_on_platform()
548 die->ports = devm_kzalloc(dev, in hccs_query_all_port_info_on_platform()
549 die->port_num * sizeof(struct hccs_port_info), in hccs_query_all_port_info_on_platform()
551 if (!die->ports) { in hccs_query_all_port_info_on_platform()
552 dev_err(dev, "allocate ports memory on chip%u/die%u failed.\n", in hccs_query_all_port_info_on_platform()
553 i, die->die_id); in hccs_query_all_port_info_on_platform()
554 return -ENOMEM; in hccs_query_all_port_info_on_platform()
557 ret = hccs_get_all_port_info_on_die(hdev, die); in hccs_query_all_port_info_on_platform()
559 dev_err(dev, "get all port info on chip%u/die%u failed, ret = %d.\n", in hccs_query_all_port_info_on_platform()
560 i, die->die_id, ret); in hccs_query_all_port_info_on_platform()
575 dev_err(hdev->dev, "query chip info on platform failed, ret = %d.\n", in hccs_get_hw_info()
582 dev_err(hdev->dev, "query all die info on platform failed, ret = %d.\n", in hccs_get_hw_info()
589 dev_err(hdev->dev, "query all port info on platform failed, ret = %d.\n", in hccs_get_hw_info()
601 const struct hccs_die_info *die = port->die; in hccs_query_port_link_status() local
602 const struct hccs_chip_info *chip = die->chip; in hccs_query_port_link_status()
609 req_param->chip_id = chip->chip_id; in hccs_query_port_link_status()
610 req_param->die_id = die->die_id; in hccs_query_port_link_status()
611 req_param->port_id = port->port_id; in hccs_query_port_link_status()
614 dev_err(hdev->dev, in hccs_query_port_link_status()
628 const struct hccs_die_info *die = port->die; in hccs_query_port_crc_err_cnt() local
629 const struct hccs_chip_info *chip = die->chip; in hccs_query_port_crc_err_cnt()
636 req_param->chip_id = chip->chip_id; in hccs_query_port_crc_err_cnt()
637 req_param->die_id = die->die_id; in hccs_query_port_crc_err_cnt()
638 req_param->port_id = port->port_id; in hccs_query_port_crc_err_cnt()
641 dev_err(hdev->dev, in hccs_query_port_crc_err_cnt()
652 const struct hccs_die_info *die, in hccs_get_die_all_link_status() argument
659 if (die->port_num == 0) { in hccs_get_die_all_link_status()
666 req_param->chip_id = die->chip->chip_id; in hccs_get_die_all_link_status()
667 req_param->die_id = die->die_id; in hccs_get_die_all_link_status()
670 dev_err(hdev->dev, in hccs_get_die_all_link_status()
671 "get link status of all ports failed on die%u, ret = %d.\n", in hccs_get_die_all_link_status()
672 die->die_id, ret); in hccs_get_die_all_link_status()
682 const struct hccs_die_info *die, in hccs_get_die_all_port_lane_status() argument
689 if (die->port_num == 0) { in hccs_get_die_all_port_lane_status()
696 req_param->chip_id = die->chip->chip_id; in hccs_get_die_all_port_lane_status()
697 req_param->die_id = die->die_id; in hccs_get_die_all_port_lane_status()
700 dev_err(hdev->dev, "get lane status of all ports failed on die%u, ret = %d.\n", in hccs_get_die_all_port_lane_status()
701 die->die_id, ret); in hccs_get_die_all_port_lane_status()
711 const struct hccs_die_info *die, in hccs_get_die_total_crc_err_cnt() argument
718 if (die->port_num == 0) { in hccs_get_die_total_crc_err_cnt()
725 req_param->chip_id = die->chip->chip_id; in hccs_get_die_total_crc_err_cnt()
726 req_param->die_id = die->die_id; in hccs_get_die_total_crc_err_cnt()
729 dev_err(hdev->dev, "get crc error count sum failed on die%u, ret = %d.\n", in hccs_get_die_total_crc_err_cnt()
730 die->die_id, ret); in hccs_get_die_total_crc_err_cnt()
745 return kobj_attr->show(k, kobj_attr, buf); in hccs_show()
757 return sysfs_emit(buf, "HCCS-v%u\n", port->port_type); in type_show()
766 return sysfs_emit(buf, "x%u\n", port->lane_mode); in lane_mode_show()
775 return sysfs_emit(buf, "%u\n", port->enable); in enable_show()
783 struct hccs_dev *hdev = port->die->chip->hdev; in cur_lane_num_show()
787 mutex_lock(&hdev->lock); in cur_lane_num_show()
789 mutex_unlock(&hdev->lock); in cur_lane_num_show()
801 struct hccs_dev *hdev = port->die->chip->hdev; in link_fsm_show()
810 {HCCS_PORT_READY, "link-up"}, in link_fsm_show()
816 mutex_lock(&hdev->lock); in link_fsm_show()
818 mutex_unlock(&hdev->lock); in link_fsm_show()
837 struct hccs_dev *hdev = port->die->chip->hdev; in lane_mask_show()
841 mutex_lock(&hdev->lock); in lane_mask_show()
843 mutex_unlock(&hdev->lock); in lane_mask_show()
855 struct hccs_dev *hdev = port->die->chip->hdev; in crc_err_cnt_show()
859 mutex_lock(&hdev->lock); in crc_err_cnt_show()
861 mutex_unlock(&hdev->lock); in crc_err_cnt_show()
889 const struct hccs_die_info *die = kobj_to_die_info(kobj); in all_linked_on_die_show() local
890 struct hccs_dev *hdev = die->chip->hdev; in all_linked_on_die_show()
894 mutex_lock(&hdev->lock); in all_linked_on_die_show()
895 ret = hccs_get_die_all_link_status(hdev, die, &all_linked); in all_linked_on_die_show()
896 mutex_unlock(&hdev->lock); in all_linked_on_die_show()
909 const struct hccs_die_info *die = kobj_to_die_info(kobj); in linked_full_lane_on_die_show() local
910 struct hccs_dev *hdev = die->chip->hdev; in linked_full_lane_on_die_show()
914 mutex_lock(&hdev->lock); in linked_full_lane_on_die_show()
915 ret = hccs_get_die_all_port_lane_status(hdev, die, &full_lane); in linked_full_lane_on_die_show()
916 mutex_unlock(&hdev->lock); in linked_full_lane_on_die_show()
929 const struct hccs_die_info *die = kobj_to_die_info(kobj); in crc_err_cnt_sum_on_die_show() local
930 struct hccs_dev *hdev = die->chip->hdev; in crc_err_cnt_sum_on_die_show()
934 mutex_lock(&hdev->lock); in crc_err_cnt_sum_on_die_show()
935 ret = hccs_get_die_total_crc_err_cnt(hdev, die, &total_crc_err_cnt); in crc_err_cnt_sum_on_die_show()
936 mutex_unlock(&hdev->lock); in crc_err_cnt_sum_on_die_show()
962 struct hccs_dev *hdev = chip->hdev; in all_linked_on_chip_show()
963 const struct hccs_die_info *die; in all_linked_on_chip_show() local
968 mutex_lock(&hdev->lock); in all_linked_on_chip_show()
969 for (i = 0; i < chip->die_num; i++) { in all_linked_on_chip_show()
970 die = &chip->dies[i]; in all_linked_on_chip_show()
971 ret = hccs_get_die_all_link_status(hdev, die, &tmp); in all_linked_on_chip_show()
973 mutex_unlock(&hdev->lock); in all_linked_on_chip_show()
981 mutex_unlock(&hdev->lock); in all_linked_on_chip_show()
993 struct hccs_dev *hdev = chip->hdev; in linked_full_lane_on_chip_show()
994 const struct hccs_die_info *die; in linked_full_lane_on_chip_show() local
999 mutex_lock(&hdev->lock); in linked_full_lane_on_chip_show()
1000 for (i = 0; i < chip->die_num; i++) { in linked_full_lane_on_chip_show()
1001 die = &chip->dies[i]; in linked_full_lane_on_chip_show()
1002 ret = hccs_get_die_all_port_lane_status(hdev, die, &tmp); in linked_full_lane_on_chip_show()
1004 mutex_unlock(&hdev->lock); in linked_full_lane_on_chip_show()
1012 mutex_unlock(&hdev->lock); in linked_full_lane_on_chip_show()
1025 struct hccs_dev *hdev = chip->hdev; in crc_err_cnt_sum_on_chip_show()
1026 const struct hccs_die_info *die; in crc_err_cnt_sum_on_chip_show() local
1030 mutex_lock(&hdev->lock); in crc_err_cnt_sum_on_chip_show()
1031 for (i = 0; i < chip->die_num; i++) { in crc_err_cnt_sum_on_chip_show()
1032 die = &chip->dies[i]; in crc_err_cnt_sum_on_chip_show()
1033 ret = hccs_get_die_total_crc_err_cnt(hdev, die, &crc_err_cnt); in crc_err_cnt_sum_on_chip_show()
1035 mutex_unlock(&hdev->lock); in crc_err_cnt_sum_on_chip_show()
1041 mutex_unlock(&hdev->lock); in crc_err_cnt_sum_on_chip_show()
1061 static void hccs_remove_die_dir(struct hccs_die_info *die) in hccs_remove_die_dir() argument
1066 for (i = 0; i < die->port_num; i++) { in hccs_remove_die_dir()
1067 port = &die->ports[i]; in hccs_remove_die_dir()
1068 if (port->dir_created) in hccs_remove_die_dir()
1069 kobject_put(&port->kobj); in hccs_remove_die_dir()
1072 kobject_put(&die->kobj); in hccs_remove_die_dir()
1077 struct hccs_die_info *die; in hccs_remove_chip_dir() local
1080 for (i = 0; i < chip->die_num; i++) { in hccs_remove_chip_dir()
1081 die = &chip->dies[i]; in hccs_remove_chip_dir()
1082 if (die->dir_created) in hccs_remove_chip_dir()
1083 hccs_remove_die_dir(die); in hccs_remove_chip_dir()
1086 kobject_put(&chip->kobj); in hccs_remove_chip_dir()
1093 for (i = 0; i < hdev->chip_num; i++) in hccs_remove_topo_dirs()
1094 hccs_remove_chip_dir(&hdev->chips[i]); in hccs_remove_topo_dirs()
1098 struct hccs_die_info *die, in hccs_create_hccs_dir() argument
1103 ret = kobject_init_and_add(&port->kobj, &hccs_port_type, in hccs_create_hccs_dir()
1104 &die->kobj, "hccs%d", port->port_id); in hccs_create_hccs_dir()
1106 kobject_put(&port->kobj); in hccs_create_hccs_dir()
1115 struct hccs_die_info *die) in hccs_create_die_dir() argument
1121 ret = kobject_init_and_add(&die->kobj, &hccs_die_type, in hccs_create_die_dir()
1122 &chip->kobj, "die%d", die->die_id); in hccs_create_die_dir()
1124 kobject_put(&die->kobj); in hccs_create_die_dir()
1128 for (i = 0; i < die->port_num; i++) { in hccs_create_die_dir()
1129 port = &die->ports[i]; in hccs_create_die_dir()
1130 ret = hccs_create_hccs_dir(hdev, die, port); in hccs_create_die_dir()
1132 dev_err(hdev->dev, "create hccs%d dir failed.\n", in hccs_create_die_dir()
1133 port->port_id); in hccs_create_die_dir()
1136 port->dir_created = true; in hccs_create_die_dir()
1141 hccs_remove_die_dir(die); in hccs_create_die_dir()
1149 struct hccs_die_info *die; in hccs_create_chip_dir() local
1153 ret = kobject_init_and_add(&chip->kobj, &hccs_chip_type, in hccs_create_chip_dir()
1154 &hdev->dev->kobj, "chip%d", chip->chip_id); in hccs_create_chip_dir()
1156 kobject_put(&chip->kobj); in hccs_create_chip_dir()
1160 for (id = 0; id < chip->die_num; id++) { in hccs_create_chip_dir()
1161 die = &chip->dies[id]; in hccs_create_chip_dir()
1162 ret = hccs_create_die_dir(hdev, chip, die); in hccs_create_chip_dir()
1165 die->dir_created = true; in hccs_create_chip_dir()
1181 for (id = 0; id < hdev->chip_num; id++) { in hccs_create_topo_dirs()
1182 chip = &hdev->chips[id]; in hccs_create_topo_dirs()
1185 dev_err(hdev->dev, "init chip%d dir failed!\n", id); in hccs_create_topo_dirs()
1193 hccs_remove_chip_dir(&hdev->chips[k]); in hccs_create_topo_dirs()
1205 dev_err(&pdev->dev, "acpi is disabled.\n"); in hccs_probe()
1206 return -ENODEV; in hccs_probe()
1208 acpi_dev = ACPI_COMPANION(&pdev->dev); in hccs_probe()
1210 return -ENODEV; in hccs_probe()
1212 hdev = devm_kzalloc(&pdev->dev, sizeof(*hdev), GFP_KERNEL); in hccs_probe()
1214 return -ENOMEM; in hccs_probe()
1215 hdev->acpi_dev = acpi_dev; in hccs_probe()
1216 hdev->dev = &pdev->dev; in hccs_probe()
1219 mutex_init(&hdev->lock); in hccs_probe()