Home
last modified time | relevance | path

Searched full:regmap (Results 1 – 25 of 4479) sorted by relevance

12345678910>>...180

/kernel/linux/linux-6.6/drivers/phy/qualcomm/
Dphy-qcom-sgmii-eth.c12 #include <linux/regmap.h>
108 struct regmap *regmap; member
113 static void qcom_dwmac_sgmii_phy_init_1g(struct regmap *regmap) in qcom_dwmac_sgmii_phy_init_1g() argument
115 regmap_write(regmap, QSERDES_PCS_SW_RESET, 0x01); in qcom_dwmac_sgmii_phy_init_1g()
116 regmap_write(regmap, QSERDES_PCS_POWER_DOWN_CONTROL, 0x01); in qcom_dwmac_sgmii_phy_init_1g()
118 regmap_write(regmap, QSERDES_COM_PLL_IVCO, 0x0F); in qcom_dwmac_sgmii_phy_init_1g()
119 regmap_write(regmap, QSERDES_COM_CP_CTRL_MODE0, 0x06); in qcom_dwmac_sgmii_phy_init_1g()
120 regmap_write(regmap, QSERDES_COM_PLL_RCTRL_MODE0, 0x16); in qcom_dwmac_sgmii_phy_init_1g()
121 regmap_write(regmap, QSERDES_COM_PLL_CCTRL_MODE0, 0x36); in qcom_dwmac_sgmii_phy_init_1g()
122 regmap_write(regmap, QSERDES_COM_SYSCLK_EN_SEL, 0x1A); in qcom_dwmac_sgmii_phy_init_1g()
[all …]
/kernel/linux/linux-5.10/drivers/clk/at91/
Dclk-main.c11 #include <linux/regmap.h>
30 struct regmap *regmap; member
37 struct regmap *regmap; member
46 struct regmap *regmap; member
53 struct regmap *regmap; member
59 static inline bool clk_main_osc_ready(struct regmap *regmap) in clk_main_osc_ready() argument
63 regmap_read(regmap, AT91_PMC_SR, &status); in clk_main_osc_ready()
71 struct regmap *regmap = osc->regmap; in clk_main_osc_prepare() local
74 regmap_read(regmap, AT91_CKGR_MOR, &tmp); in clk_main_osc_prepare()
82 regmap_write(regmap, AT91_CKGR_MOR, tmp); in clk_main_osc_prepare()
[all …]
Dpmc.h13 #include <linux/regmap.h>
116 at91_clk_register_audio_pll_frac(struct regmap *regmap, const char *name,
120 at91_clk_register_audio_pll_pad(struct regmap *regmap, const char *name,
124 at91_clk_register_audio_pll_pmc(struct regmap *regmap, const char *name,
128 at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
135 at91_clk_register_h32mx(struct regmap *regmap, const char *name,
139 at91_clk_i2s_mux_register(struct regmap *regmap, const char *name,
144 at91_clk_register_main_rc_osc(struct regmap *regmap, const char *name,
147 at91_clk_register_main_osc(struct regmap *regmap, const char *name,
150 at91_clk_register_rm9200_main(struct regmap *regmap,
[all …]
Ddt-compat.c6 #include <linux/regmap.h>
33 struct regmap *regmap; in of_sama5d2_clk_audio_pll_frac_setup() local
35 regmap = syscon_node_to_regmap(of_get_parent(np)); in of_sama5d2_clk_audio_pll_frac_setup()
36 if (IS_ERR(regmap)) in of_sama5d2_clk_audio_pll_frac_setup()
41 hw = at91_clk_register_audio_pll_frac(regmap, name, parent_name); in of_sama5d2_clk_audio_pll_frac_setup()
56 struct regmap *regmap; in of_sama5d2_clk_audio_pll_pad_setup() local
58 regmap = syscon_node_to_regmap(of_get_parent(np)); in of_sama5d2_clk_audio_pll_pad_setup()
59 if (IS_ERR(regmap)) in of_sama5d2_clk_audio_pll_pad_setup()
64 hw = at91_clk_register_audio_pll_pad(regmap, name, parent_name); in of_sama5d2_clk_audio_pll_pad_setup()
79 struct regmap *regmap; in of_sama5d2_clk_audio_pll_pmc_setup() local
[all …]
/kernel/linux/linux-6.6/drivers/clk/at91/
Dclk-main.c11 #include <linux/regmap.h>
30 struct regmap *regmap; member
38 struct regmap *regmap; member
48 struct regmap *regmap; member
55 struct regmap *regmap; member
62 static inline bool clk_main_osc_ready(struct regmap *regmap) in clk_main_osc_ready() argument
66 regmap_read(regmap, AT91_PMC_SR, &status); in clk_main_osc_ready()
74 struct regmap *regmap = osc->regmap; in clk_main_osc_prepare() local
77 regmap_read(regmap, AT91_CKGR_MOR, &tmp); in clk_main_osc_prepare()
85 regmap_write(regmap, AT91_CKGR_MOR, tmp); in clk_main_osc_prepare()
[all …]
Dpmc.h13 #include <linux/regmap.h>
132 at91_clk_register_audio_pll_frac(struct regmap *regmap, const char *name,
136 at91_clk_register_audio_pll_pad(struct regmap *regmap, const char *name,
140 at91_clk_register_audio_pll_pmc(struct regmap *regmap, const char *name,
144 at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
152 at91_clk_register_h32mx(struct regmap *regmap, const char *name,
156 at91_clk_i2s_mux_register(struct regmap *regmap, const char *name,
161 at91_clk_register_main_rc_osc(struct regmap *regmap, const char *name,
164 at91_clk_register_main_osc(struct regmap *regmap, const char *name,
168 at91_clk_register_rm9200_main(struct regmap *regmap,
[all …]
Ddt-compat.c6 #include <linux/regmap.h>
35 struct regmap *regmap; in of_sama5d2_clk_audio_pll_frac_setup() local
39 regmap = syscon_node_to_regmap(parent_np); in of_sama5d2_clk_audio_pll_frac_setup()
41 if (IS_ERR(regmap)) in of_sama5d2_clk_audio_pll_frac_setup()
46 hw = at91_clk_register_audio_pll_frac(regmap, name, parent_name); in of_sama5d2_clk_audio_pll_frac_setup()
61 struct regmap *regmap; in of_sama5d2_clk_audio_pll_pad_setup() local
65 regmap = syscon_node_to_regmap(parent_np); in of_sama5d2_clk_audio_pll_pad_setup()
67 if (IS_ERR(regmap)) in of_sama5d2_clk_audio_pll_pad_setup()
72 hw = at91_clk_register_audio_pll_pad(regmap, name, parent_name); in of_sama5d2_clk_audio_pll_pad_setup()
87 struct regmap *regmap; in of_sama5d2_clk_audio_pll_pmc_setup() local
[all …]
Dclk-sam9x60-pll.c14 #include <linux/regmap.h>
32 struct regmap *regmap; member
60 static inline bool sam9x60_pll_ready(struct regmap *regmap, int id) in sam9x60_pll_ready() argument
64 regmap_read(regmap, AT91_PMC_PLL_ISR0, &status); in sam9x60_pll_ready()
69 static bool sam9x60_frac_pll_ready(struct regmap *regmap, u8 id) in sam9x60_frac_pll_ready() argument
71 return sam9x60_pll_ready(regmap, id); in sam9x60_frac_pll_ready()
87 struct regmap *regmap = core->regmap; in sam9x60_frac_pll_set() local
93 regmap_update_bits(regmap, AT91_PMC_PLL_UPDT, in sam9x60_frac_pll_set()
95 regmap_read(regmap, AT91_PMC_PLL_CTRL1, &val); in sam9x60_frac_pll_set()
99 if (sam9x60_frac_pll_ready(regmap, core->id) && in sam9x60_frac_pll_set()
[all …]
/kernel/linux/linux-6.6/drivers/gpu/drm/sprd/
Dmegacores_pll.c10 #include <linux/regmap.h>
81 static void dphy_set_pll_reg(struct dphy_pll *pll, struct regmap *regmap) in dphy_set_pll_reg() argument
102 regmap_write(regmap, reg_addr[i], reg_val[i]); in dphy_set_pll_reg()
110 struct regmap *regmap = ctx->regmap; in dphy_pll_config() local
122 dphy_set_pll_reg(pll, regmap); in dphy_pll_config()
127 static void dphy_set_timing_reg(struct regmap *regmap, int type, u8 val[]) in dphy_set_timing_reg() argument
131 regmap_write(regmap, 0x31, val[CLK]); in dphy_set_timing_reg()
132 regmap_write(regmap, 0x41, val[DATA]); in dphy_set_timing_reg()
133 regmap_write(regmap, 0x51, val[DATA]); in dphy_set_timing_reg()
134 regmap_write(regmap, 0x61, val[DATA]); in dphy_set_timing_reg()
[all …]
/kernel/linux/linux-5.10/drivers/reset/hisilicon/
Dhi6220_reset.c17 #include <linux/regmap.h>
41 struct regmap *regmap; member
48 struct regmap *regmap = data->regmap; in hi6220_peripheral_assert() local
53 return regmap_write(regmap, reg, BIT(offset)); in hi6220_peripheral_assert()
60 struct regmap *regmap = data->regmap; in hi6220_peripheral_deassert() local
65 return regmap_write(regmap, reg, BIT(offset)); in hi6220_peripheral_deassert()
77 struct regmap *regmap = data->regmap; in hi6220_media_assert() local
79 return regmap_write(regmap, SC_MEDIA_RSTEN, BIT(idx)); in hi6220_media_assert()
86 struct regmap *regmap = data->regmap; in hi6220_media_deassert() local
88 return regmap_write(regmap, SC_MEDIA_RSTDIS, BIT(idx)); in hi6220_media_deassert()
[all …]
/kernel/linux/linux-6.6/drivers/reset/hisilicon/
Dhi6220_reset.c16 #include <linux/regmap.h>
40 struct regmap *regmap; member
47 struct regmap *regmap = data->regmap; in hi6220_peripheral_assert() local
52 return regmap_write(regmap, reg, BIT(offset)); in hi6220_peripheral_assert()
59 struct regmap *regmap = data->regmap; in hi6220_peripheral_deassert() local
64 return regmap_write(regmap, reg, BIT(offset)); in hi6220_peripheral_deassert()
76 struct regmap *regmap = data->regmap; in hi6220_media_assert() local
78 return regmap_write(regmap, SC_MEDIA_RSTEN, BIT(idx)); in hi6220_media_assert()
85 struct regmap *regmap = data->regmap; in hi6220_media_deassert() local
87 return regmap_write(regmap, SC_MEDIA_RSTDIS, BIT(idx)); in hi6220_media_deassert()
[all …]
/kernel/linux/linux-6.6/sound/soc/codecs/
Dmt6358.c83 struct regmap *regmap; member
115 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_CLR, in playback_gpio_set()
117 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_SET, in playback_gpio_set()
119 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2, in playback_gpio_set()
130 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_CLR, in playback_gpio_reset()
132 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2, in playback_gpio_reset()
134 regmap_update_bits(priv->regmap, MT6358_GPIO_DIR0, in playback_gpio_reset()
141 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3_CLR, in capture_gpio_set()
143 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3_SET, in capture_gpio_set()
145 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3, in capture_gpio_set()
[all …]
/kernel/linux/linux-5.10/sound/soc/codecs/
Dmt6358.c83 struct regmap *regmap; member
115 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_CLR, in playback_gpio_set()
117 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_SET, in playback_gpio_set()
119 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2, in playback_gpio_set()
130 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2_CLR, in playback_gpio_reset()
132 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE2, in playback_gpio_reset()
134 regmap_update_bits(priv->regmap, MT6358_GPIO_DIR0, in playback_gpio_reset()
141 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3_CLR, in capture_gpio_set()
143 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3_SET, in capture_gpio_set()
145 regmap_update_bits(priv->regmap, MT6358_GPIO_MODE3, in capture_gpio_set()
[all …]
/kernel/linux/linux-6.6/drivers/mfd/
Dsyscon.c24 #include <linux/regmap.h>
36 struct regmap *regmap; member
50 struct regmap *regmap; in of_syscon_register() local
115 regmap = regmap_init_mmio(NULL, base, &syscon_config); in of_syscon_register()
117 if (IS_ERR(regmap)) { in of_syscon_register()
118 pr_err("regmap init failed\n"); in of_syscon_register()
119 ret = PTR_ERR(regmap); in of_syscon_register()
131 ret = regmap_mmio_attach_clk(regmap, clk); in of_syscon_register()
147 syscon->regmap = regmap; in of_syscon_register()
160 regmap_exit(regmap); in of_syscon_register()
[all …]
/kernel/linux/linux-6.6/drivers/clk/qcom/
Dclk-alpha-pll.c10 #include <linux/regmap.h>
326 ret = regmap_read(pll->clkr.regmap, PLL_MODE(pll), &val); in wait_for_pll()
331 ret = regmap_read(pll->clkr.regmap, PLL_MODE(pll), &val); in wait_for_pll()
370 static void clk_alpha_pll_write_config(struct regmap *regmap, unsigned int reg, in clk_alpha_pll_write_config() argument
374 regmap_write(regmap, reg, val); in clk_alpha_pll_write_config()
377 void clk_alpha_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap, in clk_alpha_pll_configure() argument
382 regmap_write(regmap, PLL_L_VAL(pll), config->l); in clk_alpha_pll_configure()
383 regmap_write(regmap, PLL_ALPHA_VAL(pll), config->alpha); in clk_alpha_pll_configure()
384 regmap_write(regmap, PLL_CONFIG_CTL(pll), config->config_ctl_val); in clk_alpha_pll_configure()
387 regmap_write(regmap, PLL_CONFIG_CTL_U(pll), in clk_alpha_pll_configure()
[all …]
Dclk-hfpll.c6 #include <linux/regmap.h>
12 #include "clk-regmap.h"
24 struct regmap *regmap = h->clkr.regmap; in __clk_hfpll_init_once() local
31 regmap_write(regmap, hd->config_reg, hd->config_val); in __clk_hfpll_init_once()
32 regmap_write(regmap, hd->m_reg, 0); in __clk_hfpll_init_once()
33 regmap_write(regmap, hd->n_reg, 1); in __clk_hfpll_init_once()
44 regmap_write(regmap, hd->user_reg, regval); in __clk_hfpll_init_once()
48 regmap_write(regmap, hd->droop_reg, hd->droop_val); in __clk_hfpll_init_once()
57 struct regmap *regmap = h->clkr.regmap; in __clk_hfpll_enable() local
63 regmap_update_bits(regmap, hd->mode_reg, PLL_BYPASSNL, PLL_BYPASSNL); in __clk_hfpll_enable()
[all …]
/kernel/linux/linux-5.10/drivers/clk/qcom/
Dclk-hfpll.c6 #include <linux/regmap.h>
12 #include "clk-regmap.h"
24 struct regmap *regmap = h->clkr.regmap; in __clk_hfpll_init_once() local
31 regmap_write(regmap, hd->config_reg, hd->config_val); in __clk_hfpll_init_once()
32 regmap_write(regmap, hd->m_reg, 0); in __clk_hfpll_init_once()
33 regmap_write(regmap, hd->n_reg, 1); in __clk_hfpll_init_once()
44 regmap_write(regmap, hd->user_reg, regval); in __clk_hfpll_init_once()
48 regmap_write(regmap, hd->droop_reg, hd->droop_val); in __clk_hfpll_init_once()
57 struct regmap *regmap = h->clkr.regmap; in __clk_hfpll_enable() local
63 regmap_update_bits(regmap, hd->mode_reg, PLL_BYPASSNL, PLL_BYPASSNL); in __clk_hfpll_enable()
[all …]
/kernel/linux/linux-5.10/drivers/phy/mscc/
Dphy-ocelot-serdes.c17 #include <linux/regmap.h>
22 struct regmap *regs;
36 static int __serdes_write_mcb_s6g(struct regmap *regmap, u8 macro, u32 op) in __serdes_write_mcb_s6g() argument
40 regmap_write(regmap, HSIO_MCB_S6G_ADDR_CFG, op | in __serdes_write_mcb_s6g()
43 return regmap_read_poll_timeout(regmap, HSIO_MCB_S6G_ADDR_CFG, regval, in __serdes_write_mcb_s6g()
48 static int serdes_commit_mcb_s6g(struct regmap *regmap, u8 macro) in serdes_commit_mcb_s6g() argument
50 return __serdes_write_mcb_s6g(regmap, macro, in serdes_commit_mcb_s6g()
54 static int serdes_update_mcb_s6g(struct regmap *regmap, u8 macro) in serdes_update_mcb_s6g() argument
56 return __serdes_write_mcb_s6g(regmap, macro, in serdes_update_mcb_s6g()
60 static int serdes_init_s6g(struct regmap *regmap, u8 serdes, int mode) in serdes_init_s6g() argument
[all …]
/kernel/linux/linux-6.6/drivers/regulator/
Drt6190-regulator.c18 #include <linux/regmap.h>
70 struct regmap *regmap; member
78 struct regmap *regmap = rdev_get_regmap(rdev); in rt6190_out_set_voltage_sel() local
81 return regmap_raw_write(regmap, RT6190_REG_OUTV, &le_sel, in rt6190_out_set_voltage_sel()
87 struct regmap *regmap = rdev_get_regmap(rdev); in rt6190_out_get_voltage_sel() local
91 ret = regmap_raw_read(regmap, RT6190_REG_OUTV, &le_sel, sizeof(le_sel)); in rt6190_out_get_voltage_sel()
99 struct regmap *regmap = rdev_get_regmap(rdev); in rt6190_out_enable() local
109 ret = regmap_raw_read(regmap, RT6190_REG_OUTV, out_cfg, in rt6190_out_enable()
118 ret = regmap_raw_write(regmap, RT6190_REG_OUTV, out_cfg, in rt6190_out_enable()
123 return regmap_update_bits(regmap, RT6190_REG_SET5, RT6190_ENGCP_MASK, in rt6190_out_enable()
[all …]
/kernel/linux/linux-5.10/drivers/hwmon/
Dw83773g.c16 #include <linux/regmap.h>
61 static int get_local_temp(struct regmap *regmap, long *val) in get_local_temp() argument
66 ret = regmap_read(regmap, W83773_LOCAL_TEMP, &regval); in get_local_temp()
74 static int get_remote_temp(struct regmap *regmap, int index, long *val) in get_remote_temp() argument
80 ret = regmap_read(regmap, W83773_TEMP_MSB[index], &regval_high); in get_remote_temp()
84 ret = regmap_read(regmap, W83773_TEMP_LSB[index], &regval_low); in get_remote_temp()
92 static int get_fault(struct regmap *regmap, int index, long *val) in get_fault() argument
97 ret = regmap_read(regmap, W83773_STATUS[index], &regval); in get_fault()
105 static int get_offset(struct regmap *regmap, int index, long *val) in get_offset() argument
111 ret = regmap_read(regmap, W83773_OFFSET_MSB[index], &regval_high); in get_offset()
[all …]
/kernel/linux/linux-6.6/drivers/hwmon/
Dw83773g.c16 #include <linux/regmap.h>
61 static int get_local_temp(struct regmap *regmap, long *val) in get_local_temp() argument
66 ret = regmap_read(regmap, W83773_LOCAL_TEMP, &regval); in get_local_temp()
74 static int get_remote_temp(struct regmap *regmap, int index, long *val) in get_remote_temp() argument
80 ret = regmap_read(regmap, W83773_TEMP_MSB[index], &regval_high); in get_remote_temp()
84 ret = regmap_read(regmap, W83773_TEMP_LSB[index], &regval_low); in get_remote_temp()
92 static int get_fault(struct regmap *regmap, int index, long *val) in get_fault() argument
97 ret = regmap_read(regmap, W83773_STATUS[index], &regval); in get_fault()
105 static int get_offset(struct regmap *regmap, int index, long *val) in get_offset() argument
111 ret = regmap_read(regmap, W83773_OFFSET_MSB[index], &regval_high); in get_offset()
[all …]
/kernel/linux/linux-6.6/drivers/clk/davinci/
Dda8xx-cfgchip.c18 #include <linux/regmap.h>
34 struct regmap *regmap; member
46 return regmap_write_bits(clk->regmap, clk->reg, clk->mask, clk->mask); in da8xx_cfgchip_gate_clk_enable()
53 regmap_write_bits(clk->regmap, clk->reg, clk->mask, 0); in da8xx_cfgchip_gate_clk_disable()
61 regmap_read(clk->regmap, clk->reg, &val); in da8xx_cfgchip_gate_clk_is_enabled()
89 struct regmap *regmap) in da8xx_cfgchip_gate_clk_register() argument
117 gate->regmap = regmap; in da8xx_cfgchip_gate_clk_register()
135 struct regmap *regmap) in da8xx_cfgchip_register_tbclk() argument
140 regmap); in da8xx_cfgchip_register_tbclk()
158 struct regmap *regmap) in da8xx_cfgchip_register_div4p5() argument
[all …]
/kernel/linux/linux-5.10/drivers/clk/davinci/
Dda8xx-cfgchip.c18 #include <linux/regmap.h>
34 struct regmap *regmap; member
46 return regmap_write_bits(clk->regmap, clk->reg, clk->mask, clk->mask); in da8xx_cfgchip_gate_clk_enable()
53 regmap_write_bits(clk->regmap, clk->reg, clk->mask, 0); in da8xx_cfgchip_gate_clk_disable()
61 regmap_read(clk->regmap, clk->reg, &val); in da8xx_cfgchip_gate_clk_is_enabled()
89 struct regmap *regmap) in da8xx_cfgchip_gate_clk_register() argument
117 gate->regmap = regmap; in da8xx_cfgchip_gate_clk_register()
135 struct regmap *regmap) in da8xx_cfgchip_register_tbclk() argument
140 regmap); in da8xx_cfgchip_register_tbclk()
158 struct regmap *regmap) in da8xx_cfgchip_register_div4p5() argument
[all …]
/kernel/linux/linux-5.10/include/linux/
Dregmap.h33 struct regmap;
87 * @map: Regmap to read from
114 * @map: Regmap to read from
129 * Note: In general regmap cannot be used in atomic context. If you want to use
130 * this macro then first setup your regmap for atomic use (flat or no cache
131 * and MMIO regmap).
159 * @field: Regmap field to read from
209 * @yes_ranges : pointer to an array of regmap ranges used as "yes ranges"
211 * @no_ranges: pointer to an array of regmap ranges used as "no ranges"
232 * @name: Optional name of the regmap. Useful when a device has multiple
[all …]
/kernel/linux/linux-6.6/drivers/phy/mscc/
Dphy-ocelot-serdes.c17 #include <linux/regmap.h>
22 struct regmap *regs;
36 static int __serdes_write_mcb_s6g(struct regmap *regmap, u8 macro, u32 op) in __serdes_write_mcb_s6g() argument
40 regmap_write(regmap, HSIO_MCB_S6G_ADDR_CFG, op | in __serdes_write_mcb_s6g()
43 return regmap_read_poll_timeout(regmap, HSIO_MCB_S6G_ADDR_CFG, regval, in __serdes_write_mcb_s6g()
48 static int serdes_commit_mcb_s6g(struct regmap *regmap, u8 macro) in serdes_commit_mcb_s6g() argument
50 return __serdes_write_mcb_s6g(regmap, macro, in serdes_commit_mcb_s6g()
54 static int serdes_update_mcb_s6g(struct regmap *regmap, u8 macro) in serdes_update_mcb_s6g() argument
56 return __serdes_write_mcb_s6g(regmap, macro, in serdes_update_mcb_s6g()
60 static int serdes_init_s6g(struct regmap *regmap, u8 serdes, int mode) in serdes_init_s6g() argument
[all …]

12345678910>>...180