Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media update from Mauro Carvalho Chehab: - OF documentation and patches at core and drivers, to be used by for embedded media systems - some I2C drivers used on go7007 were rewritten/promoted from staging: sony-btf-mpx, tw2804, tw9903, tw9906, wis-ov7640, wis-uda1342 - add fimc-is driver (Exynos) - add a new radio driver: radio-si476x - add a two new tuners: r820t and tuner_it913x - split camera code on em28xx driver and add more models - the cypress firmware load is used outside dvb usb drivers. So, move it to a common directory to make easier to re-use it - siano media driver updated to work with sms2270 devices - several work done in order to promote go7007 and solo6x1x out of staging (still, there are some pending issues) - several API compliance fixes at v4l2 drivers that don't behave as expected - as usual, lots of driver fixes, improvements, cleanups and new device addition at the existing drivers. * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (831 commits) [media] cx88: make core less verbose [media] em28xx: fix oops at em28xx_dvb_bus_ctrl() [media] s5c73m3: fix indentation of the help section in Kconfig [media] cx25821-alsa: get rid of a __must_check warning [media] cx25821-video: declare cx25821_vidioc_s_std as static [media] cx25821-video: remove maxw from cx25821_vidioc_try_fmt_vid_cap [media] r820t: Remove a warning for an unused value [media] dib0090: Fix a warning at dib0090_set_EFUSE [media] dib8000: fix a warning [media] dib8000: Fix sub-channel range [media] dib8000: store dtv_property_cache in a temp var [media] dib8000: warning fix: declare internal functions as static [media] r820t: quiet gcc warning on n_ring [media] r820t: memory leak in release() [media] r820t: precendence bug in r820t_xtal_check() [media] videodev2.h: Remove the unused old V4L1 buffer types [media] anysee: Grammar s/report the/report to/ [media] anysee: Initialize ret = 0 in anysee_frontend_attach() [media] media: videobuf2: fix the length check for mmap [media] em28xx: save isoc endpoint number for DVB only if endpoint has alt settings with xMaxPacketSize != 0 ...
This commit is contained in:
@@ -51,7 +51,7 @@ typedef enum
|
||||
} dmx_input_t;
|
||||
|
||||
|
||||
typedef enum
|
||||
typedef enum dmx_ts_pes
|
||||
{
|
||||
DMX_PES_AUDIO0,
|
||||
DMX_PES_VIDEO0,
|
||||
|
||||
@@ -56,6 +56,8 @@ struct media_device_info {
|
||||
#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR (MEDIA_ENT_T_V4L2_SUBDEV + 1)
|
||||
#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH (MEDIA_ENT_T_V4L2_SUBDEV + 2)
|
||||
#define MEDIA_ENT_T_V4L2_SUBDEV_LENS (MEDIA_ENT_T_V4L2_SUBDEV + 3)
|
||||
/* A converter of analogue video to its digital representation. */
|
||||
#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER (MEDIA_ENT_T_V4L2_SUBDEV + 4)
|
||||
|
||||
#define MEDIA_ENT_FL_DEFAULT (1 << 0)
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000 /* Image source controls */
|
||||
#define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000 /* Image processing controls */
|
||||
#define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */
|
||||
#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* Digital Video controls */
|
||||
|
||||
/* User-class control IDs */
|
||||
|
||||
@@ -146,6 +147,19 @@ enum v4l2_colorfx {
|
||||
* of controls. We reserve 16 controls for this driver. */
|
||||
#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
|
||||
|
||||
/* The base for the bttv driver controls.
|
||||
* We reserve 32 controls for this driver. */
|
||||
#define V4L2_CID_USER_BTTV_BASE (V4L2_CID_USER_BASE + 0x1010)
|
||||
|
||||
|
||||
/* The base for the s2255 driver controls.
|
||||
* We reserve 16 controls for this driver. */
|
||||
#define V4L2_CID_USER_S2255_BASE (V4L2_CID_USER_BASE + 0x1030)
|
||||
|
||||
/* The base for the si476x driver controls. See include/media/si476x.h for the list
|
||||
* of controls. Total of 16 controls is reserved for this driver */
|
||||
#define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040)
|
||||
|
||||
/* MPEG-class control IDs */
|
||||
|
||||
#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
|
||||
@@ -351,6 +365,7 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
||||
#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
|
||||
#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)
|
||||
#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225)
|
||||
#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE+226)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
|
||||
#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
|
||||
@@ -643,6 +658,7 @@ enum v4l2_exposure_metering {
|
||||
V4L2_EXPOSURE_METERING_AVERAGE = 0,
|
||||
V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
|
||||
V4L2_EXPOSURE_METERING_SPOT = 2,
|
||||
V4L2_EXPOSURE_METERING_MATRIX = 3,
|
||||
};
|
||||
|
||||
#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26)
|
||||
@@ -825,4 +841,16 @@ enum v4l2_dv_rgb_range {
|
||||
#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
|
||||
#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
|
||||
|
||||
#define V4L2_CID_FM_RX_CLASS_BASE (V4L2_CTRL_CLASS_FM_RX | 0x900)
|
||||
#define V4L2_CID_FM_RX_CLASS (V4L2_CTRL_CLASS_FM_RX | 1)
|
||||
|
||||
#define V4L2_CID_TUNE_DEEMPHASIS (V4L2_CID_FM_RX_CLASS_BASE + 1)
|
||||
enum v4l2_deemphasis {
|
||||
V4L2_DEEMPHASIS_DISABLED = V4L2_PREEMPHASIS_DISABLED,
|
||||
V4L2_DEEMPHASIS_50_uS = V4L2_PREEMPHASIS_50_uS,
|
||||
V4L2_DEEMPHASIS_75_uS = V4L2_PREEMPHASIS_75_uS,
|
||||
};
|
||||
|
||||
#define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -42,6 +42,15 @@
|
||||
V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
/* Note: these are the nominal timings, for HDMI links this format is typically
|
||||
* double-clocked to meet the minimum pixelclock requirements. */
|
||||
#define V4L2_DV_BT_CEA_720X480I59_94 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 480, 1, 0, \
|
||||
13500000, 19, 62, 57, 4, 3, 15, 4, 3, 16, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_720X480P59_94 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 480, 0, 0, \
|
||||
@@ -49,6 +58,15 @@
|
||||
V4L2_DV_BT_STD_CEA861, 0) \
|
||||
}
|
||||
|
||||
/* Note: these are the nominal timings, for HDMI links this format is typically
|
||||
* double-clocked to meet the minimum pixelclock requirements. */
|
||||
#define V4L2_DV_BT_CEA_720X576I50 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 576, 1, 0, \
|
||||
13500000, 12, 63, 69, 2, 3, 19, 2, 3, 20, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_720X576P50 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 576, 0, 0, \
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_FIXED = 0x0001,
|
||||
|
||||
/* RGB - next is 0x1009 */
|
||||
/* RGB - next is 0x100d */
|
||||
V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
|
||||
V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
|
||||
V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
|
||||
@@ -46,6 +46,10 @@ enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
|
||||
V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
|
||||
V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
|
||||
V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
|
||||
V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
|
||||
V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
|
||||
V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
|
||||
|
||||
/* YUV (including grey) - next is 0x2017 */
|
||||
V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
|
||||
|
||||
@@ -72,27 +72,6 @@
|
||||
#define VIDEO_MAX_FRAME 32
|
||||
#define VIDEO_MAX_PLANES 8
|
||||
|
||||
#ifndef __KERNEL__
|
||||
|
||||
/* These defines are V4L1 specific and should not be used with the V4L2 API!
|
||||
They will be removed from this header in the future. */
|
||||
|
||||
#define VID_TYPE_CAPTURE 1 /* Can capture */
|
||||
#define VID_TYPE_TUNER 2 /* Can tune */
|
||||
#define VID_TYPE_TELETEXT 4 /* Does teletext */
|
||||
#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
|
||||
#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
|
||||
#define VID_TYPE_CLIPPING 32 /* Can clip */
|
||||
#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
|
||||
#define VID_TYPE_SCALES 128 /* Scalable */
|
||||
#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
|
||||
#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
|
||||
#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */
|
||||
#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */
|
||||
#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */
|
||||
#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* M I S C E L L A N E O U S
|
||||
*/
|
||||
@@ -705,6 +684,7 @@ struct v4l2_buffer {
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0xe000
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x0000
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x2000
|
||||
#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x4000
|
||||
|
||||
/**
|
||||
* struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
|
||||
@@ -980,52 +960,6 @@ struct v4l2_standard {
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
/* The DV Preset API is deprecated in favor of the DV Timings API.
|
||||
New drivers shouldn't use this anymore! */
|
||||
|
||||
/*
|
||||
* V I D E O T I M I N G S D V P R E S E T
|
||||
*/
|
||||
struct v4l2_dv_preset {
|
||||
__u32 preset;
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
/*
|
||||
* D V P R E S E T S E N U M E R A T I O N
|
||||
*/
|
||||
struct v4l2_dv_enum_preset {
|
||||
__u32 index;
|
||||
__u32 preset;
|
||||
__u8 name[32]; /* Name of the preset timing */
|
||||
__u32 width;
|
||||
__u32 height;
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
/*
|
||||
* D V P R E S E T V A L U E S
|
||||
*/
|
||||
#define V4L2_DV_INVALID 0
|
||||
#define V4L2_DV_480P59_94 1 /* BT.1362 */
|
||||
#define V4L2_DV_576P50 2 /* BT.1362 */
|
||||
#define V4L2_DV_720P24 3 /* SMPTE 296M */
|
||||
#define V4L2_DV_720P25 4 /* SMPTE 296M */
|
||||
#define V4L2_DV_720P30 5 /* SMPTE 296M */
|
||||
#define V4L2_DV_720P50 6 /* SMPTE 296M */
|
||||
#define V4L2_DV_720P59_94 7 /* SMPTE 274M */
|
||||
#define V4L2_DV_720P60 8 /* SMPTE 274M/296M */
|
||||
#define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */
|
||||
#define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */
|
||||
#define V4L2_DV_1080I25 11 /* BT.1120 */
|
||||
#define V4L2_DV_1080I50 12 /* SMPTE 296M */
|
||||
#define V4L2_DV_1080I60 13 /* SMPTE 296M */
|
||||
#define V4L2_DV_1080P24 14 /* SMPTE 296M */
|
||||
#define V4L2_DV_1080P25 15 /* SMPTE 296M */
|
||||
#define V4L2_DV_1080P30 16 /* SMPTE 296M */
|
||||
#define V4L2_DV_1080P50 17 /* BT.1120 */
|
||||
#define V4L2_DV_1080P60 18 /* BT.1120 */
|
||||
|
||||
/*
|
||||
* D V B T T I M I N G S
|
||||
*/
|
||||
@@ -1119,7 +1053,7 @@ struct v4l2_bt_timings {
|
||||
longer and field 2 is really one half-line shorter, so each field has
|
||||
exactly the same number of half-lines. Whether half-lines can be detected
|
||||
or used depends on the hardware. */
|
||||
#define V4L2_DV_FL_HALF_LINE (1 << 0)
|
||||
#define V4L2_DV_FL_HALF_LINE (1 << 3)
|
||||
|
||||
|
||||
/** struct v4l2_dv_timings - DV timings
|
||||
@@ -1239,7 +1173,6 @@ struct v4l2_input {
|
||||
#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
|
||||
|
||||
/* capabilities flags */
|
||||
#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
|
||||
#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||
#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
|
||||
#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
|
||||
@@ -1263,7 +1196,6 @@ struct v4l2_output {
|
||||
#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
|
||||
|
||||
/* capabilities flags */
|
||||
#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
|
||||
#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||
#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
|
||||
#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
|
||||
@@ -1854,10 +1786,12 @@ struct v4l2_event_subscription {
|
||||
|
||||
/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
|
||||
|
||||
#define V4L2_CHIP_MATCH_HOST 0 /* Match against chip ID on host (0 for the host) */
|
||||
#define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */
|
||||
#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */
|
||||
#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */
|
||||
#define V4L2_CHIP_MATCH_BRIDGE 0 /* Match against chip ID on the bridge (0 for the bridge) */
|
||||
#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
|
||||
#define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */
|
||||
#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */
|
||||
#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */
|
||||
#define V4L2_CHIP_MATCH_SUBDEV 4 /* Match against subdev index */
|
||||
|
||||
struct v4l2_dbg_match {
|
||||
__u32 type; /* Match type */
|
||||
@@ -1881,6 +1815,17 @@ struct v4l2_dbg_chip_ident {
|
||||
__u32 revision; /* chip revision, chip specific */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define V4L2_CHIP_FL_READABLE (1 << 0)
|
||||
#define V4L2_CHIP_FL_WRITABLE (1 << 1)
|
||||
|
||||
/* VIDIOC_DBG_G_CHIP_INFO */
|
||||
struct v4l2_dbg_chip_info {
|
||||
struct v4l2_dbg_match match;
|
||||
char name[32];
|
||||
__u32 flags;
|
||||
__u32 reserved[32];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
* struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument
|
||||
* @index: on return, index of the first created buffer
|
||||
@@ -1958,15 +1903,12 @@ struct v4l2_create_buffers {
|
||||
#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
|
||||
#define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
|
||||
#define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
|
||||
#if 1
|
||||
#define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
|
||||
#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
|
||||
#define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
|
||||
#define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
|
||||
#define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
/* Experimental, meant for debugging, testing and internal use.
|
||||
Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
|
||||
You must be root to use these ioctls. Never use these in applications! */
|
||||
@@ -1974,18 +1916,13 @@ struct v4l2_create_buffers {
|
||||
#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
|
||||
|
||||
/* Experimental, meant for debugging, testing and internal use.
|
||||
Never use this ioctl in applications! */
|
||||
Never use this ioctl in applications!
|
||||
Note: this ioctl is deprecated in favor of VIDIOC_DBG_G_CHIP_INFO and
|
||||
will go away in the future. */
|
||||
#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident)
|
||||
#endif
|
||||
|
||||
#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
|
||||
|
||||
/* These four DV Preset ioctls are deprecated in favor of the DV Timings
|
||||
ioctls. */
|
||||
#define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct v4l2_dv_enum_preset)
|
||||
#define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct v4l2_dv_preset)
|
||||
#define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct v4l2_dv_preset)
|
||||
#define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct v4l2_dv_preset)
|
||||
#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
|
||||
#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
|
||||
#define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
|
||||
@@ -2016,6 +1953,10 @@ struct v4l2_create_buffers {
|
||||
versions. */
|
||||
#define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band)
|
||||
|
||||
/* Experimental, meant for debugging, testing and internal use.
|
||||
Never use these in applications! */
|
||||
#define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
|
||||
|
||||
/* Reminder: when adding new ioctls please add support for them to
|
||||
drivers/media/video/v4l2-compat-ioctl32.c as well! */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user