Home
last modified time | relevance | path

Searched full:pm (Results 1 – 25 of 2530) sorted by relevance

12345678910>>...102

/linux/drivers/input/touchscreen/
H A Dpenmount.c50 struct pm { struct
59 void (*parse_packet)(struct pm *); argument
66 static void pm_mtevent(struct pm *pm, struct input_dev *input) in pm_mtevent() argument
70 for (i = 0; i < pm->maxcontacts; ++i) { in pm_mtevent()
73 pm->slots[i].active); in pm_mtevent()
74 if (pm->slots[i].active) { in pm_mtevent()
75 input_event(input, EV_ABS, ABS_MT_POSITION_X, pm->slots[i].x); in pm_mtevent()
76 input_event(input, EV_ABS, ABS_MT_POSITION_Y, pm->slots[i].y); in pm_mtevent()
99 static void pm_parse_9000(struct pm *pm) in pm_parse_9000() argument
101 struct input_dev *dev = pm->dev; in pm_parse_9000()
[all …]
/linux/drivers/input/misc/
H A Dpowermate.c88 struct powermate_device *pm = urb->context; in powermate_irq() local
89 struct device *dev = &pm->intf->dev; in powermate_irq()
110 input_report_key(pm->input, BTN_0, pm->data[0] & 0x01); in powermate_irq()
111 input_report_rel(pm->input, REL_DIAL, pm->data[1]); in powermate_irq()
112 input_sync(pm->input); in powermate_irq()
121 /* Decide if we need to issue a control message and do so. Must be called with pm->lock taken */
122 static void powermate_sync_state(struct powermate_device *pm) in powermate_sync_state() argument
124 if (pm->requires_update == 0) in powermate_sync_state()
126 if (pm->config->status == -EINPROGRESS) in powermate_sync_state()
129 if (pm->requires_update & UPDATE_PULSE_ASLEEP){ in powermate_sync_state()
[all …]
/linux/drivers/hid/
H A Dhid-prodikeys.c37 struct pcmidi_snd *pm; member
94 struct pcmidi_snd *pm = hid_get_drvdata(hdev); in show_channel() local
96 dbg_hid("pcmidi sysfs read channel=%u\n", pm->midi_channel); in show_channel()
98 return sprintf(buf, "%u (min:%u, max:%u)\n", pm->midi_channel, in show_channel()
107 struct pcmidi_snd *pm = hid_get_drvdata(hdev); in store_channel() local
113 pm->midi_channel = channel; in store_channel()
131 struct pcmidi_snd *pm = hid_get_drvdata(hdev); in show_sustain() local
133 dbg_hid("pcmidi sysfs read sustain=%u\n", pm->midi_sustain); in show_sustain()
135 return sprintf(buf, "%u (off:%u, max:%u (ms))\n", pm->midi_sustain, in show_sustain()
144 struct pcmidi_snd *pm = hid_get_drvdata(hdev); in store_sustain() local
[all …]
/linux/include/linux/
H A Dpm_runtime.h13 #include <linux/pm.h>
17 /* Runtime PM flag argument bits */
24 #define RPM_TRANSPARENT 0x10 /* Succeed if runtime PM is disabled */
27 * Use this for defining a set of PM operations to be used in all situations
28 * (system suspend, hibernation or runtime PM).
31 * macro, which uses the provided callbacks for both runtime PM and system
103 * pm_suspend_ignore_children - Set runtime PM behavior regarding children.
108 * the runtime PM framework going forward if @enable is %true, or they will
117 * pm_runtime_get_noresume - Bump up runtime PM usage counter of a device.
126 * pm_runtime_put_noidle - Drop runtime PM usage counter of a device.
[all …]
/linux/drivers/gpu/drm/amd/pm/legacy-dpm/
H A Dlegacy_dpm.c105 rps == adev->pm.dpm.current_ps ? " c" : "", in amdgpu_dpm_dbg_print_ps_status()
106 rps == adev->pm.dpm.requested_ps ? " r" : "", in amdgpu_dpm_dbg_print_ps_status()
107 rps == adev->pm.dpm.boot_ps ? " b" : ""); in amdgpu_dpm_dbg_print_ps_status()
117 for (i = 0; i < adev->pm.dpm.num_ps; i++) in amdgpu_pm_print_power_states()
118 amdgpu_dpm_print_power_state(adev, &adev->pm.dpm.ps[i]); in amdgpu_pm_print_power_states()
146 adev->pm.dpm.platform_caps = le32_to_cpu(power_info->pplib.ulPlatformCaps); in amdgpu_get_platform_caps()
147 adev->pm.dpm.backbias_response_time = le16_to_cpu(power_info->pplib.usBackbiasTime); in amdgpu_get_platform_caps()
148 adev->pm.dpm.voltage_response_time = le16_to_cpu(power_info->pplib.usVoltageTime); in amdgpu_get_platform_caps()
216 adev->pm.dpm.fan.t_hyst = fan_info->fan.ucTHyst; in amdgpu_parse_extended_power_table()
217 adev->pm.dpm.fan.t_min = le16_to_cpu(fan_info->fan.usTMin); in amdgpu_parse_extended_power_table()
[all …]
/linux/drivers/media/platform/samsung/s5p-mfc/
H A Ds5p_mfc_pm.c19 struct s5p_mfc_pm *pm = &dev->pm; in s5p_mfc_init_pm() local
22 pm->num_clocks = dev->variant->num_clocks; in s5p_mfc_init_pm()
23 pm->clk_names = dev->variant->clk_names; in s5p_mfc_init_pm()
24 pm->device = &dev->plat_dev->dev; in s5p_mfc_init_pm()
25 pm->clock_gate = NULL; in s5p_mfc_init_pm()
28 for (i = 0; i < pm->num_clocks; i++) { in s5p_mfc_init_pm()
29 pm->clocks[i] = devm_clk_get(pm->device, pm->clk_names[i]); in s5p_mfc_init_pm()
30 if (IS_ERR(pm->clocks[i])) { in s5p_mfc_init_pm()
32 if (i && PTR_ERR(pm->clocks[i]) == -ENOENT) { in s5p_mfc_init_pm()
33 pm->clocks[i] = NULL; in s5p_mfc_init_pm()
[all …]
/linux/drivers/gpu/drm/amd/pm/
H A Damdgpu_dpm.c49 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_get_sclk()
52 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_get_sclk()
65 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_get_mclk()
68 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_get_mclk()
83 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_set_powergating_by_smu()
85 if (atomic_read(&adev->pm.pwr_state[block_type]) == pwr_state && in amdgpu_dpm_set_powergating_by_smu()
116 atomic_set(&adev->pm.pwr_state[block_type], pwr_state); in amdgpu_dpm_set_powergating_by_smu()
119 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_set_powergating_by_smu()
129 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_set_gfx_power_up_by_imu()
131 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_set_gfx_power_up_by_imu()
[all …]
/linux/drivers/scsi/
H A Dscsi_pm.c11 #include <linux/blk-pm.h>
22 static int do_scsi_suspend(struct device *dev, const struct dev_pm_ops *pm) in do_scsi_suspend() argument
24 return pm && pm->suspend ? pm->suspend(dev) : 0; in do_scsi_suspend()
27 static int do_scsi_freeze(struct device *dev, const struct dev_pm_ops *pm) in do_scsi_freeze() argument
29 return pm && pm->freeze ? pm->freeze(dev) : 0; in do_scsi_freeze()
32 static int do_scsi_poweroff(struct device *dev, const struct dev_pm_ops *pm) in do_scsi_poweroff() argument
34 return pm && pm->poweroff ? pm->poweroff(dev) : 0; in do_scsi_poweroff()
37 static int do_scsi_resume(struct device *dev, const struct dev_pm_ops *pm) in do_scsi_resume() argument
39 return pm && pm->resume ? pm->resume(dev) : 0; in do_scsi_resume()
42 static int do_scsi_thaw(struct device *dev, const struct dev_pm_ops *pm) in do_scsi_thaw() argument
[all …]
/linux/net/mptcp/
H A Dpm.c142 lockdep_assert_held(&msk->pm.lock); in mptcp_pm_announced_lookup()
144 list_for_each_entry(entry, &msk->pm.anno_list, list) { in mptcp_pm_announced_lookup()
162 spin_lock_bh(&msk->pm.lock); in mptcp_pm_announced_del_timer()
170 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_announced_del_timer()
207 spin_lock_bh(&msk->pm.lock); in mptcp_pm_announced_has_ssk()
208 list_for_each_entry(entry, &msk->pm.anno_list, list) { in mptcp_pm_announced_has_ssk()
216 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_announced_has_ssk()
245 spin_unlock_bh(&msk->pm.lock); in mptcp_pm_send_ack()
247 spin_lock_bh(&msk->pm.lock); in mptcp_pm_send_ack()
271 lockdep_assert_held(&msk->pm.lock); in mptcp_pm_addr_send_ack_avoid_list()
[all …]
H A Dpm_kernel.c135 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap)) in select_local_address()
163 if (!test_bit(entry->addr.id, msk->pm.id_avail_bitmap)) in select_signal_address()
184 bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0); in fill_remote_addr()
196 msk->pm.extra_subflows++; in fill_remote_addr()
209 bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0); in fill_remote_addresses_fullmesh()
238 msk->pm.extra_subflows++; in fill_remote_addresses_fullmesh()
241 if (msk->pm.extra_subflows >= limit_extra_subflows || in fill_remote_addresses_fullmesh()
309 if (likely(msk->pm.status & BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED)) || in mptcp_mpc_endpoint_setup()
320 __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); in mptcp_mpc_endpoint_setup()
330 msk->pm.status |= BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED); in mptcp_mpc_endpoint_setup()
[all …]
H A Dpm_userspace.c13 &((__msk)->pm.userspace_pm_local_addr_list), list)
21 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_free_local_addr_list()
22 list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list); in mptcp_userspace_pm_free_local_addr_list()
23 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_free_local_addr_list()
56 spin_lock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
57 if (msk->pm.status & BIT(MPTCP_PM_DESTROYING)) { in mptcp_userspace_pm_append_new_local_addr()
95 list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list); in mptcp_userspace_pm_append_new_local_addr()
96 msk->pm.local_addr_used++; in mptcp_userspace_pm_append_new_local_addr()
103 spin_unlock_bh(&msk->pm.lock); in mptcp_userspace_pm_append_new_local_addr()
127 msk->pm.local_addr_used--; in mptcp_userspace_pm_delete_local_addr()
[all …]
/linux/sound/drivers/
H A Dportman2x4.c77 static int portman_free(struct portman *pm) in portman_free() argument
79 kfree(pm); in portman_free()
87 struct portman *pm; in portman_create() local
91 pm = kzalloc_obj(struct portman); in portman_create()
92 if (pm == NULL) in portman_create()
96 spin_lock_init(&pm->reg_lock); in portman_create()
97 pm->card = card; in portman_create()
98 pm->pardev = pardev; in portman_create()
100 *rchip = pm; in portman_create()
180 static inline void portman_write_command(struct portman *pm, u argument
185 portman_read_status(struct portman * pm) portman_read_status() argument
190 portman_write_data(struct portman * pm,u8 value) portman_write_data() argument
195 portman_write_midi(struct portman * pm,int port,u8 mididata) portman_write_midi() argument
267 portman_read_midi(struct portman * pm,int port) portman_read_midi() argument
349 portman_data_avail(struct portman * pm,int channel) portman_data_avail() argument
374 portman_flush_input(struct portman * pm,unsigned char port) portman_flush_input() argument
474 portman_device_init(struct portman * pm) portman_device_init() argument
498 struct portman *pm = substream->rmidi->private_data; snd_portman_midi_input_trigger() local
510 struct portman *pm = substream->rmidi->private_data; snd_portman_midi_output_trigger() local
535 struct portman *pm = card->private_data; snd_portman_rawmidi_create() local
587 struct portman *pm = ((struct snd_card*)userdata)->private_data; snd_portman_interrupt() local
671 struct portman *pm = card->private_data; snd_portman_card_private_free() local
688 struct portman *pm = NULL; snd_portman_probe() local
[all...]
/linux/arch/powerpc/include/asm/
H A Dreg_fsl_emb.h44 #define PMRN_PMLCA0 0x090 /* PM Local Control A0 */
45 #define PMRN_PMLCA1 0x091 /* PM Local Control A1 */
46 #define PMRN_PMLCA2 0x092 /* PM Local Control A2 */
47 #define PMRN_PMLCA3 0x093 /* PM Local Control A3 */
48 #define PMRN_PMLCA4 0x094 /* PM Local Control A4 */
49 #define PMRN_PMLCA5 0x095 /* PM Local Control A5 */
63 #define PMRN_PMLCB0 0x110 /* PM Local Control B0 */
64 #define PMRN_PMLCB1 0x111 /* PM Local Control B1 */
65 #define PMRN_PMLCB2 0x112 /* PM Local Control B2 */
66 #define PMRN_PMLCB3 0x113 /* PM Local Control B3 */
[all …]
/linux/tools/power/pm-graph/
H A DMakefile36 $(INSTALL) -d $(DESTDIR)$(LIBDIR)/pm-graph
37 $(INSTALL) sleepgraph.py $(DESTDIR)$(LIBDIR)/pm-graph
38 $(INSTALL) bootgraph.py $(DESTDIR)$(LIBDIR)/pm-graph
39 $(INSTALL) -d $(DESTDIR)$(LIBDIR)/pm-graph/config
40 $(INSTALL_DATA) config/cgskip.txt $(DESTDIR)$(LIBDIR)/pm-graph/config
41 $(INSTALL_DATA) config/freeze-callgraph.cfg $(DESTDIR)$(LIBDIR)/pm-graph/config
42 $(INSTALL_DATA) config/freeze.cfg $(DESTDIR)$(LIBDIR)/pm-graph/config
43 $(INSTALL_DATA) config/freeze-dev.cfg $(DESTDIR)$(LIBDIR)/pm-graph/config
44 $(INSTALL_DATA) config/standby-callgraph.cfg $(DESTDIR)$(LIBDIR)/pm-graph/config
45 $(INSTALL_DATA) config/standby.cfg $(DESTDIR)$(LIBDIR)/pm-graph/config
[all …]
/linux/drivers/base/power/
H A Dcommon.c84 * dev_pm_domain_attach - Attach a device to its PM domain.
88 * The @dev may only be attached to a single PM domain. By iterating through
89 * the available alternatives we try to find a valid PM domain for the device.
95 * power management through PM domains.
100 * Returns 0 on successfully attached PM domain, or when it is found that the
101 * device doesn't need a PM domain, else a negative error code.
122 * dev_pm_domain_attach_by_id - Associate a device with one of its PM domains.
123 * @dev: The device used to lookup the PM domain.
124 * @index: The index of the PM domain.
126 * As @dev may only be attached to a single PM domain, the backend PM domain
[all …]
H A Dmain.c18 #define pr_fmt(fmt) "PM: " fmt
24 #include <linux/pm.h>
26 #include <linux/pm-trace.h>
45 #define MODULE_PARAM_PREFIX "pm."
107 return "(unknown PM event)"; in pm_verb()
128 * device_pm_lock - Lock the list of active devices used by the PM core.
136 * device_pm_unlock - Unlock the list of active devices used by the PM core.
144 * device_pm_add - Add a device to the PM core's list of active devices.
149 /* Skip PM setup/initialization. */ in device_pm_add()
166 * device_pm_remove - Remove a device from the PM core's list of active devices.
[all …]
/linux/drivers/accel/ivpu/
H A Divpu_pm.c130 atomic_inc(&vdev->pm->reset_counter); in ivpu_pm_reset_begin()
131 atomic_set(&vdev->pm->reset_pending, 1); in ivpu_pm_reset_begin()
132 down_write(&vdev->pm->reset_lock); in ivpu_pm_reset_begin()
151 up_write(&vdev->pm->reset_lock); in ivpu_pm_reset_complete()
152 atomic_set(&vdev->pm->reset_pending, 0); in ivpu_pm_reset_complete()
160 struct ivpu_pm_info *pm = container_of(work, struct ivpu_pm_info, recovery_work); in ivpu_pm_recovery_work() local
161 struct ivpu_device *vdev = pm->vdev; in ivpu_pm_recovery_work()
164 ivpu_err(vdev, "Recovering the NPU (reset #%d)\n", atomic_read(&vdev->pm->reset_counter)); in ivpu_pm_recovery_work()
189 if (atomic_cmpxchg(&vdev->pm->reset_pending, 0, 1) == 0) { in ivpu_pm_trigger_recovery()
192 queue_work(system_dfl_wq, &vdev->pm->recovery_work); in ivpu_pm_trigger_recovery()
[all …]
/linux/drivers/gpu/drm/radeon/
H A Dr600.c366 rdev->pm.dynpm_can_upclock = true; in r600_pm_get_dynpm_state()
367 rdev->pm.dynpm_can_downclock = true; in r600_pm_get_dynpm_state()
373 if (rdev->pm.num_power_states > 2) in r600_pm_get_dynpm_state()
376 switch (rdev->pm.dynpm_planned_action) { in r600_pm_get_dynpm_state()
378 rdev->pm.requested_power_state_index = min_power_state_index; in r600_pm_get_dynpm_state()
379 rdev->pm.requested_clock_mode_index = 0; in r600_pm_get_dynpm_state()
380 rdev->pm.dynpm_can_downclock = false; in r600_pm_get_dynpm_state()
383 if (rdev->pm.current_power_state_index == min_power_state_index) { in r600_pm_get_dynpm_state()
384 rdev->pm.requested_power_state_index = rdev->pm.current_power_state_index; in r600_pm_get_dynpm_state()
385 rdev->pm.dynpm_can_downclock = false; in r600_pm_get_dynpm_state()
[all …]
H A Dr420.c48 rdev->pm.profiles[PM_PROFILE_DEFAULT_IDX].dpms_off_ps_idx = rdev->pm.default_power_state_index; in r420_pm_init_profile()
49 rdev->pm.profiles[PM_PROFILE_DEFAULT_IDX].dpms_on_ps_idx = rdev->pm.default_power_state_index; in r420_pm_init_profile()
50 rdev->pm.profiles[PM_PROFILE_DEFAULT_IDX].dpms_off_cm_idx = 0; in r420_pm_init_profile()
51 rdev->pm.profiles[PM_PROFILE_DEFAULT_IDX].dpms_on_cm_idx = 0; in r420_pm_init_profile()
53 rdev->pm.profiles[PM_PROFILE_LOW_SH_IDX].dpms_off_ps_idx = 0; in r420_pm_init_profile()
54 rdev->pm.profiles[PM_PROFILE_LOW_SH_IDX].dpms_on_ps_idx = 0; in r420_pm_init_profile()
55 rdev->pm.profiles[PM_PROFILE_LOW_SH_IDX].dpms_off_cm_idx = 0; in r420_pm_init_profile()
56 rdev->pm.profiles[PM_PROFILE_LOW_SH_IDX].dpms_on_cm_idx = 0; in r420_pm_init_profile()
58 rdev->pm.profiles[PM_PROFILE_MID_SH_IDX].dpms_off_ps_idx = 0; in r420_pm_init_profile()
59 rdev->pm.profiles[PM_PROFILE_MID_SH_IDX].dpms_on_ps_idx = 1; in r420_pm_init_profile()
[all …]
/linux/drivers/pmdomain/xilinx/
H A Dzynqmp-pm-domains.c3 * ZynqMP Generic PM domain support
29 * @node_id: PM node ID corresponding to device inside PM domain
30 * @requested: The PM node mapped to the PM domain has been requested
65 * zynqmp_gpd_power_on() - Power on PM domain
66 * @domain: Generic PM domain
68 * This function is called before devices inside a PM domain are resumed, to
69 * power on PM domain.
84 "failed to set requirement to 0x%x for PM node id %d: %d\n", in zynqmp_gpd_power_on()
89 dev_dbg(&domain->dev, "set requirement to 0x%x for PM node id %d\n", in zynqmp_gpd_power_on()
96 * zynqmp_gpd_power_off() - Power off PM domain
[all …]
/linux/Documentation/arch/arm/omap/
H A Domap_pm.rst2 The OMAP PM interface
5 This document describes the temporary OMAP PM interface. Driver
8 Over time, the intention is to merge features from the OMAP PM
9 interface into the Linux PM QoS code.
11 Drivers need to express PM parameters which:
15 - separate the drivers from the underlying PM parameter
16 implementation, whether it is the TI SRF or Linux PM QoS or Linux
19 - specify PM parameters in terms of fundamental units, such as
31 This document proposes the OMAP PM interface, including the following
55 Further documentation for all OMAP PM interface functions can be
[all …]
/linux/Documentation/devicetree/bindings/power/
H A Dpower_domain.txt1 * Generic PM domains
3 System on chip designs are often divided into multiple PM domains that can be
7 This device tree binding can be used to bind PM domain consumer devices with
8 their PM domains provided by PM domain providers. A PM domain provider can be
9 represented by any node in the device tree and can provide one or more PM
11 phandle arguments (so called PM domain specifiers) of length specified by the
12 #power-domain-cells property in the PM domain provider node.
14 ==PM domain providers==
18 ==PM domain consumers==
21 - power-domains : A list of PM domain specifiers, as defined by bindings of
[all …]
/linux/Documentation/ABI/testing/
H A Dsysfs-class-powercap4 Contact: linux-pm@vger.kernel.org
13 Contact: linux-pm@vger.kernel.org
22 Contact: linux-pm@vger.kernel.org
30 Contact: linux-pm@vger.kernel.org
40 Contact: linux-pm@vger.kernel.org
51 Contact: linux-pm@vger.kernel.org
58 Contact: linux-pm@vger.kernel.org
67 Contact: linux-pm@vger.kernel.org
75 Contact: linux-pm@vger.kernel.org
82 Contact: linux-pm@vger.kernel.org
[all …]
/linux/drivers/crypto/intel/qat/qat_common/
H A Dadf_pm_dbgfs.c14 struct adf_pm pm = accel_dev->power_management; in pm_status_read() local
16 if (pm.print_pm_status) in pm_status_read()
17 return pm.print_pm_status(accel_dev, buf, count, pos); in pm_status_read()
29 struct adf_pm *pm = &accel_dev->power_management; in adf_pm_dbgfs_add() local
31 if (!pm->present || !pm->print_pm_status) in adf_pm_dbgfs_add()
34 pm->debugfs_pm_status = debugfs_create_file("pm_status", 0400, in adf_pm_dbgfs_add()
41 struct adf_pm *pm = &accel_dev->power_management; in adf_pm_dbgfs_rm() local
43 if (!pm->present) in adf_pm_dbgfs_rm()
46 debugfs_remove(pm->debugfs_pm_status); in adf_pm_dbgfs_rm()
47 pm->debugfs_pm_status = NULL; in adf_pm_dbgfs_rm()
H A Dadf_gen4_pm.c26 struct adf_pm *pm = &accel_dev->power_management; in send_host_msg() local
42 pm->host_ack_counter++; in send_host_msg()
44 pm->host_nack_counter++; in send_host_msg()
66 struct adf_pm *pm = &accel_dev->power_management; in pm_bh_handler() local
70 /* PM Idle interrupt */ in pm_bh_handler()
72 pm->idle_irq_counters++; in pm_bh_handler()
79 /* PM throttle interrupt */ in pm_bh_handler()
81 pm->throttle_irq_counters++; in pm_bh_handler()
83 /* PM fw interrupt */ in pm_bh_handler()
85 pm->fw_irq_counters++; in pm_bh_handler()
[all …]

12345678910>>...102