/freebsd/sys/dev/bhnd/bcma/ |
H A D | bcma_subr.c | 160 bcma_dinfo_init_port_resource_info(device_t bus, struct bcma_devinfo *dinfo, in bcma_dinfo_init_port_resource_info() argument 182 &dinfo->resources, SYS_RES_MEMORY, in bcma_dinfo_init_port_resource_info() 188 dinfo->corecfg->core_info.core_idx, in bcma_dinfo_init_port_resource_info() 212 bcma_dinfo_init_agent(device_t bus, device_t child, struct bcma_devinfo *dinfo) in bcma_dinfo_init_agent() argument 219 KASSERT(dinfo->res_agent == NULL, ("double allocation of agent")); in bcma_dinfo_init_agent() 231 "address for core %u\n", BCMA_DINFO_COREIDX(dinfo)); in bcma_dinfo_init_agent() 240 dinfo->rid_agent = BCMA_AGENT_RID(dinfo); in bcma_dinfo_init_agent() 241 dinfo->res_agent = BHND_BUS_ALLOC_RESOURCE(bus, bus, SYS_RES_MEMORY, in bcma_dinfo_init_agent() 242 &dinfo->rid_agent, r_start, r_end, r_count, RF_ACTIVE|RF_SHAREABLE); in bcma_dinfo_init_agent() 243 if (dinfo->res_agent == NULL) { in bcma_dinfo_init_agent() [all …]
|
H A D | bcma.c | 99 struct bcma_devinfo *dinfo; in bcma_add_child() local 106 if ((dinfo = bcma_alloc_dinfo(dev)) == NULL) { in bcma_add_child() 111 device_set_ivars(child, dinfo); in bcma_add_child() 119 struct bcma_devinfo *dinfo; in bcma_child_deleted() local 125 if ((dinfo = device_get_ivars(child)) != NULL) in bcma_child_deleted() 126 bcma_free_dinfo(dev, child, dinfo); in bcma_child_deleted() 134 const struct bcma_devinfo *dinfo; in bcma_read_ivar() local 137 dinfo = device_get_ivars(child); in bcma_read_ivar() 138 ci = &dinfo->corecfg->core_info; in bcma_read_ivar() 166 *result = (uintptr_t) dinfo->pmu_info; in bcma_read_ivar() [all …]
|
H A D | bcma_bhndb.c | 94 struct bcma_devinfo *dinfo; in bcma_bhndb_suspend_child() local 103 dinfo = device_get_ivars(child); in bcma_bhndb_suspend_child() 110 if (dinfo->res_agent != NULL) in bcma_bhndb_suspend_child() 112 SYS_RES_MEMORY, dinfo->res_agent->res); in bcma_bhndb_suspend_child() 120 struct bcma_devinfo *dinfo; in bcma_bhndb_resume_child() local 129 dinfo = device_get_ivars(child); in bcma_bhndb_resume_child() 132 if (dinfo->res_agent != NULL) { in bcma_bhndb_resume_child() 134 SYS_RES_MEMORY, dinfo->res_agent->res); in bcma_bhndb_resume_child() 142 if (dinfo->res_agent != NULL) { in bcma_bhndb_resume_child() 144 SYS_RES_MEMORY, dinfo->res_agent->res); in bcma_bhndb_resume_child()
|
/freebsd/sys/powerpc/ps3/ |
H A D | ps3bus.c | 176 struct ps3bus_devinfo *dinfo) in ps3bus_resources_init() argument 184 resource_list_init(&dinfo->resources); in ps3bus_resources_init() 204 lv1_connect_interrupt_event_receive_port(dinfo->bus, in ps3bus_resources_init() 205 dinfo->dev, outlet, irq); in ps3bus_resources_init() 215 irq_type, dinfo->bus, dinfo->dev); in ps3bus_resources_init() 219 resource_list_add(&dinfo->resources, SYS_RES_IRQ, i, in ps3bus_resources_init() 240 result = lv1_map_device_mmio_region(dinfo->bus, dinfo->dev, in ps3bus_resources_init() 245 "%d.%d (%ld.%ld): %d\n", dinfo->bus, dinfo->dev, in ps3bus_resources_init() 246 dinfo->bustype, dinfo->devtype, result); in ps3bus_resources_init() 251 resource_list_add(&dinfo->resources, SYS_RES_MEMORY, i, in ps3bus_resources_init() [all …]
|
/freebsd/sys/powerpc/powermac/ |
H A D | macgpio.c | 154 struct macgpio_devinfo *dinfo; in macgpio_attach() local 169 dinfo = malloc(sizeof(*dinfo), M_MACGPIO, M_WAITOK | M_ZERO); in macgpio_attach() 170 if (ofw_bus_gen_setup_devinfo(&dinfo->mdi_obdinfo, child) != in macgpio_attach() 172 free(dinfo, M_MACGPIO); in macgpio_attach() 176 if (OF_getencprop(child, "reg", &dinfo->gpio_num, in macgpio_attach() 177 sizeof(dinfo->gpio_num)) != sizeof(dinfo->gpio_num)) { in macgpio_attach() 185 dinfo->gpio_num = -1; in macgpio_attach() 188 resource_list_init(&dinfo->mdi_resources); in macgpio_attach() 194 resource_list_add(&dinfo->mdi_resources, SYS_RES_IRQ, in macgpio_attach() 200 if (dinfo->gpio_num > 0x50) in macgpio_attach() [all …]
|
H A D | uninorth.c | 161 unin_chip_add_intr(phandle_t devnode, struct unin_chip_devinfo *dinfo) in unin_chip_add_intr() argument 168 if (dinfo->udi_ninterrupts >= 6) { in unin_chip_add_intr() 196 resource_list_add(&dinfo->udi_resources, SYS_RES_IRQ, in unin_chip_add_intr() 197 dinfo->udi_ninterrupts, irq, irq, 1); in unin_chip_add_intr() 205 dinfo->udi_interrupts[dinfo->udi_ninterrupts] = irq; in unin_chip_add_intr() 206 dinfo->udi_ninterrupts++; in unin_chip_add_intr() 211 unin_chip_add_reg(phandle_t devnode, struct unin_chip_devinfo *dinfo) in unin_chip_add_reg() argument 221 resource_list_add(&dinfo->udi_resources, SYS_RES_MEMORY, i, in unin_chip_add_reg() 277 struct unin_chip_devinfo *dinfo; in unin_chip_attach() local 336 dinfo = malloc(sizeof(*dinfo), M_UNIN, M_WAITOK | M_ZERO); in unin_chip_attach() [all …]
|
H A D | macio.c | 204 macio_add_intr(phandle_t devnode, struct macio_devinfo *dinfo) in macio_add_intr() argument 211 if (dinfo->mdi_ninterrupts >= 6) { in macio_add_intr() 239 resource_list_add(&dinfo->mdi_resources, SYS_RES_IRQ, in macio_add_intr() 240 dinfo->mdi_ninterrupts, irq, irq, 1); in macio_add_intr() 242 dinfo->mdi_interrupts[dinfo->mdi_ninterrupts] = irq; in macio_add_intr() 243 dinfo->mdi_ninterrupts++; in macio_add_intr() 248 macio_add_reg(phandle_t devnode, struct macio_devinfo *dinfo) in macio_add_reg() argument 290 resource_list_add(&dinfo->mdi_resources, SYS_RES_MEMORY, i, in macio_add_reg() 324 struct macio_devinfo *dinfo; in macio_attach() local 372 dinfo = malloc(sizeof(*dinfo), M_MACIO, M_WAITOK | M_ZERO); in macio_attach() [all …]
|
/freebsd/sys/dev/bhnd/siba/ |
H A D | siba.c | 127 const struct siba_devinfo *dinfo; in siba_read_ivar() local 131 dinfo = device_get_ivars(child); in siba_read_ivar() 132 cfg = &dinfo->core_id.core_info; in siba_read_ivar() 161 switch (dinfo->pmu_state) { in siba_read_ivar() 168 *result = (uintptr_t)dinfo->pmu.bhnd_info; in siba_read_ivar() 179 panic("invalid PMU state: %d", dinfo->pmu_state); in siba_read_ivar() 191 struct siba_devinfo *dinfo; in siba_write_ivar() local 194 dinfo = device_get_ivars(child); in siba_write_ivar() 208 switch (dinfo->pmu_state) { in siba_write_ivar() 211 dinfo->pmu.bhnd_info = (void *)value; in siba_write_ivar() [all …]
|
H A D | siba_subr.c | 49 struct siba_devinfo *dinfo); 50 static int siba_append_dinfo_region(struct siba_devinfo *dinfo, 83 struct siba_devinfo *dinfo; in siba_alloc_dinfo() local 85 dinfo = malloc(sizeof(struct siba_devinfo), M_BHND, M_NOWAIT|M_ZERO); in siba_alloc_dinfo() 86 if (dinfo == NULL) in siba_alloc_dinfo() 89 for (u_int i = 0; i < nitems(dinfo->cfg); i++) { in siba_alloc_dinfo() 90 dinfo->cfg[i] = ((struct siba_cfg_block){ in siba_alloc_dinfo() 95 dinfo->cfg_res[i] = NULL; in siba_alloc_dinfo() 96 dinfo->cfg_rid[i] = -1; in siba_alloc_dinfo() 99 resource_list_init(&dinfo->resources); in siba_alloc_dinfo() [all …]
|
H A D | siba_bhndb.c | 162 siba_bhndb_suspend_cfgblocks(device_t dev, struct siba_devinfo *dinfo) { in siba_bhndb_suspend_cfgblocks() argument 163 for (u_int i = 0; i < dinfo->core_id.num_cfg_blocks; i++) { in siba_bhndb_suspend_cfgblocks() 164 if (dinfo->cfg_res[i] == NULL) in siba_bhndb_suspend_cfgblocks() 168 SYS_RES_MEMORY, dinfo->cfg_res[i]->res); in siba_bhndb_suspend_cfgblocks() 175 struct siba_devinfo *dinfo; in siba_bhndb_suspend_child() local 181 dinfo = device_get_ivars(child); in siba_bhndb_suspend_child() 188 siba_bhndb_suspend_cfgblocks(dev, dinfo); in siba_bhndb_suspend_child() 196 struct siba_devinfo *dinfo; in siba_bhndb_resume_child() local 205 dinfo = device_get_ivars(child); in siba_bhndb_resume_child() 208 for (u_int i = 0; i < dinfo->core_id.num_cfg_blocks; i++) { in siba_bhndb_resume_child() [all …]
|
/freebsd/sys/dev/cardbus/ |
H A D | cardbus.c | 166 struct cardbus_devinfo *dinfo; in cardbus_alloc_devinfo() local 168 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in cardbus_alloc_devinfo() 169 return (&dinfo->pci); in cardbus_alloc_devinfo() 192 struct cardbus_devinfo *dinfo; in cardbus_attach_card() local 194 dinfo = (struct cardbus_devinfo *) in cardbus_attach_card() 196 if (dinfo == NULL) in cardbus_attach_card() 198 if (dinfo->pci.cfg.mfdev) in cardbus_attach_card() 204 pci_freecfg((struct pci_devinfo *)dinfo); in cardbus_attach_card() 207 dinfo->pci.cfg.dev = child; in cardbus_attach_card() 208 resource_list_init(&dinfo->pci.resources); in cardbus_attach_card() [all …]
|
/freebsd/sys/dev/pci/ |
H A D | pci.c | 458 struct pci_devinfo *dinfo = NULL; in pci_find_dbsf() local 460 STAILQ_FOREACH(dinfo, &pci_devq, pci_links) { in pci_find_dbsf() 461 if ((dinfo->cfg.domain == domain) && in pci_find_dbsf() 462 (dinfo->cfg.bus == bus) && in pci_find_dbsf() 463 (dinfo->cfg.slot == slot) && in pci_find_dbsf() 464 (dinfo->cfg.func == func)) { in pci_find_dbsf() 469 return (dinfo != NULL ? dinfo->cfg.dev : NULL); in pci_find_dbsf() 477 struct pci_devinfo *dinfo; in pci_find_device() local 479 STAILQ_FOREACH(dinfo, &pci_devq, pci_links) { in pci_find_device() 480 if ((dinfo->cfg.vendor == vendor) && in pci_find_device() [all …]
|
H A D | pci_iov.c | 96 static int pci_iov_delete_iov_children(struct pci_devinfo *dinfo); 118 struct pci_devinfo *dinfo; in pci_iov_attach_method() local 125 dinfo = device_get_ivars(dev); in pci_iov_attach_method() 143 iov = malloc(sizeof(*dinfo->cfg.iov), M_SRIOV, M_WAITOK | M_ZERO); in pci_iov_attach_method() 146 if (dinfo->cfg.iov != NULL) { in pci_iov_attach_method() 172 dinfo->cfg.iov = iov; in pci_iov_attach_method() 173 iov->iov_cdev->si_drv1 = dinfo; in pci_iov_attach_method() 190 struct pci_devinfo *dinfo; in pci_iov_detach_method() local 195 dinfo = device_get_ivars(dev); in pci_iov_detach_method() 196 iov = dinfo->cfg.iov; in pci_iov_detach_method() [all …]
|
/freebsd/sys/powerpc/pseries/ |
H A D | vdevice.c | 128 struct vdevice_devinfo *dinfo; in vdevice_attach() local 137 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in vdevice_attach() 139 if (ofw_bus_gen_setup_devinfo(&dinfo->mdi_obdinfo, in vdevice_attach() 141 free(dinfo, M_DEVBUF); in vdevice_attach() 144 resource_list_init(&dinfo->mdi_resources); in vdevice_attach() 146 ofw_bus_intr_to_rl(dev, child, &dinfo->mdi_resources, NULL); in vdevice_attach() 151 dinfo->mdi_obdinfo.obd_name); in vdevice_attach() 152 ofw_bus_gen_destroy_devinfo(&dinfo->mdi_obdinfo); in vdevice_attach() 153 free(dinfo, M_DEVBUF); in vdevice_attach() 156 device_set_ivars(cdev, dinfo); in vdevice_attach() [all …]
|
/freebsd/sys/powerpc/psim/ |
H A D | iobus.c | 143 iobus_add_intr(phandle_t devnode, struct iobus_devinfo *dinfo) in iobus_add_intr() argument 148 resource_list_add(&dinfo->id_resources, in iobus_add_intr() 151 dinfo->id_interrupt = intr; in iobus_add_intr() 155 iobus_add_reg(phandle_t devnode, struct iobus_devinfo *dinfo, in iobus_add_reg() argument 161 size = OF_getprop(devnode, "reg", dinfo->id_reg,sizeof(dinfo->id_reg)); in iobus_add_reg() 164 dinfo->id_nregs = size / (sizeof(dinfo->id_reg[0])); in iobus_add_reg() 166 for (i = 0; i < dinfo->id_nregs; i+= 3) { in iobus_add_reg() 172 dinfo->id_reg[i+1] -= iobus_off; in iobus_add_reg() 174 resource_list_add(&dinfo->id_resources, in iobus_add_reg() 176 dinfo->id_reg[i+1], in iobus_add_reg() [all …]
|
/freebsd/sys/powerpc/ofw/ |
H A D | ofw_pcibus.c | 155 struct ofw_pcibus_devinfo *dinfo; in ofw_pcibus_alloc_devinfo() local 157 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in ofw_pcibus_alloc_devinfo() 158 return (&dinfo->opd_dinfo); in ofw_pcibus_alloc_devinfo() 166 struct ofw_pcibus_devinfo *dinfo; in ofw_pcibus_enum_devtree() local 202 dinfo = (struct ofw_pcibus_devinfo *)pci_read_device(pcib, dev, in ofw_pcibus_enum_devtree() 204 if (dinfo == NULL) in ofw_pcibus_enum_devtree() 206 if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) != in ofw_pcibus_enum_devtree() 208 pci_freecfg((struct pci_devinfo *)dinfo); in ofw_pcibus_enum_devtree() 211 dinfo->opd_dma_tag = NULL; in ofw_pcibus_enum_devtree() 212 pci_add_child(dev, (struct pci_devinfo *)dinfo); in ofw_pcibus_enum_devtree() [all …]
|
/freebsd/sys/dev/adb/ |
H A D | adb_bus.c | 193 struct adb_devinfo *dinfo; in adb_probe_nomatch() local 196 dinfo = device_get_ivars(child); in adb_probe_nomatch() 199 adb_device_string[dinfo->default_address],dinfo->address); in adb_probe_nomatch() 232 struct adb_devinfo *dinfo; in adb_print_child() local 235 dinfo = device_get_ivars(child); in adb_print_child() 238 printf(" at device %d",dinfo->address); in adb_print_child() 248 struct adb_devinfo *dinfo; in adb_send_packet() local 252 dinfo = device_get_ivars(dev); in adb_send_packet() 254 command_byte |= dinfo->address << 4; in adb_send_packet() 266 struct adb_devinfo *dinfo; in adb_set_autopoll() local [all …]
|
/freebsd/sys/dev/superio/ |
H A D | superio.c | 685 struct superio_devinfo *dinfo; in superio_add_known_child() local 694 dinfo = device_get_ivars(child); in superio_add_known_child() 695 dinfo->ldn = ldn; in superio_add_known_child() 696 dinfo->type = type; in superio_add_known_child() 698 dinfo->iobase = sio_ldn_readw(sc, ldn, 0x60); in superio_add_known_child() 699 dinfo->iobase2 = sio_ldn_readw(sc, ldn, 0x62); in superio_add_known_child() 700 dinfo->irq = sio_ldn_readw(sc, ldn, 0x70); in superio_add_known_child() 701 dinfo->dma = sio_ldn_readw(sc, ldn, 0x74); in superio_add_known_child() 703 STAILQ_INSERT_TAIL(&sc->devlist, dinfo, link); in superio_add_known_child() 751 struct superio_devinfo *dinfo; in superio_add_child() local [all …]
|
/freebsd/sys/dev/gpio/ |
H A D | ofw_gpiobus.c | 147 struct ofw_gpiobus_devinfo *dinfo; in ofw_gpiobus_add_fdt_child() local 163 dinfo = ofw_gpiobus_setup_devinfo(bus, childdev, child); in ofw_gpiobus_add_fdt_child() 164 if (dinfo == NULL) { in ofw_gpiobus_add_fdt_child() 169 ofw_gpiobus_destroy_devinfo(bus, dinfo); in ofw_gpiobus_add_fdt_child() 174 devi = &dinfo->opd_dinfo; in ofw_gpiobus_add_fdt_child() 218 struct ofw_gpiobus_devinfo *dinfo; in ofw_gpiobus_setup_devinfo() local 221 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_NOWAIT | M_ZERO); in ofw_gpiobus_setup_devinfo() 222 if (dinfo == NULL) in ofw_gpiobus_setup_devinfo() 224 if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, node) != 0) { in ofw_gpiobus_setup_devinfo() 225 free(dinfo, M_DEVBUF); in ofw_gpiobus_setup_devinfo() [all …]
|
/freebsd/sys/dev/acpica/ |
H A D | acpi_pci.c | 132 struct acpi_pci_devinfo *dinfo; in acpi_pci_alloc_devinfo() local 134 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in acpi_pci_alloc_devinfo() 135 return (&dinfo->ap_dinfo); in acpi_pci_alloc_devinfo() 141 struct acpi_pci_devinfo *dinfo; in acpi_pci_read_ivar() local 143 dinfo = device_get_ivars(child); in acpi_pci_read_ivar() 146 *result = (uintptr_t)dinfo->ap_handle; in acpi_pci_read_ivar() 149 *result = (uintptr_t)dinfo->ap_flags; in acpi_pci_read_ivar() 158 struct acpi_pci_devinfo *dinfo; in acpi_pci_write_ivar() local 160 dinfo = device_get_ivars(child); in acpi_pci_write_ivar() 163 dinfo->ap_handle = (ACPI_HANDLE)value; in acpi_pci_write_ivar() [all …]
|
/freebsd/sys/dev/spibus/ |
H A D | ofw_spibus.c | 78 struct ofw_spibus_devinfo *dinfo; in ofw_spibus_attach() local 139 dinfo = malloc(sizeof(struct ofw_spibus_devinfo), M_DEVBUF, in ofw_spibus_attach() 141 if (dinfo == NULL) in ofw_spibus_attach() 143 dinfo->opd_dinfo.cs = paddr; in ofw_spibus_attach() 144 dinfo->opd_dinfo.clock = clock; in ofw_spibus_attach() 145 dinfo->opd_dinfo.mode = mode; in ofw_spibus_attach() 146 if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) != in ofw_spibus_attach() 148 free(dinfo, M_DEVBUF); in ofw_spibus_attach() 153 resource_list_init(&dinfo->opd_dinfo.rl); in ofw_spibus_attach() 155 &dinfo->opd_dinfo.rl, NULL); in ofw_spibus_attach() [all …]
|
/freebsd/sys/powerpc/powernv/ |
H A D | powernv_centaur.c | 90 struct ofw_bus_devinfo *dinfo; in powernv_centaur_attach() local 94 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in powernv_centaur_attach() 95 if (ofw_bus_gen_setup_devinfo(dinfo, child) != 0) { in powernv_centaur_attach() 96 free(dinfo, M_DEVBUF); in powernv_centaur_attach() 102 dinfo->obd_name); in powernv_centaur_attach() 103 ofw_bus_gen_destroy_devinfo(dinfo); in powernv_centaur_attach() 104 free(dinfo, M_DEVBUF); in powernv_centaur_attach() 107 device_set_ivars(cdev, dinfo); in powernv_centaur_attach()
|
H A D | powernv_xscom.c | 90 struct ofw_bus_devinfo *dinfo; in powernv_xscom_attach() local 94 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in powernv_xscom_attach() 95 if (ofw_bus_gen_setup_devinfo(dinfo, child) != 0) { in powernv_xscom_attach() 96 free(dinfo, M_DEVBUF); in powernv_xscom_attach() 102 dinfo->obd_name); in powernv_xscom_attach() 103 ofw_bus_gen_destroy_devinfo(dinfo); in powernv_xscom_attach() 104 free(dinfo, M_DEVBUF); in powernv_xscom_attach() 107 device_set_ivars(cdev, dinfo); in powernv_xscom_attach()
|
H A D | opal_i2cm.c | 91 struct ofw_bus_devinfo *dinfo; in opal_i2cm_attach() local 95 dinfo = malloc(sizeof(*dinfo), M_DEVBUF, M_WAITOK | M_ZERO); in opal_i2cm_attach() 96 if (ofw_bus_gen_setup_devinfo(dinfo, child) != 0) { in opal_i2cm_attach() 97 free(dinfo, M_DEVBUF); in opal_i2cm_attach() 103 dinfo->obd_name); in opal_i2cm_attach() 104 ofw_bus_gen_destroy_devinfo(dinfo); in opal_i2cm_attach() 105 free(dinfo, M_DEVBUF); in opal_i2cm_attach() 108 device_set_ivars(cdev, dinfo); in opal_i2cm_attach()
|
/freebsd/sys/dev/bhnd/cores/pcie2/ |
H A D | bhnd_pcie2.c | 133 struct bhnd_pcie2_devinfo *dinfo; in bhnd_pcie2_get_resource_list() local 138 dinfo = device_get_ivars(child); in bhnd_pcie2_get_resource_list() 139 return (&dinfo->resources); in bhnd_pcie2_get_resource_list() 145 struct bhnd_pcie2_devinfo *dinfo; in bhnd_pcie2_add_child() local 152 dinfo = malloc(sizeof(struct bhnd_pcie2_devinfo), M_DEVBUF, M_NOWAIT); in bhnd_pcie2_add_child() 153 if (dinfo == NULL) { in bhnd_pcie2_add_child() 158 resource_list_init(&dinfo->resources); in bhnd_pcie2_add_child() 160 device_set_ivars(child, dinfo); in bhnd_pcie2_add_child() 167 struct bhnd_pcie2_devinfo *dinfo; in bhnd_pcie2_child_deleted() local 172 dinfo = device_get_ivars(child); in bhnd_pcie2_child_deleted() [all …]
|