Home
last modified time | relevance | path

Searched refs:efuse (Results 1 – 25 of 279) sorted by relevance

12345678910>>...12

/openbmc/linux/drivers/nvmem/
H A Dsprd-efuse.c83 static int sprd_efuse_lock(struct sprd_efuse *efuse) in sprd_efuse_lock() argument
87 mutex_lock(&efuse->mutex); in sprd_efuse_lock()
89 ret = hwspin_lock_timeout_raw(efuse->hwlock, in sprd_efuse_lock()
92 dev_err(efuse->dev, "timeout get the hwspinlock\n"); in sprd_efuse_lock()
93 mutex_unlock(&efuse->mutex); in sprd_efuse_lock()
100 static void sprd_efuse_unlock(struct sprd_efuse *efuse) in sprd_efuse_unlock() argument
102 hwspin_unlock_raw(efuse->hwlock); in sprd_efuse_unlock()
103 mutex_unlock(&efuse->mutex); in sprd_efuse_unlock()
106 static void sprd_efuse_set_prog_power(struct sprd_efuse *efuse, bool en) in sprd_efuse_set_prog_power() argument
108 u32 val = readl(efuse->base + SPRD_EFUSE_PW_SWT); in sprd_efuse_set_prog_power()
[all …]
H A Dmeson-mx-efuse.c50 static void meson_mx_efuse_mask_bits(struct meson_mx_efuse *efuse, u32 reg, in meson_mx_efuse_mask_bits() argument
55 data = readl(efuse->base + reg); in meson_mx_efuse_mask_bits()
59 writel(data, efuse->base + reg); in meson_mx_efuse_mask_bits()
62 static int meson_mx_efuse_hw_enable(struct meson_mx_efuse *efuse) in meson_mx_efuse_hw_enable() argument
66 err = clk_prepare_enable(efuse->core_clk); in meson_mx_efuse_hw_enable()
71 meson_mx_efuse_mask_bits(efuse, MESON_MX_EFUSE_CNTL1, in meson_mx_efuse_hw_enable()
74 meson_mx_efuse_mask_bits(efuse, MESON_MX_EFUSE_CNTL4, in meson_mx_efuse_hw_enable()
80 static void meson_mx_efuse_hw_disable(struct meson_mx_efuse *efuse) in meson_mx_efuse_hw_disable() argument
82 meson_mx_efuse_mask_bits(efuse, MESON_MX_EFUSE_CNTL1, in meson_mx_efuse_hw_disable()
86 clk_disable_unprepare(efuse->core_clk); in meson_mx_efuse_hw_disable()
[all …]
H A Dsc27xx-efuse.c83 static int sc27xx_efuse_lock(struct sc27xx_efuse *efuse) in sc27xx_efuse_lock() argument
87 mutex_lock(&efuse->mutex); in sc27xx_efuse_lock()
89 ret = hwspin_lock_timeout_raw(efuse->hwlock, in sc27xx_efuse_lock()
92 dev_err(efuse->dev, "timeout to get the hwspinlock\n"); in sc27xx_efuse_lock()
93 mutex_unlock(&efuse->mutex); in sc27xx_efuse_lock()
100 static void sc27xx_efuse_unlock(struct sc27xx_efuse *efuse) in sc27xx_efuse_unlock() argument
102 hwspin_unlock_raw(efuse->hwlock); in sc27xx_efuse_unlock()
103 mutex_unlock(&efuse->mutex); in sc27xx_efuse_unlock()
106 static int sc27xx_efuse_poll_status(struct sc27xx_efuse *efuse, u32 bits) in sc27xx_efuse_poll_status() argument
111 ret = regmap_read_poll_timeout(efuse->regmap, in sc27xx_efuse_poll_status()
[all …]
H A Drockchip-efuse.c58 struct rockchip_efuse_chip *efuse = context; in rockchip_rk3288_efuse_read() local
62 ret = clk_prepare_enable(efuse->clk); in rockchip_rk3288_efuse_read()
64 dev_err(efuse->dev, "failed to prepare/enable efuse clk\n"); in rockchip_rk3288_efuse_read()
68 writel(RK3288_LOAD | RK3288_PGENB, efuse->base + REG_EFUSE_CTRL); in rockchip_rk3288_efuse_read()
71 writel(readl(efuse->base + REG_EFUSE_CTRL) & in rockchip_rk3288_efuse_read()
73 efuse->base + REG_EFUSE_CTRL); in rockchip_rk3288_efuse_read()
74 writel(readl(efuse->base + REG_EFUSE_CTRL) | in rockchip_rk3288_efuse_read()
76 efuse->base + REG_EFUSE_CTRL); in rockchip_rk3288_efuse_read()
78 writel(readl(efuse->base + REG_EFUSE_CTRL) | in rockchip_rk3288_efuse_read()
79 RK3288_STROBE, efuse->base + REG_EFUSE_CTRL); in rockchip_rk3288_efuse_read()
[all …]
H A Djz4780-efuse.c72 struct jz4780_efuse *efuse = context; in jz4780_efuse_read() local
87 regmap_update_bits(efuse->map, JZ_EFUCTRL, in jz4780_efuse_read()
94 ret = regmap_read_poll_timeout(efuse->map, JZ_EFUSTATE, in jz4780_efuse_read()
99 dev_err(efuse->dev, "Time out while reading efuse data"); in jz4780_efuse_read()
103 ret = regmap_bulk_read(efuse->map, JZ_EFUDATA(0), in jz4780_efuse_read()
142 struct jz4780_efuse *efuse; in jz4780_efuse_probe() local
151 efuse = devm_kzalloc(dev, sizeof(*efuse), GFP_KERNEL); in jz4780_efuse_probe()
152 if (!efuse) in jz4780_efuse_probe()
159 efuse->map = devm_regmap_init_mmio(dev, regs, in jz4780_efuse_probe()
161 if (IS_ERR(efuse->map)) in jz4780_efuse_probe()
[all …]
H A DMakefile26 nvmem_jz4780_efuse-y := jz4780-efuse.o
36 nvmem_meson_efuse-y := meson-efuse.o
38 nvmem_meson_mx_efuse-y := meson-mx-efuse.o
41 obj-$(CONFIG_NVMEM_MTK_EFUSE) += nvmem_mtk-efuse.o
42 nvmem_mtk-efuse-y := mtk-efuse.o
56 nvmem_rockchip_efuse-y := rockchip-efuse.o
59 obj-$(CONFIG_NVMEM_SC27XX_EFUSE) += nvmem-sc27xx-efuse.o
60 nvmem-sc27xx-efuse-y := sc27xx-efuse.o
66 nvmem_sprd_efuse-y := sprd-efuse.o
76 obj-$(CONFIG_NVMEM_UNIPHIER_EFUSE) += nvmem-uniphier-efuse.o
[all …]
/openbmc/u-boot/board/ti/dra7xx/
H A Devm.c376 .mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,
377 .mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
385 .eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
386 .eve.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_DSPEVE_OD,
387 .eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
388 .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
396 .gpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_GPU_NOM,
397 .gpu.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_GPU_OD,
398 .gpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_GPU_HIGH,
399 .gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
[all …]
/openbmc/u-boot/board/compulab/cl-som-am57x/
H A Dspl.c164 .mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,
165 .mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
172 .eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
173 .eve.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_DSPEVE_OD,
174 .eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
175 .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
182 .gpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_GPU_NOM,
183 .gpu.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_GPU_OD,
184 .gpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_GPU_HIGH,
185 .gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
[all …]
/openbmc/u-boot/board/ti/am57xx/
H A Dboard.c324 .mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,
325 .mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
333 .eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
334 .eve.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_DSPEVE_OD,
335 .eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
336 .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
344 .gpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_GPU_NOM,
345 .gpu.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_GPU_OD,
346 .gpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_GPU_HIGH,
347 .gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
[all …]
/openbmc/u-boot/arch/arm/mach-mvebu/
H A Defuse.c68 static int do_prog_efuse(struct mvebu_hd_efuse *efuse, in do_prog_efuse() argument
73 val.dwords.d[0] = readl(&efuse->bits_31_0); in do_prog_efuse()
74 val.dwords.d[1] = readl(&efuse->bits_63_32); in do_prog_efuse()
75 val.lock = readl(&efuse->bit64); in do_prog_efuse()
84 writel(val.dwords.d[0], &efuse->bits_31_0); in do_prog_efuse()
86 writel(val.dwords.d[1], &efuse->bits_63_32); in do_prog_efuse()
88 writel(val.lock, &efuse->bit64); in do_prog_efuse()
96 struct mvebu_hd_efuse *efuse; in prog_efuse() local
103 efuse = get_efuse_line(nr); in prog_efuse()
104 if (!efuse) in prog_efuse()
[all …]
/openbmc/linux/drivers/net/wireless/realtek/rtl8xxxu/
H A Drtl8xxxu_8192c.c406 struct rtl8192cu_efuse *efuse = &priv->efuse_wifi.efuse8192; in rtl8192cu_parse_efuse() local
408 if (efuse->rtl_id != cpu_to_le16(0x8129)) in rtl8192cu_parse_efuse()
411 ether_addr_copy(priv->mac_addr, efuse->mac_addr); in rtl8192cu_parse_efuse()
414 efuse->cck_tx_power_index_A, in rtl8192cu_parse_efuse()
415 sizeof(efuse->cck_tx_power_index_A)); in rtl8192cu_parse_efuse()
417 efuse->cck_tx_power_index_B, in rtl8192cu_parse_efuse()
418 sizeof(efuse->cck_tx_power_index_B)); in rtl8192cu_parse_efuse()
421 efuse->ht40_1s_tx_power_index_A, in rtl8192cu_parse_efuse()
422 sizeof(efuse->ht40_1s_tx_power_index_A)); in rtl8192cu_parse_efuse()
424 efuse->ht40_1s_tx_power_index_B, in rtl8192cu_parse_efuse()
[all …]
H A Drtl8xxxu_8723a.c183 struct rtl8723au_efuse *efuse = &priv->efuse_wifi.efuse8723; in rtl8723au_parse_efuse() local
185 if (efuse->rtl_id != cpu_to_le16(0x8129)) in rtl8723au_parse_efuse()
188 ether_addr_copy(priv->mac_addr, efuse->mac_addr); in rtl8723au_parse_efuse()
191 efuse->cck_tx_power_index_A, in rtl8723au_parse_efuse()
192 sizeof(efuse->cck_tx_power_index_A)); in rtl8723au_parse_efuse()
194 efuse->cck_tx_power_index_B, in rtl8723au_parse_efuse()
195 sizeof(efuse->cck_tx_power_index_B)); in rtl8723au_parse_efuse()
198 efuse->ht40_1s_tx_power_index_A, in rtl8723au_parse_efuse()
199 sizeof(efuse->ht40_1s_tx_power_index_A)); in rtl8723au_parse_efuse()
201 efuse->ht40_1s_tx_power_index_B, in rtl8723au_parse_efuse()
[all …]
/openbmc/linux/Documentation/devicetree/bindings/regulator/
H A Dti-abb-regulator.txt35 efuse: (see Optional properties)
36 RBB enable efuse Mask: (See Optional properties)
37 FBB enable efuse Mask: (See Optional properties)
38 Vset value efuse Mask: (See Optional properties)
47 - "efuse-address" - Contains efuse base address used to pick up ABB info.
49 "efuse-address" is required for this.
55 efuse: Mandatory if 'efuse-address' register is defined. Provides offset
56 from efuse-address to pick up ABB characteristics. Set to 0 if
57 'efuse-address' is not defined.
58 RBB enable efuse Mask: Optional if 'efuse-address' register is defined.
[all …]
/openbmc/linux/drivers/phy/mediatek/
H A Dphy-mtk-pcie.c77 struct mtk_pcie_lane_efuse *efuse; member
83 struct mtk_pcie_lane_efuse *data = &pcie_phy->efuse[lane]; in mtk_pcie_efuse_set_lane()
136 struct mtk_pcie_lane_efuse *efuse = &pcie_phy->efuse[lane]; in mtk_pcie_efuse_read_for_lane() local
142 ret = nvmem_cell_read_variable_le_u32(dev, efuse_id, &efuse->tx_pmos); in mtk_pcie_efuse_read_for_lane()
147 ret = nvmem_cell_read_variable_le_u32(dev, efuse_id, &efuse->tx_nmos); in mtk_pcie_efuse_read_for_lane()
152 ret = nvmem_cell_read_variable_le_u32(dev, efuse_id, &efuse->rx_data); in mtk_pcie_efuse_read_for_lane()
156 if (!(efuse->tx_pmos || efuse->tx_nmos || efuse->rx_data)) in mtk_pcie_efuse_read_for_lane()
161 efuse->lane_efuse_supported = true; in mtk_pcie_efuse_read_for_lane()
184 pcie_phy->efuse = devm_kzalloc(dev, pcie_phy->data->num_lanes * in mtk_pcie_read_efuse()
185 sizeof(*pcie_phy->efuse), GFP_KERNEL); in mtk_pcie_read_efuse()
[all …]
/openbmc/linux/drivers/cpufreq/
H A Dti-cpufreq.c57 unsigned long efuse);
77 unsigned long efuse) in amx3_efuse_xlate() argument
79 if (!efuse) in amx3_efuse_xlate()
80 efuse = opp_data->soc_data->efuse_fallback; in amx3_efuse_xlate()
82 return ~efuse; in amx3_efuse_xlate()
86 unsigned long efuse) in dra7_efuse_xlate() argument
95 switch (efuse) { in dra7_efuse_xlate()
112 unsigned long efuse) in omap3_efuse_xlate() argument
115 return BIT(efuse); in omap3_efuse_xlate()
119 unsigned long efuse) in am625_efuse_xlate() argument
[all …]
/openbmc/u-boot/doc/device-tree-bindings/exynos/
H A Dtmu.txt14 - samsung,efuse-min-value : SOC efuse min value (Constant 40)
15 - efuse-value should be more than this value.
16 - samsung,efuse-value : SOC actual efuse value (Literal value)
19 - samsung,efuse-max-value : SoC max efuse value (Constant 100)
20 - efuse-value should be less than this value.
39 samsung,efuse-min-value = <40>;
40 samsung,efuse-value = <55>;
41 samsung,efuse-max-value = <100>;
/openbmc/linux/Documentation/devicetree/bindings/nvmem/
H A Dsc27xx-efuse.txt5 "sprd,sc2720-efuse"
6 "sprd,sc2721-efuse"
7 "sprd,sc2723-efuse"
8 "sprd,sc2730-efuse"
9 "sprd,sc2731-efuse"
10 - reg: Specify the address offset of efuse controller.
29 efuse@380 {
30 compatible = "sprd,sc2731-efuse";
/openbmc/linux/drivers/net/wireless/mediatek/mt76/mt7603/
H A Deeprom.c67 mt7603_has_cal_free_data(struct mt7603_dev *dev, u8 *efuse) in mt7603_has_cal_free_data() argument
69 if (!efuse[MT_EE_TEMP_SENSOR_CAL]) in mt7603_has_cal_free_data()
72 if (get_unaligned_le16(efuse + MT_EE_TX_POWER_0_START_2G) == 0) in mt7603_has_cal_free_data()
75 if (get_unaligned_le16(efuse + MT_EE_TX_POWER_1_START_2G) == 0) in mt7603_has_cal_free_data()
78 if (!efuse[MT_EE_CP_FT_VERSION]) in mt7603_has_cal_free_data()
81 if (!efuse[MT_EE_XTAL_FREQ_OFFSET]) in mt7603_has_cal_free_data()
84 if (!efuse[MT_EE_XTAL_WF_RFCAL]) in mt7603_has_cal_free_data()
91 mt7603_apply_cal_free_data(struct mt7603_dev *dev, u8 *efuse) in mt7603_apply_cal_free_data() argument
112 if (!mt7603_has_cal_free_data(dev, efuse)) in mt7603_apply_cal_free_data()
121 eeprom[offset] = efuse[offset]; in mt7603_apply_cal_free_data()
/openbmc/linux/drivers/net/wireless/realtek/rtw88/
H A Dmain.c1197 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_update_sta_info() local
1227 if (efuse->hw_cap.nss == 1 || rtwdev->hal.txrx_1ss) in rtw_update_sta_info()
1405 wifi_only = !rtwdev->efuse.btcoex; in rtw_power_on()
1546 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_init_ht_cap() local
1559 if (efuse->hw_cap.bw & BIT(RTW_CHANNEL_WIDTH_40)) in rtw_init_ht_cap()
1566 if (efuse->hw_cap.nss > 1) { in rtw_init_ht_cap()
1582 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_init_vht_cap() local
1586 if (efuse->hw_cap.ptcl != EFUSE_HW_CAP_IGNORE && in rtw_init_vht_cap()
1587 efuse->hw_cap.ptcl != EFUSE_HW_CAP_PTCL_VHT) in rtw_init_vht_cap()
1614 if (efuse->hw_cap.nss > 1) { in rtw_init_vht_cap()
[all …]
H A Defuse.c43 u32 physical_size = rtwdev->efuse.physical_size; in rtw_dump_logical_efuse_map()
44 u32 protect_size = rtwdev->efuse.protect_size; in rtw_dump_logical_efuse_map()
45 u32 logical_size = rtwdev->efuse.logical_size; in rtw_dump_logical_efuse_map()
90 u32 size = rtwdev->efuse.physical_size; in rtw_dump_physical_efuse_map()
149 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_parse_efuse_map() local
150 u32 phy_size = efuse->physical_size; in rtw_parse_efuse_map()
151 u32 log_size = efuse->logical_size; in rtw_parse_efuse_map()
H A Drtw8821c.c23 static void rtw8821ce_efuse_parsing(struct rtw_efuse *efuse, in rtw8821ce_efuse_parsing() argument
26 ether_addr_copy(efuse->addr, map->e.mac_addr); in rtw8821ce_efuse_parsing()
29 static void rtw8821cu_efuse_parsing(struct rtw_efuse *efuse, in rtw8821cu_efuse_parsing() argument
32 ether_addr_copy(efuse->addr, map->u.mac_addr); in rtw8821cu_efuse_parsing()
35 static void rtw8821cs_efuse_parsing(struct rtw_efuse *efuse, in rtw8821cs_efuse_parsing() argument
38 ether_addr_copy(efuse->addr, map->s.mac_addr); in rtw8821cs_efuse_parsing()
51 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw8821c_read_efuse() local
57 efuse->rfe_option = map->rfe_option & 0x1f; in rtw8821c_read_efuse()
58 efuse->rf_board_option = map->rf_board_option; in rtw8821c_read_efuse()
59 efuse->crystal_cap = map->xtal_k; in rtw8821c_read_efuse()
[all …]
H A Dcoex.c117 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_coex_freerun_check() local
124 if (efuse->share_ant || ant_distance <= 5 || !coex_stat->wl_gl_busy) in rtw_coex_freerun_check()
809 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_coex_update_wl_ch_info() local
823 (efuse->share_ant && center_chan <= 14 && in rtw_coex_update_wl_ch_info()
984 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_btc_wltoggle_table_a() local
992 if (efuse->share_ant) { in rtw_btc_wltoggle_table_a()
1070 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_coex_table() local
1077 if (efuse->share_ant) { in rtw_coex_table()
1199 struct rtw_efuse *efuse = &rtwdev->efuse; in rtw_coex_tdma() local
1235 if (efuse->share_ant) { in rtw_coex_tdma()
[all …]
/openbmc/linux/drivers/net/wireless/mediatek/mt76/mt76x2/
H A Deeprom.c24 mt76x2_has_cal_free_data(struct mt76x02_dev *dev, u8 *efuse) in mt76x2_has_cal_free_data() argument
26 u16 *efuse_w = (u16 *)efuse; in mt76x2_has_cal_free_data()
50 mt76x2_apply_cal_free_data(struct mt76x02_dev *dev, u8 *efuse) in mt76x2_apply_cal_free_data() argument
94 if (!mt76x2_has_cal_free_data(dev, efuse)) in mt76x2_apply_cal_free_data()
100 eeprom[offset] = efuse[offset]; in mt76x2_apply_cal_free_data()
103 if (!(efuse[MT_EE_TX_POWER_0_START_5G] | in mt76x2_apply_cal_free_data()
104 efuse[MT_EE_TX_POWER_0_START_5G + 1])) in mt76x2_apply_cal_free_data()
106 if (!(efuse[MT_EE_TX_POWER_1_START_5G] | in mt76x2_apply_cal_free_data()
107 efuse[MT_EE_TX_POWER_1_START_5G + 1])) in mt76x2_apply_cal_free_data()
110 val = get_unaligned_le16(efuse + MT_EE_BT_RCAL_RESULT); in mt76x2_apply_cal_free_data()
[all …]
/openbmc/u-boot/drivers/misc/
H A Drockchip-efuse.c90 struct rockchip_efuse_regs *efuse = in rockchip_rk3399_efuse_read() local
108 &efuse->ctrl); in rockchip_rk3399_efuse_read()
111 setbits_le32(&efuse->ctrl, in rockchip_rk3399_efuse_read()
114 out_value = readl(&efuse->dout); in rockchip_rk3399_efuse_read()
115 clrbits_le32(&efuse->ctrl, RK3399_STROBE); in rockchip_rk3399_efuse_read()
123 writel(RK3399_PD | RK3399_CSB, &efuse->ctrl); in rockchip_rk3399_efuse_read()
/openbmc/qemu/hw/nvram/
H A Dmeson.build11 system_ss.add(when: 'CONFIG_XLNX_EFUSE_CRC', if_true: files('xlnx-efuse-crc.c'))
12 system_ss.add(when: 'CONFIG_XLNX_EFUSE', if_true: files('xlnx-efuse.c'))
14 'xlnx-versal-efuse-cache.c',
15 'xlnx-versal-efuse-ctrl.c'))
17 'xlnx-zynqmp-efuse.c'))

12345678910>>...12