Home
last modified time | relevance | path

Searched refs:reg_data (Results 1 – 25 of 94) sorted by relevance

1234

/Linux-v5.4/drivers/power/supply/
Dmax14577_charger.c51 u8 reg_data; in max14577_get_charger_state() local
64 ret = max14577_read_reg(rmap, MAX14577_CHG_REG_CHG_CTRL2, &reg_data); in max14577_get_charger_state()
68 if ((reg_data & CHGCTRL2_MBCHOSTEN_MASK) == 0) { in max14577_get_charger_state()
73 ret = max14577_read_reg(rmap, MAX14577_CHG_REG_STATUS3, &reg_data); in max14577_get_charger_state()
77 if (reg_data & STATUS3_CGMBC_MASK) { in max14577_get_charger_state()
79 if (reg_data & STATUS3_EOC_MASK) in max14577_get_charger_state()
124 u8 reg_data; in max14577_get_online() local
128 ret = max14577_read_reg(rmap, MAX14577_MUIC_REG_STATUS2, &reg_data); in max14577_get_online()
132 reg_data = ((reg_data & STATUS2_CHGTYP_MASK) >> STATUS2_CHGTYP_SHIFT); in max14577_get_online()
133 chg_type = maxim_get_charger_type(chg->max14577->dev_type, reg_data); in max14577_get_online()
[all …]
/Linux-v5.4/drivers/clk/rockchip/
Dclk-cpu.c63 const struct rockchip_cpuclk_reg_data *reg_data; member
90 const struct rockchip_cpuclk_reg_data *reg_data = cpuclk->reg_data; in rockchip_cpuclk_recalc_rate() local
91 u32 clksel0 = readl_relaxed(cpuclk->reg_base + reg_data->core_reg); in rockchip_cpuclk_recalc_rate()
93 clksel0 >>= reg_data->div_core_shift; in rockchip_cpuclk_recalc_rate()
94 clksel0 &= reg_data->div_core_mask; in rockchip_cpuclk_recalc_rate()
123 const struct rockchip_cpuclk_reg_data *reg_data = cpuclk->reg_data; in rockchip_cpuclk_pre_rate_change() local
149 if (alt_div > reg_data->div_core_mask) { in rockchip_cpuclk_pre_rate_change()
151 __func__, alt_div, reg_data->div_core_mask); in rockchip_cpuclk_pre_rate_change()
152 alt_div = reg_data->div_core_mask; in rockchip_cpuclk_pre_rate_change()
165 writel(HIWORD_UPDATE(alt_div, reg_data->div_core_mask, in rockchip_cpuclk_pre_rate_change()
[all …]
/Linux-v5.4/drivers/watchdog/
Dmlx_wdt.c57 struct mlxreg_core_data *reg_data; in mlxreg_wdt_check_card_reset() local
67 reg_data = &wdt->pdata->data[wdt->reset_idx]; in mlxreg_wdt_check_card_reset()
68 rc = regmap_read(wdt->regmap, reg_data->reg, &regval); in mlxreg_wdt_check_card_reset()
70 if (regval & ~reg_data->mask) { in mlxreg_wdt_check_card_reset()
81 struct mlxreg_core_data *reg_data = &wdt->pdata->data[wdt->action_idx]; in mlxreg_wdt_start() local
83 return regmap_update_bits(wdt->regmap, reg_data->reg, ~reg_data->mask, in mlxreg_wdt_start()
84 BIT(reg_data->bit)); in mlxreg_wdt_start()
90 struct mlxreg_core_data *reg_data = &wdt->pdata->data[wdt->action_idx]; in mlxreg_wdt_stop() local
92 return regmap_update_bits(wdt->regmap, reg_data->reg, ~reg_data->mask, in mlxreg_wdt_stop()
93 ~BIT(reg_data->bit)); in mlxreg_wdt_stop()
[all …]
/Linux-v5.4/drivers/net/ethernet/intel/e1000e/
D80003es2lan.c731 u32 reg_data; in e1000_init_hw_80003es2lan() local
777 reg_data = er32(TXDCTL(0)); in e1000_init_hw_80003es2lan()
778 reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | in e1000_init_hw_80003es2lan()
780 ew32(TXDCTL(0), reg_data); in e1000_init_hw_80003es2lan()
783 reg_data = er32(TXDCTL(1)); in e1000_init_hw_80003es2lan()
784 reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | in e1000_init_hw_80003es2lan()
786 ew32(TXDCTL(1), reg_data); in e1000_init_hw_80003es2lan()
789 reg_data = er32(TCTL); in e1000_init_hw_80003es2lan()
790 reg_data |= E1000_TCTL_RTLC; in e1000_init_hw_80003es2lan()
791 ew32(TCTL, reg_data); in e1000_init_hw_80003es2lan()
[all …]
/Linux-v5.4/drivers/soc/qcom/
Dspm.c66 const struct spm_reg_data *reg_data; member
118 if (drv->reg_data->reg_offset[reg]) in spm_register_write()
120 drv->reg_data->reg_offset[reg]); in spm_register_write()
129 if (!drv->reg_data->reg_offset[reg]) in spm_register_write_sync()
134 drv->reg_data->reg_offset[reg]); in spm_register_write_sync()
136 drv->reg_data->reg_offset[reg]); in spm_register_write_sync()
146 return readl_relaxed(drv->reg_base + drv->reg_data->reg_offset[reg]); in spm_register_read()
155 start_index = drv->reg_data->start_index[mode]; in spm_set_low_power_mode()
341 drv->reg_data = match_id->data; in spm_dev_probe()
344 addr = drv->reg_base + drv->reg_data->reg_offset[SPM_REG_SEQ_ENTRY]; in spm_dev_probe()
[all …]
/Linux-v5.4/drivers/regulator/
Dmax14577-regulator.c19 u8 reg_data; in max14577_reg_is_enabled() local
23 max14577_read_reg(rmap, MAX14577_CHG_REG_CHG_CTRL2, &reg_data); in max14577_reg_is_enabled()
24 if ((reg_data & CHGCTRL2_MBCHOSTEN_MASK) == 0) in max14577_reg_is_enabled()
26 max14577_read_reg(rmap, MAX14577_CHG_REG_STATUS3, &reg_data); in max14577_reg_is_enabled()
27 if ((reg_data & STATUS3_CGMBC_MASK) == 0) in max14577_reg_is_enabled()
38 u8 reg_data; in max14577_reg_get_current_limit() local
47 max14577_read_reg(rmap, MAX14577_CHG_REG_CHG_CTRL4, &reg_data); in max14577_reg_get_current_limit()
49 if ((reg_data & CHGCTRL4_MBCICHWRCL_MASK) == 0) in max14577_reg_get_current_limit()
52 reg_data = ((reg_data & CHGCTRL4_MBCICHWRCH_MASK) >> in max14577_reg_get_current_limit()
54 return limits->high_start + reg_data * limits->high_step; in max14577_reg_get_current_limit()
[all …]
Dmax77693-regulator.c57 const struct chg_reg_data *reg_data = rdev_get_drvdata(rdev); in max77693_chg_get_current_limit() local
64 ret = regmap_read(rdev->regmap, reg_data->linear_reg, &reg); in max77693_chg_get_current_limit()
68 sel = reg & reg_data->linear_mask; in max77693_chg_get_current_limit()
71 if (sel <= reg_data->min_sel) in max77693_chg_get_current_limit()
74 sel -= reg_data->min_sel; in max77693_chg_get_current_limit()
76 val = chg_min_uA + reg_data->uA_step * sel; in max77693_chg_get_current_limit()
86 const struct chg_reg_data *reg_data = rdev_get_drvdata(rdev); in max77693_chg_set_current_limit() local
90 while (chg_min_uA + reg_data->uA_step * sel < min_uA) in max77693_chg_set_current_limit()
93 if (chg_min_uA + reg_data->uA_step * sel > max_uA) in max77693_chg_set_current_limit()
97 sel += reg_data->min_sel; in max77693_chg_set_current_limit()
[all …]
/Linux-v5.4/drivers/net/ethernet/xilinx/
Dxilinx_emaclite.c161 u32 reg_data; in xemaclite_enable_interrupts() local
164 reg_data = xemaclite_readl(drvdata->base_addr + XEL_TSR_OFFSET); in xemaclite_enable_interrupts()
165 xemaclite_writel(reg_data | XEL_TSR_XMIT_IE_MASK, in xemaclite_enable_interrupts()
184 u32 reg_data; in xemaclite_disable_interrupts() local
190 reg_data = xemaclite_readl(drvdata->base_addr + XEL_TSR_OFFSET); in xemaclite_disable_interrupts()
191 xemaclite_writel(reg_data & (~XEL_TSR_XMIT_IE_MASK), in xemaclite_disable_interrupts()
195 reg_data = xemaclite_readl(drvdata->base_addr + XEL_RSR_OFFSET); in xemaclite_disable_interrupts()
196 xemaclite_writel(reg_data & (~XEL_RSR_RECV_IE_MASK), in xemaclite_disable_interrupts()
318 u32 reg_data; in xemaclite_send_data() local
329 reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET); in xemaclite_send_data()
[all …]
/Linux-v5.4/drivers/clk/ti/
Dclkctrl.c444 const struct omap_clkctrl_reg_data *reg_data; in _ti_omap4_clkctrl_setup() local
577 reg_data = data->regs; in _ti_omap4_clkctrl_setup()
579 while (reg_data->parent) { in _ti_omap4_clkctrl_setup()
580 if ((reg_data->flags & CLKF_SOC_MASK) && in _ti_omap4_clkctrl_setup()
581 (reg_data->flags & soc_mask) == 0) { in _ti_omap4_clkctrl_setup()
582 reg_data++; in _ti_omap4_clkctrl_setup()
590 hw->enable_reg.ptr = provider->base + reg_data->offset; in _ti_omap4_clkctrl_setup()
592 _ti_clkctrl_setup_subclks(provider, node, reg_data, in _ti_omap4_clkctrl_setup()
595 if (reg_data->flags & CLKF_SW_SUP) in _ti_omap4_clkctrl_setup()
597 if (reg_data->flags & CLKF_HW_SUP) in _ti_omap4_clkctrl_setup()
[all …]
/Linux-v5.4/drivers/char/xilinx_hwicap/
Dfifo_icap.c359 u32 reg_data; in fifo_icap_reset() local
364 reg_data = in_be32(drvdata->base_address + XHI_CR_OFFSET); in fifo_icap_reset()
367 reg_data | XHI_CR_SW_RESET_MASK); in fifo_icap_reset()
370 reg_data & (~XHI_CR_SW_RESET_MASK)); in fifo_icap_reset()
380 u32 reg_data; in fifo_icap_flush_fifo() local
385 reg_data = in_be32(drvdata->base_address + XHI_CR_OFFSET); in fifo_icap_flush_fifo()
388 reg_data | XHI_CR_FIFO_CLR_MASK); in fifo_icap_flush_fifo()
391 reg_data & (~XHI_CR_FIFO_CLR_MASK)); in fifo_icap_flush_fifo()
/Linux-v5.4/drivers/usb/isp1760/
Disp1760-if.c37 u32 reg_data; in isp1761_pci_init() local
73 reg_data = 0; in isp1761_pci_init()
74 while ((reg_data != 0xFACE) && retry_count) { in isp1761_pci_init()
80 reg_data = readl(iobase + HC_SCRATCH_REG) & 0x0000ffff; in isp1761_pci_init()
90 if (reg_data != 0xFACE) { in isp1761_pci_init()
91 dev_err(&dev->dev, "scratch register mismatch %x\n", reg_data); in isp1761_pci_init()
113 reg_data = readl(iobase + PLX_INT_CSR_REG); in isp1761_pci_init()
114 reg_data |= 0x900; in isp1761_pci_init()
115 writel(reg_data, iobase + PLX_INT_CSR_REG); in isp1761_pci_init()
/Linux-v5.4/drivers/extcon/
Dextcon-ptn5150.c91 unsigned int reg_data; in ptn5150_irq_work() local
99 ret = regmap_read(info->regmap, PTN5150_REG_CC_STATUS, &reg_data); in ptn5150_irq_work()
122 port_status = ((reg_data & in ptn5150_irq_work()
137 vbus = ((reg_data & in ptn5150_irq_work()
188 unsigned int reg_data, vendor_id, version_id; in ptn5150_init_dev_type() local
191 ret = regmap_read(info->regmap, PTN5150_REG_DEVICE_ID, &reg_data); in ptn5150_init_dev_type()
197 vendor_id = ((reg_data & PTN5150_REG_DEVICE_ID_VENDOR_MASK) >> in ptn5150_init_dev_type()
199 version_id = ((reg_data & PTN5150_REG_DEVICE_ID_VERSION_MASK) >> in ptn5150_init_dev_type()
206 ret = regmap_read(info->regmap, PTN5150_REG_INT_STATUS, &reg_data); in ptn5150_init_dev_type()
214 ret = regmap_read(info->regmap, PTN5150_REG_INT_REG_STATUS, &reg_data); in ptn5150_init_dev_type()
Dextcon-sm5502.c30 struct reg_data { struct
51 struct reg_data *reg_data; argument
66 static struct reg_data sm5502_reg_data[] = {
513 unsigned int reg_data, vendor_id, version_id; in sm5502_init_dev_type() local
517 ret = regmap_read(info->regmap, SM5502_REG_DEVICE_ID, &reg_data); in sm5502_init_dev_type()
524 vendor_id = ((reg_data & SM5502_REG_DEVICE_ID_VENDOR_MASK) >> in sm5502_init_dev_type()
526 version_id = ((reg_data & SM5502_REG_DEVICE_ID_VERSION_MASK) >> in sm5502_init_dev_type()
536 if (!info->reg_data[i].invert) in sm5502_init_dev_type()
537 val |= ~info->reg_data[i].val; in sm5502_init_dev_type()
539 val = info->reg_data[i].val; in sm5502_init_dev_type()
[all …]
Dextcon-rt8973a.c31 struct reg_data { struct
55 struct reg_data *reg_data; member
71 static struct reg_data rt8973a_reg_data[] = {
524 u8 reg = info->reg_data[i].reg; in rt8973a_init_dev_type()
525 u8 mask = info->reg_data[i].mask; in rt8973a_init_dev_type()
528 if (info->reg_data[i].invert) in rt8973a_init_dev_type()
529 val = ~info->reg_data[i].val; in rt8973a_init_dev_type()
531 val = info->reg_data[i].val; in rt8973a_init_dev_type()
572 info->reg_data = rt8973a_reg_data; in rt8973a_muic_i2c_probe()
/Linux-v5.4/drivers/edac/
Dqcom_edac.c210 struct llcc_edac_reg_data reg_data = edac_reg_data[err_type]; in dump_syn_reg_values() local
214 for (i = 0; i < reg_data.reg_cnt; i++) { in dump_syn_reg_values()
215 synd_reg = reg_data.synd_reg + (i * 4); in dump_syn_reg_values()
222 reg_data.name, i, synd_val); in dump_syn_reg_values()
226 drv->offsets[bank] + reg_data.count_status_reg, in dump_syn_reg_values()
231 err_cnt &= reg_data.count_mask; in dump_syn_reg_values()
232 err_cnt >>= reg_data.count_shift; in dump_syn_reg_values()
234 reg_data.name, err_cnt); in dump_syn_reg_values()
237 drv->offsets[bank] + reg_data.ways_status_reg, in dump_syn_reg_values()
242 err_ways &= reg_data.ways_mask; in dump_syn_reg_values()
[all …]
/Linux-v5.4/drivers/staging/vt6656/
Drf.c594 u8 reg_data[4]; in vnt_rf_write_embedded() local
598 reg_data[0] = (u8)data; in vnt_rf_write_embedded()
599 reg_data[1] = (u8)(data >> 8); in vnt_rf_write_embedded()
600 reg_data[2] = (u8)(data >> 16); in vnt_rf_write_embedded()
601 reg_data[3] = (u8)(data >> 24); in vnt_rf_write_embedded()
604 0, 0, ARRAY_SIZE(reg_data), reg_data); in vnt_rf_write_embedded()
/Linux-v5.4/drivers/clk/
Dclk-cdce925.c529 u8 reg_data[2]; in cdce925_regmap_i2c_write() local
535 reg_data[0] = CDCE925_I2C_COMMAND_BYTE_TRANSFER | ((u8 *)data)[0]; in cdce925_regmap_i2c_write()
536 reg_data[1] = ((u8 *)data)[1]; in cdce925_regmap_i2c_write()
539 reg_data[0], reg_data[1]); in cdce925_regmap_i2c_write()
541 ret = i2c_master_send(i2c, reg_data, count); in cdce925_regmap_i2c_write()
557 u8 reg_data[2]; in cdce925_regmap_i2c_read() local
564 xfer[0].buf = reg_data; in cdce925_regmap_i2c_read()
566 reg_data[0] = in cdce925_regmap_i2c_read()
570 reg_data[0] = in cdce925_regmap_i2c_read()
572 reg_data[1] = val_size; in cdce925_regmap_i2c_read()
[all …]
/Linux-v5.4/drivers/input/mouse/
Dcyapa_gen3.c334 static int cyapa_gen3_state_parse(struct cyapa *cyapa, u8 *reg_data, int len) in cyapa_gen3_state_parse() argument
339 if (reg_data[REG_BL_FILE] == BL_FILE && in cyapa_gen3_state_parse()
340 reg_data[REG_BL_ERROR] == BL_ERROR_NO_ERR_IDLE && in cyapa_gen3_state_parse()
341 (reg_data[REG_BL_STATUS] == in cyapa_gen3_state_parse()
343 reg_data[REG_BL_STATUS] == BL_STATUS_RUNNING)) { in cyapa_gen3_state_parse()
351 } else if (reg_data[REG_BL_FILE] == BL_FILE && in cyapa_gen3_state_parse()
352 (reg_data[REG_BL_STATUS] & BL_STATUS_RUNNING) == in cyapa_gen3_state_parse()
355 if (reg_data[REG_BL_STATUS] & BL_STATUS_BUSY) { in cyapa_gen3_state_parse()
358 if ((reg_data[REG_BL_ERROR] & BL_ERROR_BOOTLOADING) == in cyapa_gen3_state_parse()
364 } else if ((reg_data[REG_OP_STATUS] & OP_STATUS_SRC) && in cyapa_gen3_state_parse()
[all …]
/Linux-v5.4/sound/soc/kirkwood/
Dkirkwood-i2s.c396 unsigned int reg_data; in kirkwood_i2s_init() local
403 reg_data = readl(priv->io + 0x1200); in kirkwood_i2s_init()
404 reg_data &= (~(0x333FF8)); in kirkwood_i2s_init()
405 reg_data |= 0x111D18; in kirkwood_i2s_init()
406 writel(reg_data, priv->io + 0x1200); in kirkwood_i2s_init()
410 reg_data = readl(priv->io + 0x1200); in kirkwood_i2s_init()
411 reg_data &= (~(0x333FF8)); in kirkwood_i2s_init()
412 reg_data |= 0x111D18; in kirkwood_i2s_init()
413 writel(reg_data, priv->io + 0x1200); in kirkwood_i2s_init()
/Linux-v5.4/drivers/mfd/
Dda9150-core.c67 u8 *reg_data; in da9150_i2c_write_device() local
70 reg_data = kzalloc(1 + count, GFP_KERNEL); in da9150_i2c_write_device()
71 if (!reg_data) in da9150_i2c_write_device()
74 reg_data[0] = addr; in da9150_i2c_write_device()
75 memcpy(&reg_data[1], buf, count); in da9150_i2c_write_device()
81 xfer.buf = reg_data; in da9150_i2c_write_device()
84 kfree(reg_data); in da9150_i2c_write_device()
/Linux-v5.4/drivers/pinctrl/ti/
Dpinctrl-ti-iodelay.c154 const struct ti_iodelay_reg_data *reg_data; member
209 const struct ti_iodelay_reg_data *reg = iod->reg_data; in ti_iodelay_pinconf_set()
283 const struct ti_iodelay_reg_data *reg = iod->reg_data; in ti_iodelay_pinconf_init_dev()
361 const struct ti_iodelay_reg_data *reg = iod->reg_data; in ti_iodelay_pinconf_deinit_dev()
399 const struct ti_iodelay_reg_data *r = iod->reg_data; in ti_iodelay_offset_to_pin()
439 r = iod->reg_data; in ti_iodelay_node_iterator()
641 const struct ti_iodelay_reg_data *r = iod->reg_data; in ti_iodelay_pin_to_offset()
663 r = iod->reg_data; in ti_iodelay_pin_dbg_show()
744 const struct ti_iodelay_reg_data *r = iod->reg_data; in ti_iodelay_alloc_pins()
846 iod->reg_data = match->data; in ti_iodelay_probe()
[all …]
/Linux-v5.4/drivers/net/wireless/ath/wcn36xx/
Ddxe.c261 int reg_data = 0; in wcn36xx_dxe_enable_ch_int() local
265 &reg_data); in wcn36xx_dxe_enable_ch_int()
267 reg_data |= wcn_ch; in wcn36xx_dxe_enable_ch_int()
271 (int)reg_data); in wcn36xx_dxe_enable_ch_int()
786 int reg_data = 0, ret; in wcn36xx_dxe_init() local
788 reg_data = WCN36XX_DXE_REG_RESET; in wcn36xx_dxe_init()
789 wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_REG_CSR_RESET, reg_data); in wcn36xx_dxe_init()
792 reg_data = (WCN36XX_DXE_INT_CH3_MASK | WCN36XX_DXE_INT_CH1_MASK) << 16 | in wcn36xx_dxe_init()
795 wcn36xx_ccu_write_register(wcn, WCN36XX_CCU_DXE_INT_SELECT_PRONTO, reg_data); in wcn36xx_dxe_init()
797 wcn36xx_ccu_write_register(wcn, WCN36XX_CCU_DXE_INT_SELECT_RIVA, reg_data); in wcn36xx_dxe_init()
[all …]
/Linux-v5.4/drivers/gpu/drm/amd/display/modules/stats/
Dstats.c115 unsigned int reg_data; in mod_stats_create() local
131 &reg_data, sizeof(unsigned int), &flag)) in mod_stats_create()
132 core_stats->enabled = reg_data; in mod_stats_create()
138 &reg_data, sizeof(unsigned int), &flag)) { in mod_stats_create()
139 if (reg_data > DAL_STATS_ENTRIES_REGKEY_MAX) in mod_stats_create()
142 core_stats->entries = reg_data; in mod_stats_create()
/Linux-v5.4/drivers/pinctrl/
Dpinctrl-sx150x.c82 u8 reg_data; member
157 .reg_data = 0x00,
177 .reg_data = 0x00,
200 .reg_data = 0x00,
223 .reg_data = 0x00,
242 .reg_data = 0x00,
264 .reg_data = 0x00,
287 .reg_data = 0x08,
308 .reg_data = 0x08,
329 .reg_data = 0x10,
[all …]
/Linux-v5.4/drivers/gpu/drm/amd/amdgpu/
Dvcn_v1_0.c635 uint32_t reg_data = 0; in vcn_v1_0_clock_gating_dpg_mode() local
639 reg_data = 1 << JPEG_CGC_CTRL__DYN_CLOCK_MODE__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
641 reg_data = 0 << JPEG_CGC_CTRL__DYN_CLOCK_MODE__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
642 reg_data |= 1 << JPEG_CGC_CTRL__CLK_GATE_DLY_TIMER__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
643 reg_data |= 4 << JPEG_CGC_CTRL__CLK_OFF_DELAY__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
644 WREG32_SOC15_DPG_MODE(UVD, 0, mmJPEG_CGC_CTRL, reg_data, 0xFFFFFFFF, sram_sel); in vcn_v1_0_clock_gating_dpg_mode()
650 reg_data = 1 << UVD_CGC_CTRL__DYN_CLOCK_MODE__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
652 reg_data = 0 << UVD_CGC_CTRL__DYN_CLOCK_MODE__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
653 reg_data |= 1 << UVD_CGC_CTRL__CLK_GATE_DLY_TIMER__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
654 reg_data |= 4 << UVD_CGC_CTRL__CLK_OFF_DELAY__SHIFT; in vcn_v1_0_clock_gating_dpg_mode()
[all …]

1234