/Linux-v5.15/drivers/clk/sprd/ |
D | sc9863a-clk.c | 57 [CLK_MPLL0_GATE] = &mpll0_gate.common.hw, 58 [CLK_DPLL0_GATE] = &dpll0_gate.common.hw, 59 [CLK_LPLL_GATE] = &lpll_gate.common.hw, 60 [CLK_GPLL_GATE] = &gpll_gate.common.hw, 61 [CLK_DPLL1_GATE] = &dpll1_gate.common.hw, 62 [CLK_MPLL1_GATE] = &mpll1_gate.common.hw, 63 [CLK_MPLL2_GATE] = &mpll2_gate.common.hw, 64 [CLK_ISPPLL_GATE] = &isppll_gate.common.hw, 93 static CLK_FIXED_FACTOR_HW(twpll_768m, "twpll-768m", &twpll.common.hw, 2, 1, 0); 94 static CLK_FIXED_FACTOR_HW(twpll_384m, "twpll-384m", &twpll.common.hw, 4, 1, 0); [all …]
|
/Linux-v5.15/drivers/net/ethernet/intel/ixgbe/ |
D | ixgbe_phy.c | 12 static void ixgbe_i2c_start(struct ixgbe_hw *hw); 13 static void ixgbe_i2c_stop(struct ixgbe_hw *hw); 14 static s32 ixgbe_clock_in_i2c_byte(struct ixgbe_hw *hw, u8 *data); 15 static s32 ixgbe_clock_out_i2c_byte(struct ixgbe_hw *hw, u8 data); 16 static s32 ixgbe_get_i2c_ack(struct ixgbe_hw *hw); 17 static s32 ixgbe_clock_in_i2c_bit(struct ixgbe_hw *hw, bool *data); 18 static s32 ixgbe_clock_out_i2c_bit(struct ixgbe_hw *hw, bool data); 19 static void ixgbe_raise_i2c_clk(struct ixgbe_hw *hw, u32 *i2cctl); 20 static void ixgbe_lower_i2c_clk(struct ixgbe_hw *hw, u32 *i2cctl); 21 static s32 ixgbe_set_i2c_data(struct ixgbe_hw *hw, u32 *i2cctl, bool data); [all …]
|
D | ixgbe_common.c | 13 static s32 ixgbe_acquire_eeprom(struct ixgbe_hw *hw); 14 static s32 ixgbe_get_eeprom_semaphore(struct ixgbe_hw *hw); 15 static void ixgbe_release_eeprom_semaphore(struct ixgbe_hw *hw); 16 static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw); 17 static void ixgbe_standby_eeprom(struct ixgbe_hw *hw); 18 static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data, 20 static u16 ixgbe_shift_in_eeprom_bits(struct ixgbe_hw *hw, u16 count); 21 static void ixgbe_raise_eeprom_clk(struct ixgbe_hw *hw, u32 *eec); 22 static void ixgbe_lower_eeprom_clk(struct ixgbe_hw *hw, u32 *eec); 23 static void ixgbe_release_eeprom(struct ixgbe_hw *hw); [all …]
|
D | ixgbe_x540.c | 19 static s32 ixgbe_update_flash_X540(struct ixgbe_hw *hw); 20 static s32 ixgbe_poll_flash_update_done_X540(struct ixgbe_hw *hw); 21 static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw); 22 static void ixgbe_release_swfw_sync_semaphore(struct ixgbe_hw *hw); 24 enum ixgbe_media_type ixgbe_get_media_type_X540(struct ixgbe_hw *hw) in ixgbe_get_media_type_X540() argument 29 s32 ixgbe_get_invariants_X540(struct ixgbe_hw *hw) in ixgbe_get_invariants_X540() argument 31 struct ixgbe_mac_info *mac = &hw->mac; in ixgbe_get_invariants_X540() 32 struct ixgbe_phy_info *phy = &hw->phy; in ixgbe_get_invariants_X540() 43 mac->max_msix_vectors = ixgbe_get_pcie_msix_count_generic(hw); in ixgbe_get_invariants_X540() 54 s32 ixgbe_setup_mac_link_X540(struct ixgbe_hw *hw, ixgbe_link_speed speed, in ixgbe_setup_mac_link_X540() argument [all …]
|
D | ixgbe_82599.c | 19 static void ixgbe_disable_tx_laser_multispeed_fiber(struct ixgbe_hw *hw); 20 static void ixgbe_enable_tx_laser_multispeed_fiber(struct ixgbe_hw *hw); 21 static void ixgbe_flap_tx_laser_multispeed_fiber(struct ixgbe_hw *hw); 24 static s32 ixgbe_setup_mac_link_smartspeed(struct ixgbe_hw *hw, 27 static void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw); 28 static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw, 30 static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw, 33 static s32 ixgbe_setup_copper_link_82599(struct ixgbe_hw *hw, 36 static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw); 37 static s32 ixgbe_read_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset, [all …]
|
/Linux-v5.15/drivers/spi/ |
D | spi-au1550.c | 52 void (*rx_word)(struct au1550_spi *hw); 53 void (*tx_word)(struct au1550_spi *hw); 55 irqreturn_t (*irq_callback)(struct au1550_spi *hw); 89 static void au1550_spi_bits_handlers_set(struct au1550_spi *hw, int bpw); 101 static u32 au1550_spi_baudcfg(struct au1550_spi *hw, unsigned int speed_hz) in au1550_spi_baudcfg() argument 103 u32 mainclk_hz = hw->pdata->mainclk_hz; in au1550_spi_baudcfg() 124 static inline void au1550_spi_mask_ack_all(struct au1550_spi *hw) in au1550_spi_mask_ack_all() argument 126 hw->regs->psc_spimsk = in au1550_spi_mask_ack_all() 132 hw->regs->psc_spievent = in au1550_spi_mask_ack_all() 139 static void au1550_spi_reset_fifos(struct au1550_spi *hw) in au1550_spi_reset_fifos() argument [all …]
|
D | spi-altera-core.c | 43 static int altr_spi_writel(struct altera_spi *hw, unsigned int reg, in altr_spi_writel() argument 48 ret = regmap_write(hw->regmap, hw->regoff + reg, val); in altr_spi_writel() 50 dev_err(hw->dev, "fail to write reg 0x%x val 0x%x: %d\n", in altr_spi_writel() 56 static int altr_spi_readl(struct altera_spi *hw, unsigned int reg, in altr_spi_readl() argument 61 ret = regmap_read(hw->regmap, hw->regoff + reg, val); in altr_spi_readl() 63 dev_err(hw->dev, "fail to read reg 0x%x: %d\n", reg, ret); in altr_spi_readl() 75 struct altera_spi *hw = altera_spi_to_hw(spi); in altera_spi_set_cs() local 78 hw->imr &= ~ALTERA_SPI_CONTROL_SSO_MSK; in altera_spi_set_cs() 79 altr_spi_writel(hw, ALTERA_SPI_CONTROL, hw->imr); in altera_spi_set_cs() 80 altr_spi_writel(hw, ALTERA_SPI_SLAVE_SEL, 0); in altera_spi_set_cs() [all …]
|
D | spi-s3c24xx.c | 95 struct s3c24xx_spi *hw = to_hw(spi); in s3c24xx_spi_chipsel() local 102 hw->set_cs(hw->pdata, spi->chip_select, cspol^1); in s3c24xx_spi_chipsel() 103 writeb(cs->spcon, hw->regs + S3C2410_SPCON); in s3c24xx_spi_chipsel() 108 hw->regs + S3C2410_SPCON); in s3c24xx_spi_chipsel() 109 hw->set_cs(hw->pdata, spi->chip_select, cspol); in s3c24xx_spi_chipsel() 117 struct s3c24xx_spi *hw = to_hw(spi); in s3c24xx_spi_update_state() local 142 clk = clk_get_rate(hw->clk); in s3c24xx_spi_update_state() 162 struct s3c24xx_spi *hw = to_hw(spi); in s3c24xx_spi_setupxfer() local 167 writeb(cs->sppre, hw->regs + S3C2410_SPPRE); in s3c24xx_spi_setupxfer() 175 struct s3c24xx_spi *hw = to_hw(spi); in s3c24xx_spi_setup() local [all …]
|
D | spi-oc-tiny.c | 61 struct tiny_spi *hw = tiny_spi_to_hw(spi); in tiny_spi_baud() local 63 return min(DIV_ROUND_UP(hw->freq, hz * 2), (1U << hw->baudwidth)) - 1; in tiny_spi_baud() 69 struct tiny_spi *hw = tiny_spi_to_hw(spi); in tiny_spi_setup_transfer() local 70 unsigned int baud = hw->baud; in tiny_spi_setup_transfer() 73 if (t->speed_hz && t->speed_hz != hw->speed_hz) in tiny_spi_setup_transfer() 76 writel(baud, hw->base + TINY_SPI_BAUD); in tiny_spi_setup_transfer() 77 writel(hw->mode, hw->base + TINY_SPI_CONTROL); in tiny_spi_setup_transfer() 83 struct tiny_spi *hw = tiny_spi_to_hw(spi); in tiny_spi_setup() local 85 if (spi->max_speed_hz != hw->speed_hz) { in tiny_spi_setup() 86 hw->speed_hz = spi->max_speed_hz; in tiny_spi_setup() [all …]
|
/Linux-v5.15/drivers/net/ethernet/atheros/alx/ |
D | hw.c | 46 static int alx_wait_mdio_idle(struct alx_hw *hw) in alx_wait_mdio_idle() argument 52 val = alx_read_mem32(hw, ALX_MDIO); in alx_wait_mdio_idle() 61 static int alx_read_phy_core(struct alx_hw *hw, bool ext, u8 dev, in alx_read_phy_core() argument 70 clk_sel = hw->link_speed != SPEED_UNKNOWN ? in alx_read_phy_core() 77 alx_write_mem32(hw, ALX_MDIO_EXTN, val); in alx_read_phy_core() 88 alx_write_mem32(hw, ALX_MDIO, val); in alx_read_phy_core() 90 err = alx_wait_mdio_idle(hw); in alx_read_phy_core() 93 val = alx_read_mem32(hw, ALX_MDIO); in alx_read_phy_core() 98 static int alx_write_phy_core(struct alx_hw *hw, bool ext, u8 dev, in alx_write_phy_core() argument 104 clk_sel = hw->link_speed != SPEED_UNKNOWN ? in alx_write_phy_core() [all …]
|
/Linux-v5.15/drivers/net/ethernet/intel/i40e/ |
D | i40e_adminq.c | 10 static void i40e_resume_aq(struct i40e_hw *hw); 18 static void i40e_adminq_init_regs(struct i40e_hw *hw) in i40e_adminq_init_regs() argument 21 if (i40e_is_vf(hw)) { in i40e_adminq_init_regs() 22 hw->aq.asq.tail = I40E_VF_ATQT1; in i40e_adminq_init_regs() 23 hw->aq.asq.head = I40E_VF_ATQH1; in i40e_adminq_init_regs() 24 hw->aq.asq.len = I40E_VF_ATQLEN1; in i40e_adminq_init_regs() 25 hw->aq.asq.bal = I40E_VF_ATQBAL1; in i40e_adminq_init_regs() 26 hw->aq.asq.bah = I40E_VF_ATQBAH1; in i40e_adminq_init_regs() 27 hw->aq.arq.tail = I40E_VF_ARQT1; in i40e_adminq_init_regs() 28 hw->aq.arq.head = I40E_VF_ARQH1; in i40e_adminq_init_regs() [all …]
|
D | i40e_nvm.c | 16 i40e_status i40e_init_nvm(struct i40e_hw *hw) in i40e_init_nvm() argument 18 struct i40e_nvm_info *nvm = &hw->nvm; in i40e_init_nvm() 26 gens = rd32(hw, I40E_GLNVM_GENS); in i40e_init_nvm() 33 fla = rd32(hw, I40E_GLNVM_FLA); in i40e_init_nvm() 41 i40e_debug(hw, I40E_DEBUG_NVM, "NVM init error: unsupported blank mode.\n"); in i40e_init_nvm() 55 i40e_status i40e_acquire_nvm(struct i40e_hw *hw, in i40e_acquire_nvm() argument 62 if (hw->nvm.blank_nvm_mode) in i40e_acquire_nvm() 65 ret_code = i40e_aq_request_resource(hw, I40E_NVM_RESOURCE_ID, access, in i40e_acquire_nvm() 68 gtime = rd32(hw, I40E_GLVFGEN_TIMER); in i40e_acquire_nvm() 71 hw->nvm.hw_semaphore_timeout = I40E_MS_TO_GTIME(time_left) + gtime; in i40e_acquire_nvm() [all …]
|
/Linux-v5.15/drivers/clk/meson/ |
D | g12a.c | 63 .hw.init = &(struct clk_init_data){ 80 .hw.init = &(struct clk_init_data){ 84 &g12a_fixed_pll_dco.hw 128 .hw.init = &(struct clk_init_data){ 147 .hw.init = &(struct clk_init_data){ 151 &g12a_sys_pll_dco.hw 187 .hw.init = &(struct clk_init_data){ 206 .hw.init = &(struct clk_init_data){ 210 &g12b_sys1_pll_dco.hw 222 .hw.init = &(struct clk_init_data) { [all …]
|
D | meson8b.c | 88 .hw.init = &(struct clk_init_data){ 107 .hw.init = &(struct clk_init_data){ 111 &meson8b_fixed_pll_dco.hw 154 .hw.init = &(struct clk_init_data){ 174 .hw.init = &(struct clk_init_data){ 178 &meson8b_hdmi_pll_dco.hw 192 .hw.init = &(struct clk_init_data){ 196 &meson8b_hdmi_pll_dco.hw 232 .hw.init = &(struct clk_init_data){ 251 .hw.init = &(struct clk_init_data){ [all …]
|
D | gxbb.c | 119 .hw.init = &(struct clk_init_data){ 136 .hw.init = &(struct clk_init_data){ 140 &gxbb_fixed_pll_dco.hw 153 .hw.init = &(struct clk_init_data){ 196 .hw.init = &(struct clk_init_data){ 200 &gxbb_hdmi_pll_pre_mult.hw 250 .hw.init = &(struct clk_init_data){ 272 .hw.init = &(struct clk_init_data){ 276 &gxbb_hdmi_pll_dco.hw 290 .hw.init = &(struct clk_init_data){ [all …]
|
/Linux-v5.15/drivers/net/ethernet/intel/ixgb/ |
D | ixgb_hw.c | 18 static u32 ixgb_hash_mc_addr(struct ixgb_hw *hw, u8 * mc_addr); 20 static void ixgb_mta_set(struct ixgb_hw *hw, u32 hash_value); 22 static void ixgb_get_bus_info(struct ixgb_hw *hw); 24 static bool ixgb_link_reset(struct ixgb_hw *hw); 26 static void ixgb_optics_reset(struct ixgb_hw *hw); 28 static void ixgb_optics_reset_bcm(struct ixgb_hw *hw); 30 static ixgb_phy_type ixgb_identify_phy(struct ixgb_hw *hw); 32 static void ixgb_clear_hw_cntrs(struct ixgb_hw *hw); 34 static void ixgb_clear_vfta(struct ixgb_hw *hw); 36 static void ixgb_init_rx_addrs(struct ixgb_hw *hw); [all …]
|
D | ixgb_ee.c | 9 static u16 ixgb_shift_in_bits(struct ixgb_hw *hw); 11 static void ixgb_shift_out_bits(struct ixgb_hw *hw, 14 static void ixgb_standby_eeprom(struct ixgb_hw *hw); 16 static bool ixgb_wait_eeprom_command(struct ixgb_hw *hw); 18 static void ixgb_cleanup_eeprom(struct ixgb_hw *hw); 27 ixgb_raise_clock(struct ixgb_hw *hw, in ixgb_raise_clock() argument 34 IXGB_WRITE_REG(hw, EECD, *eecd_reg); in ixgb_raise_clock() 35 IXGB_WRITE_FLUSH(hw); in ixgb_raise_clock() 46 ixgb_lower_clock(struct ixgb_hw *hw, in ixgb_lower_clock() argument 53 IXGB_WRITE_REG(hw, EECD, *eecd_reg); in ixgb_lower_clock() [all …]
|
/Linux-v5.15/drivers/net/ethernet/intel/iavf/ |
D | iavf_adminq.c | 16 static void iavf_adminq_init_regs(struct iavf_hw *hw) in iavf_adminq_init_regs() argument 19 hw->aq.asq.tail = IAVF_VF_ATQT1; in iavf_adminq_init_regs() 20 hw->aq.asq.head = IAVF_VF_ATQH1; in iavf_adminq_init_regs() 21 hw->aq.asq.len = IAVF_VF_ATQLEN1; in iavf_adminq_init_regs() 22 hw->aq.asq.bal = IAVF_VF_ATQBAL1; in iavf_adminq_init_regs() 23 hw->aq.asq.bah = IAVF_VF_ATQBAH1; in iavf_adminq_init_regs() 24 hw->aq.arq.tail = IAVF_VF_ARQT1; in iavf_adminq_init_regs() 25 hw->aq.arq.head = IAVF_VF_ARQH1; in iavf_adminq_init_regs() 26 hw->aq.arq.len = IAVF_VF_ARQLEN1; in iavf_adminq_init_regs() 27 hw->aq.arq.bal = IAVF_VF_ARQBAL1; in iavf_adminq_init_regs() [all …]
|
/Linux-v5.15/drivers/isdn/hardware/mISDN/ |
D | mISDNinfineon.c | 267 struct inf_hw *hw = dev_id; in diva_irq() local 270 spin_lock(&hw->lock); in diva_irq() 271 val = inb((u32)hw->cfg.start + DIVA_PCI_CTRL); in diva_irq() 273 spin_unlock(&hw->lock); in diva_irq() 276 hw->irqcnt++; in diva_irq() 277 mISDNipac_irq(&hw->ipac, irqloops); in diva_irq() 278 spin_unlock(&hw->lock); in diva_irq() 285 struct inf_hw *hw = dev_id; in diva20x_irq() local 288 spin_lock(&hw->lock); in diva20x_irq() 289 val = readb(hw->cfg.p); in diva20x_irq() [all …]
|
/Linux-v5.15/drivers/scsi/csiostor/ |
D | csio_isr.c | 47 struct csio_hw *hw = (struct csio_hw *) dev_id; in csio_nondata_isr() local 51 if (unlikely(!hw)) in csio_nondata_isr() 54 if (unlikely(pci_channel_offline(hw->pdev))) { in csio_nondata_isr() 55 CSIO_INC_STATS(hw, n_pcich_offline); in csio_nondata_isr() 59 spin_lock_irqsave(&hw->lock, flags); in csio_nondata_isr() 60 csio_hw_slow_intr_handler(hw); in csio_nondata_isr() 61 rv = csio_mb_isr_handler(hw); in csio_nondata_isr() 63 if (rv == 0 && !(hw->flags & CSIO_HWF_FWEVT_PENDING)) { in csio_nondata_isr() 64 hw->flags |= CSIO_HWF_FWEVT_PENDING; in csio_nondata_isr() 65 spin_unlock_irqrestore(&hw->lock, flags); in csio_nondata_isr() [all …]
|
D | csio_init.c | 69 struct csio_hw *hw = file->private_data - mem; in csio_mem_read() local 84 ret = hw->chip_ops->chip_mc_read(hw, 0, pos, in csio_mem_read() 87 ret = hw->chip_ops->chip_edc_read(hw, mem, pos, in csio_mem_read() 113 void csio_add_debugfs_mem(struct csio_hw *hw, const char *name, in csio_add_debugfs_mem() argument 116 debugfs_create_file_size(name, S_IRUSR, hw->debugfs_root, in csio_add_debugfs_mem() 117 (void *)hw + idx, &csio_mem_debugfs_fops, in csio_add_debugfs_mem() 121 static int csio_setup_debugfs(struct csio_hw *hw) in csio_setup_debugfs() argument 125 if (IS_ERR_OR_NULL(hw->debugfs_root)) in csio_setup_debugfs() 128 i = csio_rd_reg32(hw, MA_TARGET_MEM_ENABLE_A); in csio_setup_debugfs() 130 csio_add_debugfs_mem(hw, "edc0", MEM_EDC0, 5); in csio_setup_debugfs() [all …]
|
D | csio_hw.c | 102 static void csio_hw_initialize(struct csio_hw *hw); 103 static void csio_evtq_stop(struct csio_hw *hw); 104 static void csio_evtq_start(struct csio_hw *hw); 106 int csio_is_hw_ready(struct csio_hw *hw) in csio_is_hw_ready() argument 108 return csio_match_state(hw, csio_hws_ready); in csio_is_hw_ready() 111 int csio_is_hw_removing(struct csio_hw *hw) in csio_is_hw_removing() argument 113 return csio_match_state(hw, csio_hws_removing); in csio_is_hw_removing() 133 csio_hw_wait_op_done_val(struct csio_hw *hw, int reg, uint32_t mask, in csio_hw_wait_op_done_val() argument 138 val = csio_rd_reg32(hw, reg); in csio_hw_wait_op_done_val() 163 csio_hw_tp_wr_bits_indirect(struct csio_hw *hw, unsigned int addr, in csio_hw_tp_wr_bits_indirect() argument [all …]
|
/Linux-v5.15/drivers/net/ethernet/atheros/atl1c/ |
D | atl1c_hw.c | 19 int atl1c_check_eeprom_exist(struct atl1c_hw *hw) in atl1c_check_eeprom_exist() argument 23 AT_READ_REG(hw, REG_TWSI_DEBUG, &data); in atl1c_check_eeprom_exist() 27 AT_READ_REG(hw, REG_MASTER_CTRL, &data); in atl1c_check_eeprom_exist() 33 void atl1c_hw_set_mac_addr(struct atl1c_hw *hw, u8 *mac_addr) in atl1c_hw_set_mac_addr() argument 45 AT_WRITE_REG_ARRAY(hw, REG_MAC_STA_ADDR, 0, value); in atl1c_hw_set_mac_addr() 49 AT_WRITE_REG_ARRAY(hw, REG_MAC_STA_ADDR, 1, value); in atl1c_hw_set_mac_addr() 53 static bool atl1c_read_current_addr(struct atl1c_hw *hw, u8 *eth_addr) in atl1c_read_current_addr() argument 57 AT_READ_REG(hw, REG_MAC_STA_ADDR, &addr[0]); in atl1c_read_current_addr() 58 AT_READ_REG(hw, REG_MAC_STA_ADDR + 4, &addr[1]); in atl1c_read_current_addr() 70 static int atl1c_get_permanent_address(struct atl1c_hw *hw) in atl1c_get_permanent_address() argument [all …]
|
/Linux-v5.15/drivers/net/ethernet/intel/e1000/ |
D | e1000_hw.c | 10 static s32 e1000_check_downshift(struct e1000_hw *hw); 11 static s32 e1000_check_polarity(struct e1000_hw *hw, 13 static void e1000_clear_hw_cntrs(struct e1000_hw *hw); 14 static void e1000_clear_vfta(struct e1000_hw *hw); 15 static s32 e1000_config_dsp_after_link_change(struct e1000_hw *hw, 17 static s32 e1000_config_fc_after_link_up(struct e1000_hw *hw); 18 static s32 e1000_detect_gig_phy(struct e1000_hw *hw); 19 static s32 e1000_get_auto_rd_done(struct e1000_hw *hw); 20 static s32 e1000_get_cable_length(struct e1000_hw *hw, u16 *min_length, 22 static s32 e1000_get_phy_cfg_done(struct e1000_hw *hw); [all …]
|
/Linux-v5.15/drivers/clk/sunxi-ng/ |
D | ccu-sun5i.c | 34 .hw.init = CLK_HW_INIT("pll-core", 74 .hw.init = CLK_HW_INIT("pll-audio-base", 91 .hw.init = CLK_HW_INIT("pll-video0", 106 .hw.init = CLK_HW_INIT("pll-ve", 119 .hw.init = CLK_HW_INIT("pll-ddr-base", 134 .hw.init = CLK_HW_INIT("pll-ddr-other", "pll-ddr-base", 148 .hw.init = CLK_HW_INIT("pll-periph", 165 .hw.init = CLK_HW_INIT("pll-video1", 190 .hw.init = CLK_HW_INIT_PARENTS("cpu", 214 .hw.init = CLK_HW_INIT_PARENTS("ahb", [all …]
|