WTF: patch "[PATCH] media: cec/v4l2: move V4L2 specific CEC functions to V4L2" was seriously submitted to be applied to the 4.14-stable tree?
Subsystems (6)
[email protected]
maintainerThe patch below was submitted to be applied to the 4.14-stable tree.
I fail to see how this patch meets the stable kernel rules as found at Documentation/process/stable-kernel-rules.rst.
I could be totally wrong, and if so, please respond to <[email protected]> and let me know why this patch should be applied. Otherwise, it is now dropped from my patch queues, never to be seen again.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
9cfd2753f8f3923f89cbb15f940f3aa0e7202d3eMon Sep 17 00:00:00 2001
From: Hans Verkuil <[email protected]>
Date: Thu, 13 Sep 2018 03:40:56 -0400
Subject: [PATCH] media: cec/v4l2: move V4L2 specific CEC functions to V4L2
Several CEC functions are actually specific for use with receivers, i.e. they should be part of the V4L2 subsystem, not CEC.
These functions deal with validating and modifying EDIDs for (HDMI) receivers, and they do not actually have anything to do with the CEC subsystem and whether or not CEC is enabled. The problem was that if the CEC_CORE config option was not set, then these functions would become stubs, but that's not right: they should always be valid.
So replace the cec_ prefix by v4l2_ and move them to v4l2-dv-timings.c. Update all drivers that call these accordingly.
drivers/media/cec/cec-edid.c +0 -71
@@ -22,74 +22,3 @@ u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size,return (edid[loc] <<8 ) | edid[loc +1 ]; }EXPORT_SYMBOL_GPL (cec_get_edid_phys_addr); - -void cec_set_edid_phys_addr (u8 *edid,unsigned int size,u16 phys_addr) -{ -unsigned int loc =cec_get_edid_spa_location (edid, size); -u8 sum =0 ; -unsigned int i; - -if (loc ==0 ) -return ; - edid[loc] = phys_addr >>8 ; - edid[loc +1 ] = phys_addr &0xff ; - loc &= ~0x7f ; - -/* update the checksum */ -for (i = loc; i < loc +127 ; i++) - sum += edid[i]; - edid[i] =256 - sum; -} -EXPORT_SYMBOL_GPL (cec_set_edid_phys_addr); - -u16 cec_phys_addr_for_input (u16 phys_addr,u8 input) -{ -/* Check if input is sane */ -if (WARN_ON (input ==0 || input >0xf )) -return CEC_PHYS_ADDR_INVALID ; - -if (phys_addr ==0 ) -return input <<12 ; - -if ((phys_addr &0x0fff ) ==0 ) -return phys_addr | (input <<8 ); - -if ((phys_addr &0x00ff ) ==0 ) -return phys_addr | (input <<4 ); - -if ((phys_addr &0x000f ) ==0 ) -return phys_addr | input; - -/* -* All nibbles are used so no valid physical addresses can be assigned -* to the input. -*/ -return CEC_PHYS_ADDR_INVALID ; -} -EXPORT_SYMBOL_GPL (cec_phys_addr_for_input); - -int cec_phys_addr_validate (u16 phys_addr,u16 *parent,u16 *port) -{ -int i; - -if (parent) - *parent = phys_addr; -if (port) - *port =0 ; -if (phys_addr ==CEC_PHYS_ADDR_INVALID ) -return 0 ; -for (i =0 ; i <16 ; i +=4 ) -if (phys_addr & (0xf << i)) -break ; -if (i ==16 ) -return 0 ; -if (parent) - *parent = phys_addr & (0xfff0 << i); -if (port) - *port = (phys_addr >> i) &0xf ; -for (i +=4 ; i <16 ; i +=4 ) -if ((phys_addr & (0xf << i)) ==0 ) -return -EINVAL ; -return 0 ; -} -EXPORT_SYMBOL_GPL (cec_phys_addr_validate);
drivers/media/i2c/adv7604.c +2 -2
@@ -2295,8 +2295,8 @@ static int adv76xx_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) edid->blocks =2 ;return -E2BIG ; } - pa =cec_get_edid_phys_addr (edid->edid, edid->blocks *128 , &spa_loc); - err =cec_phys_addr_validate (pa, &pa,NULL ); + pa =v4l2_get_edid_phys_addr (edid->edid, edid->blocks *128 , &spa_loc); + err =v4l2_phys_addr_validate (pa, &pa,NULL );if (err)return err;
drivers/media/i2c/adv7842.c +2 -2
@@ -789,8 +789,8 @@ static int edid_write_hdmi_segment(struct v4l2_subdev *sd, u8 port)if (!state->hdmi_edid.present)return 0 ; - pa =cec_get_edid_phys_addr (edid,256 , &spa_loc); - err =cec_phys_addr_validate (pa, &pa,NULL ); + pa =v4l2_get_edid_phys_addr (edid,256 , &spa_loc); + err =v4l2_phys_addr_validate (pa, &pa,NULL );if (err)return err;
drivers/media/i2c/tc358743.c +1 -1
@@ -1789,7 +1789,7 @@ static int tc358743_s_edid(struct v4l2_subdev *sd,return -E2BIG ; } pa =cec_get_edid_phys_addr (edid->edid, edid->blocks *128 ,NULL ); - err =cec_phys_addr_validate (pa, &pa,NULL ); + err =v4l2_phys_addr_validate (pa, &pa,NULL );if (err)return err;
drivers/media/platform/vivid/vivid-vid-cap.c +2 -2
@@ -1722,7 +1722,7 @@ int vidioc_s_edid(struct file *file, void *_fh,return -E2BIG ; } phys_addr =cec_get_edid_phys_addr (edid->edid, edid->blocks *128 ,NULL ); - ret =cec_phys_addr_validate (phys_addr, &phys_addr,NULL ); + ret =v4l2_phys_addr_validate (phys_addr, &phys_addr,NULL );if (ret)return ret;
@@ -1738,7 +1738,7 @@ int vidioc_s_edid(struct file *file, void *_fh,for (i =0 ; i <MAX_OUTPUTS && dev->cec_tx_adap[i]; i++)cec_s_phys_addr (dev->cec_tx_adap[i], -cec_phys_addr_for_input (phys_addr, i +1 ), +v4l2_phys_addr_for_input (phys_addr, i +1 ), false);return 0 ; }
drivers/media/platform/vivid/vivid-vid-common.c +1 -1
@@ -863,7 +863,7 @@ int vidioc_g_edid(struct file *file, void *_fh,if (edid->blocks > dev->edid_blocks - edid->start_block) edid->blocks = dev->edid_blocks - edid->start_block;if (adap) -cec_set_edid_phys_addr (dev->edid, dev->edid_blocks *128 , adap->phys_addr); +v4l2_set_edid_phys_addr (dev->edid, dev->edid_blocks *128 , adap->phys_addr);memcpy (edid->edid, dev->edid + edid->start_block *128 , edid->blocks *128 );return 0 ; }
drivers/media/v4l2-core/v4l2-dv-timings.c +151 -0
160 lines not on this page · raw message
include/media/cec.h +0 -80
92 lines not on this page · raw message
include/media/v4l2-dv-timings.h +6 -0
@@ -245,4 +245,10 @@ v4l2_hdmi_rx_colorimetry(const struct hdmi_avi_infoframe *avi,const struct hdmi_vendor_infoframe *hdmi, unsigned int height); +u16 v4l2_get_edid_phys_addr (const u8 *edid,unsigned int size, +unsigned int *offset); +void v4l2_set_edid_phys_addr (u8 *edid,unsigned int size,u16 phys_addr); +u16 v4l2_phys_addr_for_input (u16 phys_addr,u8 input); +int v4l2_phys_addr_validate (u16 phys_addr,u16 *parent,u16 *port); +#endif