Home
last modified time | relevance | path

Searched full:lcd (Results 1 – 25 of 1945) sorted by relevance

12345678910>>...78

/kernel/linux/linux-5.10/drivers/video/backlight/
Dcorgi_lcd.c3 * LCD/Backlight Driver for Sharp Zaurus Handhelds (various models)
10 * Converted to SPI device based LCD/Backlight device driver
20 #include <linux/lcd.h>
99 static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int reg, uint8_t val);
110 static void lcdtg_ssp_i2c_send(struct corgi_lcd *lcd, uint8_t data) in lcdtg_ssp_i2c_send() argument
112 corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, data); in lcdtg_ssp_i2c_send()
116 static void lcdtg_i2c_send_bit(struct corgi_lcd *lcd, uint8_t data) in lcdtg_i2c_send_bit() argument
118 lcdtg_ssp_i2c_send(lcd, data); in lcdtg_i2c_send_bit()
119 lcdtg_ssp_i2c_send(lcd, data | POWER0_COM_DCLK); in lcdtg_i2c_send_bit()
120 lcdtg_ssp_i2c_send(lcd, data); in lcdtg_i2c_send_bit()
[all …]
Dltv350qv.c3 * Power control for Samsung LTV350QV Quarter VGA LCD Panel
11 #include <linux/lcd.h>
37 static int ltv350qv_write_reg(struct ltv350qv *lcd, u8 reg, u16 val) in ltv350qv_write_reg() argument
51 lcd->buffer[0] = LTV_OPC_INDEX; in ltv350qv_write_reg()
52 lcd->buffer[1] = 0x00; in ltv350qv_write_reg()
53 lcd->buffer[2] = reg & 0x7f; in ltv350qv_write_reg()
54 index_xfer.tx_buf = lcd->buffer; in ltv350qv_write_reg()
58 lcd->buffer[4] = LTV_OPC_DATA; in ltv350qv_write_reg()
59 lcd->buffer[5] = val >> 8; in ltv350qv_write_reg()
60 lcd->buffer[6] = val; in ltv350qv_write_reg()
[all …]
Dlms501kf03.c3 * lms501kf03 TFT LCD panel driver.
12 #include <linux/lcd.h>
103 static int lms501kf03_spi_write_byte(struct lms501kf03 *lcd, int addr, int data) in lms501kf03_spi_write_byte() argument
118 return spi_sync(lcd->spi, &msg); in lms501kf03_spi_write_byte()
121 static int lms501kf03_spi_write(struct lms501kf03 *lcd, unsigned char address, in lms501kf03_spi_write() argument
124 return lms501kf03_spi_write_byte(lcd, address, command); in lms501kf03_spi_write()
127 static int lms501kf03_panel_send_sequence(struct lms501kf03 *lcd, in lms501kf03_panel_send_sequence() argument
135 ret = lms501kf03_spi_write(lcd, COMMAND_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
137 ret = lms501kf03_spi_write(lcd, DATA_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
146 static int lms501kf03_ldi_init(struct lms501kf03 *lcd) in lms501kf03_ldi_init() argument
[all …]
Dili9320.c4 * ILI9320 LCD controller driver core.
15 #include <linux/lcd.h>
75 static void ili9320_reset(struct ili9320 *lcd) in ili9320_reset() argument
77 struct ili9320_platdata *cfg = lcd->platdata; in ili9320_reset()
89 static inline int ili9320_init_chip(struct ili9320 *lcd) in ili9320_init_chip() argument
93 ili9320_reset(lcd); in ili9320_init_chip()
95 ret = lcd->client->init(lcd, lcd->platdata); in ili9320_init_chip()
97 dev_err(lcd->dev, "failed to initialise display\n"); in ili9320_init_chip()
101 lcd->initialised = 1; in ili9320_init_chip()
105 static inline int ili9320_power_on(struct ili9320 *lcd) in ili9320_power_on() argument
[all …]
Dams369fg06.c3 * ams369fg06 AMOLED LCD panel driver.
14 #include <linux/lcd.h>
158 static int ams369fg06_spi_write_byte(struct ams369fg06 *lcd, int addr, int data) in ams369fg06_spi_write_byte() argument
173 return spi_sync(lcd->spi, &msg); in ams369fg06_spi_write_byte()
176 static int ams369fg06_spi_write(struct ams369fg06 *lcd, unsigned char address, in ams369fg06_spi_write() argument
182 ret = ams369fg06_spi_write_byte(lcd, 0x70, address); in ams369fg06_spi_write()
184 ret = ams369fg06_spi_write_byte(lcd, 0x72, command); in ams369fg06_spi_write()
189 static int ams369fg06_panel_send_sequence(struct ams369fg06 *lcd, in ams369fg06_panel_send_sequence() argument
196 ret = ams369fg06_spi_write(lcd, wbuf[i], wbuf[i+1]); in ams369fg06_panel_send_sequence()
208 static int _ams369fg06_gamma_ctl(struct ams369fg06 *lcd, in _ams369fg06_gamma_ctl() argument
[all …]
Dtdo24m.c3 * tdo24m - SPI-based drivers for Toppoly TDO24M series LCD panels
16 #include <linux/lcd.h>
33 int (*adj_mode)(struct tdo24m *lcd, int mode);
175 static int tdo24m_writes(struct tdo24m *lcd, const uint32_t *array) in tdo24m_writes() argument
177 struct spi_transfer *x = &lcd->xfer; in tdo24m_writes()
183 if (!lcd->color_invert && *p == CMD0(0x21)) in tdo24m_writes()
191 lcd->buf[0] = (data >> 8) & 0xff; in tdo24m_writes()
192 lcd->buf[1] = data & 0xff; in tdo24m_writes()
195 lcd->buf[0] = (data >> 16) & 0xff; in tdo24m_writes()
196 lcd->buf[1] = (data >> 8) & 0xff; in tdo24m_writes()
[all …]
/kernel/linux/linux-6.6/drivers/video/backlight/
Dcorgi_lcd.c3 * LCD/Backlight Driver for Sharp Zaurus Handhelds (various models)
10 * Converted to SPI device based LCD/Backlight device driver
20 #include <linux/lcd.h>
99 static int corgi_ssp_lcdtg_send(struct corgi_lcd *lcd, int reg, uint8_t val);
110 static void lcdtg_ssp_i2c_send(struct corgi_lcd *lcd, uint8_t data) in lcdtg_ssp_i2c_send() argument
112 corgi_ssp_lcdtg_send(lcd, POWERREG0_ADRS, data); in lcdtg_ssp_i2c_send()
116 static void lcdtg_i2c_send_bit(struct corgi_lcd *lcd, uint8_t data) in lcdtg_i2c_send_bit() argument
118 lcdtg_ssp_i2c_send(lcd, data); in lcdtg_i2c_send_bit()
119 lcdtg_ssp_i2c_send(lcd, data | POWER0_COM_DCLK); in lcdtg_i2c_send_bit()
120 lcdtg_ssp_i2c_send(lcd, data); in lcdtg_i2c_send_bit()
[all …]
Dltv350qv.c3 * Power control for Samsung LTV350QV Quarter VGA LCD Panel
11 #include <linux/lcd.h>
36 static int ltv350qv_write_reg(struct ltv350qv *lcd, u8 reg, u16 val) in ltv350qv_write_reg() argument
50 lcd->buffer[0] = LTV_OPC_INDEX; in ltv350qv_write_reg()
51 lcd->buffer[1] = 0x00; in ltv350qv_write_reg()
52 lcd->buffer[2] = reg & 0x7f; in ltv350qv_write_reg()
53 index_xfer.tx_buf = lcd->buffer; in ltv350qv_write_reg()
57 lcd->buffer[4] = LTV_OPC_DATA; in ltv350qv_write_reg()
58 lcd->buffer[5] = val >> 8; in ltv350qv_write_reg()
59 lcd->buffer[6] = val; in ltv350qv_write_reg()
[all …]
Dlms501kf03.c3 * lms501kf03 TFT LCD panel driver.
12 #include <linux/lcd.h>
103 static int lms501kf03_spi_write_byte(struct lms501kf03 *lcd, int addr, int data) in lms501kf03_spi_write_byte() argument
118 return spi_sync(lcd->spi, &msg); in lms501kf03_spi_write_byte()
121 static int lms501kf03_spi_write(struct lms501kf03 *lcd, unsigned char address, in lms501kf03_spi_write() argument
124 return lms501kf03_spi_write_byte(lcd, address, command); in lms501kf03_spi_write()
127 static int lms501kf03_panel_send_sequence(struct lms501kf03 *lcd, in lms501kf03_panel_send_sequence() argument
135 ret = lms501kf03_spi_write(lcd, COMMAND_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
137 ret = lms501kf03_spi_write(lcd, DATA_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
146 static int lms501kf03_ldi_init(struct lms501kf03 *lcd) in lms501kf03_ldi_init() argument
[all …]
Dili9320.c4 * ILI9320 LCD controller driver core.
15 #include <linux/lcd.h>
75 static void ili9320_reset(struct ili9320 *lcd) in ili9320_reset() argument
77 struct ili9320_platdata *cfg = lcd->platdata; in ili9320_reset()
89 static inline int ili9320_init_chip(struct ili9320 *lcd) in ili9320_init_chip() argument
93 ili9320_reset(lcd); in ili9320_init_chip()
95 ret = lcd->client->init(lcd, lcd->platdata); in ili9320_init_chip()
97 dev_err(lcd->dev, "failed to initialise display\n"); in ili9320_init_chip()
101 lcd->initialised = 1; in ili9320_init_chip()
105 static inline int ili9320_power_on(struct ili9320 *lcd) in ili9320_power_on() argument
[all …]
Dams369fg06.c3 * ams369fg06 AMOLED LCD panel driver.
14 #include <linux/lcd.h>
158 static int ams369fg06_spi_write_byte(struct ams369fg06 *lcd, int addr, int data) in ams369fg06_spi_write_byte() argument
173 return spi_sync(lcd->spi, &msg); in ams369fg06_spi_write_byte()
176 static int ams369fg06_spi_write(struct ams369fg06 *lcd, unsigned char address, in ams369fg06_spi_write() argument
182 ret = ams369fg06_spi_write_byte(lcd, 0x70, address); in ams369fg06_spi_write()
184 ret = ams369fg06_spi_write_byte(lcd, 0x72, command); in ams369fg06_spi_write()
189 static int ams369fg06_panel_send_sequence(struct ams369fg06 *lcd, in ams369fg06_panel_send_sequence() argument
196 ret = ams369fg06_spi_write(lcd, wbuf[i], wbuf[i+1]); in ams369fg06_panel_send_sequence()
208 static int _ams369fg06_gamma_ctl(struct ams369fg06 *lcd, in _ams369fg06_gamma_ctl() argument
[all …]
Dtdo24m.c3 * tdo24m - SPI-based drivers for Toppoly TDO24M series LCD panels
16 #include <linux/lcd.h>
33 int (*adj_mode)(struct tdo24m *lcd, int mode);
175 static int tdo24m_writes(struct tdo24m *lcd, const uint32_t *array) in tdo24m_writes() argument
177 struct spi_transfer *x = &lcd->xfer; in tdo24m_writes()
183 if (!lcd->color_invert && *p == CMD0(0x21)) in tdo24m_writes()
191 lcd->buf[0] = (data >> 8) & 0xff; in tdo24m_writes()
192 lcd->buf[1] = data & 0xff; in tdo24m_writes()
195 lcd->buf[0] = (data >> 16) & 0xff; in tdo24m_writes()
196 lcd->buf[1] = (data >> 8) & 0xff; in tdo24m_writes()
[all …]
/kernel/linux/linux-6.6/drivers/auxdisplay/
Dcharlcd.c3 * Character LCD driver for Linux
27 #define LCD_ESCAPE_LEN 24 /* Max chars for LCD escape command */
31 struct charlcd lcd; member
39 /* contains the LCD config state */
51 #define charlcd_to_priv(p) container_of(p, struct charlcd_priv, lcd)
57 void charlcd_backlight(struct charlcd *lcd, enum charlcd_onoff on) in charlcd_backlight() argument
59 struct charlcd_priv *priv = charlcd_to_priv(lcd); in charlcd_backlight()
61 if (!lcd->ops->backlight) in charlcd_backlight()
66 lcd->ops->backlight(lcd, on); in charlcd_backlight()
81 priv->lcd.ops->backlight(&priv->lcd, CHARLCD_OFF); in charlcd_bl_off()
[all …]
Darm-charlcd.c3 * Driver for the on-board character LCD found on some ARM reference boards
4 * This is basically an Hitachi HD44780 LCD with a custom IP block to drive it
63 * @complete: completion structure for the last LCD command
78 struct charlcd *lcd = data; in charlcd_interrupt() local
81 status = readl(lcd->virtbase + CHAR_STAT) & 0x01; in charlcd_interrupt()
83 writel(CHAR_RAW_CLEAR, lcd->virtbase + CHAR_RAW); in charlcd_interrupt()
85 complete(&lcd->complete); in charlcd_interrupt()
87 dev_info(lcd->dev, "Spurious IRQ (%02x)\n", status); in charlcd_interrupt()
92 static void charlcd_wait_complete_irq(struct charlcd *lcd) in charlcd_wait_complete_irq() argument
96 ret = wait_for_completion_interruptible_timeout(&lcd->complete, in charlcd_wait_complete_irq()
[all …]
/kernel/linux/linux-5.10/Documentation/devicetree/bindings/display/panel/
Dpanel-simple.yaml32 # Ampire AM-1280800N3TZQW-T00H 10.1" WQVGA TFT LCD panel
34 # Ampire AM-480272H3TMQW-T01H 4.3" WQVGA TFT LCD panel
36 # Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel
38 # AU Optronics Corporation 10.1" WSVGA TFT LCD panel
40 # AU Optronics Corporation 10.1" WSVGA TFT LCD panel
42 # AU Optronics Corporation 10.1" WXGA TFT LCD panel
44 # AUO B116XAK01 eDP TFT LCD panel
46 # AU Optronics Corporation 11.6" HD (1366x768) color TFT-LCD panel
48 # AU Optronics Corporation 13.3" FHD (1920x1080) color TFT-LCD panel
50 # AU Optronics Corporation 13.3" WXGA (1366x768) TFT LCD panel
[all …]
/kernel/linux/linux-6.6/Documentation/devicetree/bindings/display/panel/
Dpanel-simple.yaml32 # Ampire AM-1280800N3TZQW-T00H 10.1" WQVGA TFT LCD panel
34 # Ampire AM-480272H3TMQW-T01H 4.3" WQVGA TFT LCD panel
36 # Ampire AM-800480L1TMQW-T00H 5" WVGA TFT LCD panel
38 # Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel
40 # Ampire AM-800600P5TMQW-TB8H 8.0" SVGA TFT LCD panel
42 # AU Optronics Corporation 10.1" WSVGA TFT LCD panel
44 # AU Optronics Corporation 10.1" WSVGA TFT LCD panel
46 # AU Optronics Corporation 10.1" WXGA TFT LCD panel
48 # AUO B116XAK01 eDP TFT LCD panel
50 # AU Optronics Corporation 11.6" HD (1366x768) color TFT-LCD panel
[all …]
/kernel/linux/linux-6.6/drivers/gpu/drm/panel/
Dpanel-sony-acx565akm.c3 * Sony ACX565AKM LCD Panel driver
75 static void acx565akm_transfer(struct acx565akm_panel *lcd, int cmd, in acx565akm_transfer() argument
118 ret = spi_sync(lcd->spi, &m); in acx565akm_transfer()
120 dev_dbg(&lcd->spi->dev, "spi_sync %d\n", ret); in acx565akm_transfer()
123 static inline void acx565akm_cmd(struct acx565akm_panel *lcd, int cmd) in acx565akm_cmd() argument
125 acx565akm_transfer(lcd, cmd, NULL, 0, NULL, 0); in acx565akm_cmd()
128 static inline void acx565akm_write(struct acx565akm_panel *lcd, in acx565akm_write() argument
131 acx565akm_transfer(lcd, reg, buf, len, NULL, 0); in acx565akm_write()
134 static inline void acx565akm_read(struct acx565akm_panel *lcd, in acx565akm_read() argument
137 acx565akm_transfer(lcd, reg, NULL, 0, buf, len); in acx565akm_read()
[all …]
Dpanel-tpo-td028ttec1.c94 jbt_ret_write_0(struct td028ttec1_panel *lcd, u8 reg, int *err) in jbt_ret_write_0() argument
96 struct spi_device *spi = lcd->spi; in jbt_ret_write_0()
114 jbt_reg_write_1(struct td028ttec1_panel *lcd, in jbt_reg_write_1() argument
117 struct spi_device *spi = lcd->spi; in jbt_reg_write_1()
138 jbt_reg_write_2(struct td028ttec1_panel *lcd, in jbt_reg_write_2() argument
141 struct spi_device *spi = lcd->spi; in jbt_reg_write_2()
164 struct td028ttec1_panel *lcd = to_td028ttec1_device(panel); in td028ttec1_prepare() local
170 jbt_ret_write_0(lcd, 0x00, &ret); in td028ttec1_prepare()
175 jbt_reg_write_1(lcd, JBT_REG_POWER_ON_OFF, 0x17, &ret); in td028ttec1_prepare()
178 jbt_reg_write_1(lcd, JBT_REG_DISPLAY_MODE, 0x80, &ret); in td028ttec1_prepare()
[all …]
Dpanel-tpo-td043mtea1.c74 static int td043mtea1_write(struct td043mtea1_panel *lcd, u8 addr, u8 value) in td043mtea1_write() argument
91 ret = spi_sync(lcd->spi, &msg); in td043mtea1_write()
93 dev_warn(&lcd->spi->dev, "failed to write to LCD reg (%d)\n", in td043mtea1_write()
99 static void td043mtea1_write_gamma(struct td043mtea1_panel *lcd) in td043mtea1_write_gamma() argument
101 const u16 *gamma = lcd->gamma; in td043mtea1_write_gamma()
108 td043mtea1_write(lcd, 0x11, val); in td043mtea1_write_gamma()
112 td043mtea1_write(lcd, 0x12, val); in td043mtea1_write_gamma()
116 td043mtea1_write(lcd, 0x13, val); in td043mtea1_write_gamma()
120 td043mtea1_write(lcd, 0x14 + i, gamma[i] & 0xff); in td043mtea1_write_gamma()
123 static int td043mtea1_write_mirror(struct td043mtea1_panel *lcd) in td043mtea1_write_mirror() argument
[all …]
Dpanel-olimex-lcd-olinuxino.c3 * LCD-OLinuXino support for panel driver
83 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_disable() local
85 if (!lcd->enabled) in lcd_olinuxino_disable()
88 lcd->enabled = false; in lcd_olinuxino_disable()
95 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_unprepare() local
97 if (!lcd->prepared) in lcd_olinuxino_unprepare()
100 gpiod_set_value_cansleep(lcd->enable_gpio, 0); in lcd_olinuxino_unprepare()
101 regulator_disable(lcd->supply); in lcd_olinuxino_unprepare()
103 lcd->prepared = false; in lcd_olinuxino_unprepare()
110 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_prepare() local
[all …]
/kernel/linux/linux-5.10/drivers/gpu/drm/panel/
Dpanel-sony-acx565akm.c3 * Sony ACX565AKM LCD Panel driver
75 static void acx565akm_transfer(struct acx565akm_panel *lcd, int cmd, in acx565akm_transfer() argument
118 ret = spi_sync(lcd->spi, &m); in acx565akm_transfer()
120 dev_dbg(&lcd->spi->dev, "spi_sync %d\n", ret); in acx565akm_transfer()
123 static inline void acx565akm_cmd(struct acx565akm_panel *lcd, int cmd) in acx565akm_cmd() argument
125 acx565akm_transfer(lcd, cmd, NULL, 0, NULL, 0); in acx565akm_cmd()
128 static inline void acx565akm_write(struct acx565akm_panel *lcd, in acx565akm_write() argument
131 acx565akm_transfer(lcd, reg, buf, len, NULL, 0); in acx565akm_write()
134 static inline void acx565akm_read(struct acx565akm_panel *lcd, in acx565akm_read() argument
137 acx565akm_transfer(lcd, reg, NULL, 0, buf, len); in acx565akm_read()
[all …]
Dpanel-tpo-td043mtea1.c74 static int td043mtea1_write(struct td043mtea1_panel *lcd, u8 addr, u8 value) in td043mtea1_write() argument
91 ret = spi_sync(lcd->spi, &msg); in td043mtea1_write()
93 dev_warn(&lcd->spi->dev, "failed to write to LCD reg (%d)\n", in td043mtea1_write()
99 static void td043mtea1_write_gamma(struct td043mtea1_panel *lcd) in td043mtea1_write_gamma() argument
101 const u16 *gamma = lcd->gamma; in td043mtea1_write_gamma()
108 td043mtea1_write(lcd, 0x11, val); in td043mtea1_write_gamma()
112 td043mtea1_write(lcd, 0x12, val); in td043mtea1_write_gamma()
116 td043mtea1_write(lcd, 0x13, val); in td043mtea1_write_gamma()
120 td043mtea1_write(lcd, 0x14 + i, gamma[i] & 0xff); in td043mtea1_write_gamma()
123 static int td043mtea1_write_mirror(struct td043mtea1_panel *lcd) in td043mtea1_write_mirror() argument
[all …]
Dpanel-tpo-td028ttec1.c94 jbt_ret_write_0(struct td028ttec1_panel *lcd, u8 reg, int *err) in jbt_ret_write_0() argument
96 struct spi_device *spi = lcd->spi; in jbt_ret_write_0()
114 jbt_reg_write_1(struct td028ttec1_panel *lcd, in jbt_reg_write_1() argument
117 struct spi_device *spi = lcd->spi; in jbt_reg_write_1()
138 jbt_reg_write_2(struct td028ttec1_panel *lcd, in jbt_reg_write_2() argument
141 struct spi_device *spi = lcd->spi; in jbt_reg_write_2()
164 struct td028ttec1_panel *lcd = to_td028ttec1_device(panel); in td028ttec1_prepare() local
170 jbt_ret_write_0(lcd, 0x00, &ret); in td028ttec1_prepare()
175 jbt_reg_write_1(lcd, JBT_REG_POWER_ON_OFF, 0x17, &ret); in td028ttec1_prepare()
178 jbt_reg_write_1(lcd, JBT_REG_DISPLAY_MODE, 0x80, &ret); in td028ttec1_prepare()
[all …]
/kernel/linux/linux-5.10/drivers/auxdisplay/
Darm-charlcd.c3 * Driver for the on-board character LCD found on some ARM reference boards
4 * This is basically an Hitachi HD44780 LCD with a custom IP block to drive it
63 * @complete: completion structure for the last LCD command
78 struct charlcd *lcd = data; in charlcd_interrupt() local
81 status = readl(lcd->virtbase + CHAR_STAT) & 0x01; in charlcd_interrupt()
83 writel(CHAR_RAW_CLEAR, lcd->virtbase + CHAR_RAW); in charlcd_interrupt()
85 complete(&lcd->complete); in charlcd_interrupt()
87 dev_info(lcd->dev, "Spurious IRQ (%02x)\n", status); in charlcd_interrupt()
92 static void charlcd_wait_complete_irq(struct charlcd *lcd) in charlcd_wait_complete_irq() argument
96 ret = wait_for_completion_interruptible_timeout(&lcd->complete, in charlcd_wait_complete_irq()
[all …]
Dcharlcd.c3 * Character LCD driver for Linux
38 /* LCD commands */
62 #define LCD_ESCAPE_LEN 24 /* Max chars for LCD escape command */
66 struct charlcd lcd; member
74 /* contains the LCD config state */
77 /* Contains the LCD X and Y offset */
92 #define charlcd_to_priv(p) container_of(p, struct charlcd_priv, lcd)
104 static void charlcd_backlight(struct charlcd *lcd, int on) in charlcd_backlight() argument
106 struct charlcd_priv *priv = charlcd_to_priv(lcd); in charlcd_backlight()
108 if (!lcd->ops->backlight) in charlcd_backlight()
[all …]

12345678910>>...78