/linux-6.3-rc2/drivers/crypto/ccp/ |
A D | psp-dev.c | 25 psp = devm_kzalloc(dev, sizeof(*psp), GFP_KERNEL); in psp_alloc_struct() 26 if (!psp) in psp_alloc_struct() 30 psp->sp = sp; in psp_alloc_struct() 32 snprintf(psp->name, sizeof(psp->name), "psp-%u", sp->ord); in psp_alloc_struct() 34 return psp; in psp_alloc_struct() 48 psp->sev_irq_handler(irq, psp->sev_irq_data, status); in psp_irq_handler() 51 psp->tee_irq_handler(irq, psp->tee_irq_data, status); in psp_irq_handler() 135 if (!psp) in psp_dev_init() 158 ret = sp_request_psp_irq(psp->sp, psp_irq_handler, psp->name, psp); in psp_dev_init() 179 sp_free_psp_irq(psp->sp, psp); in psp_dev_init() [all …]
|
A D | tee-dev.c | 191 int tee_dev_init(struct psp_device *psp) in tee_dev_init() argument 193 struct device *dev = psp->dev; in tee_dev_init() 202 psp->tee_data = tee; in tee_dev_init() 205 tee->psp = psp; in tee_dev_init() 207 tee->io_regs = psp->io_regs; in tee_dev_init() 227 psp->tee_data = NULL; in tee_dev_init() 234 void tee_dev_destroy(struct psp_device *psp) in tee_dev_destroy() argument 236 struct psp_tee_device *tee = psp->tee_data; in tee_dev_destroy() 360 if (!psp || !psp->tee_data) in psp_tee_process_cmd() 366 tee = psp->tee_data; in psp_tee_process_cmd() [all …]
|
/linux-6.3-rc2/drivers/gpu/drm/amd/amdgpu/ |
A D | amdgpu_psp.h | 398 #define psp_ring_create(psp, type) (psp)->funcs->ring_create((psp), (type)) argument 399 #define psp_ring_stop(psp, type) (psp)->funcs->ring_stop((psp), (type)) argument 400 #define psp_ring_destroy(psp, type) ((psp)->funcs->ring_destroy((psp), (type))) argument 402 ((psp)->funcs->init_microcode ? (psp)->funcs->init_microcode((psp)) : 0) 404 ((psp)->funcs->bootloader_load_kdb ? (psp)->funcs->bootloader_load_kdb((psp)) : 0) 421 ((psp)->funcs->smu_reload_quirk ? (psp)->funcs->smu_reload_quirk((psp)) : false) 423 ((psp)->funcs->mode1_reset ? (psp)->funcs->mode1_reset((psp)) : false) 425 ((psp)->funcs->mem_training ? (psp)->funcs->mem_training((psp), (ops)) : 0) 427 #define psp_ring_get_wptr(psp) (psp)->funcs->ring_get_wptr((psp)) argument 428 #define psp_ring_set_wptr(psp, value) (psp)->funcs->ring_set_wptr((psp), (value)) argument [all …]
|
A D | amdgpu_psp.c | 161 struct psp_context *psp = &adev->psp; in psp_early_init() local 392 struct psp_context *psp = &adev->psp; in psp_sw_init() local 503 struct psp_context *psp = &adev->psp; in psp_sw_fini() local 732 psp_copy_fw(psp, psp->toc.start_addr, psp->toc.size_bytes); in psp_load_toc() 816 psp_prep_tmr_cmd_buf(psp, cmd, psp->tmr_mc_addr, psp->tmr_bo); in psp_tmr_load() 889 struct psp_context *psp = &adev->psp; in psp_boot_config_get() local 915 struct psp_context *psp = &adev->psp; in psp_boot_config_set() local 938 struct psp_context *psp = &adev->psp; in psp_rl_load() local 947 memcpy(psp->fw_pri_buf, psp->rl.start_addr, psp->rl.size_bytes); in psp_rl_load() 2510 struct psp_context *psp = &adev->psp; in psp_load_fw() local [all …]
|
A D | psp_v13_0_4.c | 79 ret = psp_wait_for(psp, in psp_v13_0_4_wait_for_bootloader() 103 if (psp_v13_0_4_is_sos_alive(psp)) in psp_v13_0_4_bootloader_load_component() 129 return psp_v13_0_4_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v13_0_4_bootloader_load_kdb() 134 return psp_v13_0_4_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_TOS_SPL_TABLE); in psp_v13_0_4_bootloader_load_spl() 139 return psp_v13_0_4_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v13_0_4_bootloader_load_sysdrv() 144 return psp_v13_0_4_bootloader_load_component(psp, &psp->soc_drv, PSP_BL__LOAD_SOCDRV); in psp_v13_0_4_bootloader_load_soc_drv() 149 return psp_v13_0_4_bootloader_load_component(psp, &psp->intf_drv, PSP_BL__LOAD_INTFDRV); in psp_v13_0_4_bootloader_load_intf_drv() 154 return psp_v13_0_4_bootloader_load_component(psp, &psp->dbg_drv, PSP_BL__LOAD_DBGDRV); in psp_v13_0_4_bootloader_load_dbg_drv() 166 if (psp_v13_0_4_is_sos_alive(psp)) in psp_v13_0_4_bootloader_load_sos() 176 memcpy(psp->fw_pri_buf, psp->sos.start_addr, psp->sos.size_bytes); in psp_v13_0_4_bootloader_load_sos() [all …]
|
A D | psp_v13_0.c | 140 ret = psp_wait_for(psp, in psp_v13_0_wait_for_bootloader() 164 if (psp_v13_0_is_sos_alive(psp)) in psp_v13_0_bootloader_load_component() 190 return psp_v13_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v13_0_bootloader_load_kdb() 195 return psp_v13_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_TOS_SPL_TABLE); in psp_v13_0_bootloader_load_spl() 200 return psp_v13_0_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v13_0_bootloader_load_sysdrv() 205 return psp_v13_0_bootloader_load_component(psp, &psp->soc_drv, PSP_BL__LOAD_SOCDRV); in psp_v13_0_bootloader_load_soc_drv() 210 return psp_v13_0_bootloader_load_component(psp, &psp->intf_drv, PSP_BL__LOAD_INTFDRV); in psp_v13_0_bootloader_load_intf_drv() 215 return psp_v13_0_bootloader_load_component(psp, &psp->dbg_drv, PSP_BL__LOAD_DBGDRV); in psp_v13_0_bootloader_load_dbg_drv() 220 return psp_v13_0_bootloader_load_component(psp, &psp->ras_drv, PSP_BL__LOAD_RASDRV); in psp_v13_0_bootloader_load_ras_drv() 243 memcpy(psp->fw_pri_buf, psp->sos.start_addr, psp->sos.size_bytes); in psp_v13_0_bootloader_load_sos() [all …]
|
A D | psp_v11_0.c | 154 ret = psp_wait_for(psp, in psp_v11_0_wait_for_bootloader() 188 if (psp_v11_0_is_sos_alive(psp)) in psp_v11_0_bootloader_load_component() 212 return psp_v11_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v11_0_bootloader_load_kdb() 217 return psp_v11_0_bootloader_load_component(psp, &psp->spl, PSP_BL__LOAD_TOS_SPL_TABLE); in psp_v11_0_bootloader_load_spl() 222 return psp_v11_0_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v11_0_bootloader_load_sysdrv() 234 if (psp_v11_0_is_sos_alive(psp)) in psp_v11_0_bootloader_load_sos() 242 psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); in psp_v11_0_bootloader_load_sos() 461 if (psp_v11_0_is_sos_alive(psp)) { in psp_v11_0_memory_training() 570 data = psp->km_ring.ring_wptr; in psp_v11_0_ring_get_wptr() 584 psp->km_ring.ring_wptr = value; in psp_v11_0_ring_set_wptr() [all …]
|
A D | psp_v3_1.c | 59 struct amdgpu_device *adev = psp->adev; in psp_v3_1_init_microcode() 82 struct amdgpu_device *adev = psp->adev; in psp_v3_1_bootloader_load_sysdrv() 99 psp_copy_fw(psp, psp->sys.start_addr, psp->sys.size_bytes); in psp_v3_1_bootloader_load_sysdrv() 121 struct amdgpu_device *adev = psp->adev; in psp_v3_1_bootloader_load_sos() 138 psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); in psp_v3_1_bootloader_load_sos() 157 struct amdgpu_device *adev = psp->adev; in psp_v3_1_reroute_ih() 191 struct psp_ring *ring = &psp->km_ring; in psp_v3_1_ring_create() 194 psp_v3_1_reroute_ih(psp); in psp_v3_1_ring_create() 346 data = psp->km_ring.ring_wptr; in psp_v3_1_ring_get_wptr() 361 psp->km_ring.ring_wptr = value; in psp_v3_1_ring_set_wptr() [all …]
|
A D | psp_v12_0.c | 50 struct amdgpu_device *adev = psp->adev; in psp_v12_0_init_microcode() 76 struct amdgpu_device *adev = psp->adev; in psp_v12_0_bootloader_load_sysdrv() 93 psp_copy_fw(psp, psp->sys.start_addr, psp->sys.size_bytes); in psp_v12_0_bootloader_load_sysdrv() 115 struct amdgpu_device *adev = psp->adev; in psp_v12_0_bootloader_load_sos() 132 psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); in psp_v12_0_bootloader_load_sos() 152 struct amdgpu_device *adev = psp->adev; in psp_v12_0_reroute_ih() 186 struct psp_ring *ring = &psp->km_ring; in psp_v12_0_ring_create() 189 psp_v12_0_reroute_ih(psp); in psp_v12_0_ring_create() 191 if (amdgpu_sriov_vf(psp->adev)) { in psp_v12_0_ring_create() 268 struct psp_ring *ring = &psp->km_ring; in psp_v12_0_ring_destroy() [all …]
|
A D | psp_v10_0.c | 49 struct amdgpu_device *adev = psp->adev; in psp_v10_0_init_microcode() 56 err = psp_init_asd_microcode(psp, ucode_prefix); in psp_v10_0_init_microcode() 68 struct psp_ring *ring = &psp->km_ring; in psp_v10_0_ring_create() 69 struct amdgpu_device *adev = psp->adev; in psp_v10_0_ring_create() 100 struct amdgpu_device *adev = psp->adev; in psp_v10_0_ring_stop() 120 struct psp_ring *ring = &psp->km_ring; in psp_v10_0_ring_destroy() 121 struct amdgpu_device *adev = psp->adev; in psp_v10_0_ring_destroy() 123 ret = psp_v10_0_ring_stop(psp, ring_type); in psp_v10_0_ring_destroy() 142 struct amdgpu_device *adev = psp->adev; in psp_v10_0_ring_get_wptr() 149 struct amdgpu_device *adev = psp->adev; in psp_v10_0_ring_set_wptr() [all …]
|
A D | amdgpu_securedisplay.c | 55 dev_err(psp->adev->dev, "Secure display: Generic Failure."); in psp_securedisplay_parse_resp_status() 58 dev_err(psp->adev->dev, "Secure display: Invalid Parameter."); in psp_securedisplay_parse_resp_status() 61 dev_err(psp->adev->dev, "Secure display: Null Pointer."); in psp_securedisplay_parse_resp_status() 95 struct psp_context *psp = &adev->psp; in amdgpu_securedisplay_debugfs_write() local 124 mutex_lock(&psp->securedisplay_context.mutex); in amdgpu_securedisplay_debugfs_write() 125 psp_prep_securedisplay_cmd_buf(psp, &securedisplay_cmd, in amdgpu_securedisplay_debugfs_write() 135 mutex_unlock(&psp->securedisplay_context.mutex); in amdgpu_securedisplay_debugfs_write() 138 mutex_lock(&psp->securedisplay_context.mutex); in amdgpu_securedisplay_debugfs_write() 139 psp_prep_securedisplay_cmd_buf(psp, &securedisplay_cmd, in amdgpu_securedisplay_debugfs_write() 152 mutex_unlock(&psp->securedisplay_context.mutex); in amdgpu_securedisplay_debugfs_write() [all …]
|
A D | psp_v11_0_8.c | 31 static int psp_v11_0_8_ring_stop(struct psp_context *psp, in psp_v11_0_8_ring_stop() argument 35 struct amdgpu_device *adev = psp->adev; in psp_v11_0_8_ring_stop() 65 struct psp_ring *ring = &psp->km_ring; in psp_v11_0_8_ring_create() 66 struct amdgpu_device *adev = psp->adev; in psp_v11_0_8_ring_create() 69 ret = psp_v11_0_8_ring_stop(psp, ring_type); in psp_v11_0_8_ring_create() 131 struct psp_ring *ring = &psp->km_ring; in psp_v11_0_8_ring_destroy() 132 struct amdgpu_device *adev = psp->adev; in psp_v11_0_8_ring_destroy() 134 ret = psp_v11_0_8_ring_stop(psp, ring_type); in psp_v11_0_8_ring_destroy() 148 struct amdgpu_device *adev = psp->adev; in psp_v11_0_8_ring_get_wptr() 160 struct amdgpu_device *adev = psp->adev; in psp_v11_0_8_ring_set_wptr() [all …]
|
A D | amdgpu_psp_ta.h | 28 #define psp_fn_ta_initialize(psp) ((psp)->ta_funcs->fn_ta_initialize((psp))) argument 29 #define psp_fn_ta_invoke(psp, ta_cmd_id) ((psp)->ta_funcs->fn_ta_invoke((psp), (ta_cmd_id))) argument 30 #define psp_fn_ta_terminate(psp) ((psp)->ta_funcs->fn_ta_terminate((psp))) argument
|
A D | amdgpu_psp_ta.c | 79 psp->ta_funcs = &ras_ta_funcs; in set_ta_context_funcs() 153 struct psp_context *psp = &adev->psp; in ta_if_load_debugfs_write() local 182 if (!psp->ta_funcs || !psp->ta_funcs->fn_ta_terminate) { in ta_if_load_debugfs_write() 200 ret = psp_fn_ta_terminate(psp); in ta_if_load_debugfs_write() 222 ret = psp_fn_ta_initialize(psp); in ta_if_load_debugfs_write() 252 struct psp_context *psp = &adev->psp; in ta_if_unload_debugfs_write() local 271 if (!psp->ta_funcs || !psp->ta_funcs->fn_ta_terminate) { in ta_if_unload_debugfs_write() 276 ret = psp_fn_ta_terminate(psp); in ta_if_unload_debugfs_write() 301 struct psp_context *psp = &adev->psp; in ta_if_invoke_debugfs_write() local 343 if (!psp->ta_funcs || !psp->ta_funcs->fn_ta_invoke) { in ta_if_invoke_debugfs_write() [all …]
|
/linux-6.3-rc2/drivers/gpu/drm/amd/display/modules/hdcp/ |
A D | hdcp_psp.c | 51 struct psp_context *psp = hdcp->config.psp.handle; in remove_display_from_topology_v2() local 87 struct psp_context *psp = hdcp->config.psp.handle; in remove_display_from_topology_v3() local 125 struct psp_context *psp = hdcp->config.psp.handle; in add_display_to_topology_v2() local 172 struct psp_context *psp = hdcp->config.psp.handle; in add_display_to_topology_v3() local 253 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_create_session() local 292 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_destroy_session() local 325 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_validate_rx() local 366 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_enable_encryption() local 393 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_validate_ksvlist_vp() local 435 struct psp_context *psp = hdcp->config.psp.handle; in mod_hdcp_hdcp1_enable_dp_stream_encryption() local [all …]
|
/linux-6.3-rc2/drivers/power/supply/ |
A D | acer_a500_battery.c | 30 .psp = POWER_SUPPLY_PROP_ ## _psp, \ 35 enum power_supply_property psp; member 96 enum power_supply_property psp, in a500_battery_unit_adjustment() argument 102 switch (psp) { in a500_battery_unit_adjustment() 124 enum power_supply_property psp) in a500_battery_get_ec_data_index() argument 133 if (psp == POWER_SUPPLY_PROP_PRESENT) in a500_battery_get_ec_data_index() 134 psp = POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN; in a500_battery_get_ec_data_index() 137 if (psp == ec_data[i].psp) in a500_battery_get_ec_data_index() 146 enum power_supply_property psp, in a500_battery_get_property() argument 153 switch (psp) { in a500_battery_get_property() [all …]
|
A D | sbs-battery.c | 87 .psp = _psp, \ 94 enum power_supply_property psp; member 227 if (string_properties[i] == psp) in sbs_get_string_buf() 678 enum power_supply_property psp) in sbs_get_property_index() argument 683 if (psp == sbs_data[count].psp) in sbs_get_property_index() 725 switch (psp) { in sbs_unit_adjustment() 874 enum power_supply_property psp, in sbs_get_battery_manufacture_date() argument 888 switch (psp) { in sbs_get_battery_manufacture_date() 906 enum power_supply_property psp, in sbs_get_property() argument 927 switch (psp) { in sbs_get_property() [all …]
|
A D | ip5xxx_power.c | 313 enum power_supply_property psp, in ip5xxx_battery_get_property() argument 324 switch (psp) { in ip5xxx_battery_get_property() 431 enum power_supply_property psp, in ip5xxx_battery_set_property() argument 442 switch (psp) { in ip5xxx_battery_set_property() 481 enum power_supply_property psp) in ip5xxx_battery_property_is_writeable() argument 483 return psp == POWER_SUPPLY_PROP_STATUS || in ip5xxx_battery_property_is_writeable() 505 enum power_supply_property psp, in ip5xxx_boost_get_property() argument 516 switch (psp) { in ip5xxx_boost_get_property() 540 enum power_supply_property psp, in ip5xxx_boost_set_property() argument 551 switch (psp) { in ip5xxx_boost_set_property() [all …]
|
A D | rn5t618_power.c | 360 enum power_supply_property psp, in rn5t618_battery_get_property() argument 366 switch (psp) { in rn5t618_battery_get_property() 411 enum power_supply_property psp, in rn5t618_battery_set_property() argument 416 switch (psp) { in rn5t618_battery_set_property() 427 switch (psp) { in rn5t618_battery_property_is_writeable() 451 switch (psp) { in rn5t618_adp_get_property() 496 switch (psp) { in rn5t618_adp_set_property() 520 switch (psp) { in rn5t618_adp_property_is_writeable() 571 switch (psp) { in rn5t618_usb_get_property() 630 switch (psp) { in rn5t618_usb_set_property() [all …]
|
A D | mp2629_charger.c | 221 enum power_supply_property psp, in mp2629_charger_battery_get_prop() argument 228 switch (psp) { in mp2629_charger_battery_get_prop() 324 enum power_supply_property psp, in mp2629_charger_battery_set_prop() argument 329 switch (psp) { in mp2629_charger_battery_set_prop() 348 enum power_supply_property psp, in mp2629_charger_usb_get_prop() argument 355 switch (psp) { in mp2629_charger_usb_get_prop() 413 enum power_supply_property psp, in mp2629_charger_usb_set_prop() argument 418 switch (psp) { in mp2629_charger_usb_set_prop() 431 enum power_supply_property psp) in mp2629_charger_battery_prop_writeable() argument 433 return (psp == POWER_SUPPLY_PROP_PRECHARGE_CURRENT) || in mp2629_charger_battery_prop_writeable() [all …]
|
/linux-6.3-rc2/arch/ia64/kernel/ |
A D | mca_drv.c | 378 pal_processor_state_info_t *psp = in is_mca_global() local 403 if (psp->tc || psp->cc || psp->rc || psp->uc) in is_mca_global() 581 pal_processor_state_info_t *psp = in recover_from_platform_error() local 584 if (psp->bc && pbci->eb && pbci->bsi == 0) { in recover_from_platform_error() 606 } else if (psp->cc && !psp->bc) { /* Cache error */ in recover_from_platform_error() 657 pal_processor_state_info_t *psp = in recover_from_processor_error() local 668 if (psp->cm == 1) in recover_from_processor_error() 674 if (psp->us || psp->ci == 0) in recover_from_processor_error() 680 if (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc)) in recover_from_processor_error() 691 if (psp->cc == 0 && (psp->bc == 0 || pbci == NULL)) in recover_from_processor_error()
|
/linux-6.3-rc2/drivers/staging/greybus/ |
A D | power_supply.c | 321 if (gbpsy->props[i].prop == psp) in get_psy_prop() 331 prop = get_psy_prop(gbpsy, psp); in is_psy_prop_writeable() 513 enum power_supply_property psp; in gb_power_supply_prop_descriptors_get() local 569 gbpsy->props[i - r].prop = psp; in gb_power_supply_prop_descriptors_get() 571 gbpsy->props_raw[i - r] = psp; in gb_power_supply_prop_descriptors_get() 599 prop = get_psy_prop(gbpsy, psp); in __gb_power_supply_property_update() 628 prop = get_psy_prop(gbpsy, psp); in __gb_power_supply_property_get() 640 switch (psp) { in __gb_power_supply_property_strval_get() 668 if (is_prop_valint(psp)) in _gb_power_supply_property_get() 754 enum power_supply_property psp, in get_property() argument [all …]
|
/linux-6.3-rc2/drivers/usb/misc/ |
A D | apple-mfi-fastcharge.c | 92 enum power_supply_property psp, in apple_mfi_fc_get_property() argument 97 dev_dbg(&mfi->udev->dev, "prop: %d\n", psp); in apple_mfi_fc_get_property() 99 switch (psp) { in apple_mfi_fc_get_property() 114 enum power_supply_property psp, in apple_mfi_fc_set_property() argument 120 dev_dbg(&mfi->udev->dev, "prop: %d\n", psp); in apple_mfi_fc_set_property() 128 switch (psp) { in apple_mfi_fc_set_property() 143 enum power_supply_property psp) in apple_mfi_fc_property_is_writeable() argument 145 switch (psp) { in apple_mfi_fc_property_is_writeable()
|
/linux-6.3-rc2/include/linux/ |
A D | power_supply.h | 257 enum power_supply_property psp, 260 enum power_supply_property psp, 268 enum power_supply_property psp); 817 enum power_supply_property psp, 852 enum power_supply_property psp, 856 enum power_supply_property psp, 860 enum power_supply_property psp, in power_supply_set_property() argument 865 enum power_supply_property psp); 893 static inline bool power_supply_is_amp_property(enum power_supply_property psp) in power_supply_is_amp_property() argument 895 switch (psp) { in power_supply_is_amp_property() [all …]
|
/linux-6.3-rc2/drivers/gpu/drm/amd/display/amdgpu_dm/ |
A D | amdgpu_dm_hdcp.c | 82 if (!psp->hdcp_context.context.initialized) { in psp_get_srm() 91 psp_hdcp_invoke(psp, hdcp_cmd->cmd_id); in psp_get_srm() 108 if (!psp->hdcp_context.context.initialized) { in psp_set_srm() 120 psp_hdcp_invoke(psp, hdcp_cmd->cmd_id); in psp_set_srm() 487 struct psp_context *psp = hdcp.config.psp.handle; in enable_assr() local 491 if (!psp->dtm_context.context.initialized) { in enable_assr() 498 mutex_lock(&psp->dtm_context.mutex); in enable_assr() 505 psp_dtm_invoke(psp, dtm_cmd->cmd_id); in enable_assr() 512 mutex_unlock(&psp->dtm_context.mutex); in enable_assr() 744 hdcp_work[i].hdcp.config.psp.handle = &adev->psp; in hdcp_create_workqueue() [all …]
|