Re: [PATCH] media: staging/imx: Fix NULL deref in find_pipeline_entity()

2019-06-27 Thread Dan Carpenter
On Wed, Jun 26, 2019 at 11:52:25AM -0700, Steve Longerbeam wrote:
> Fix a cut&paste error in find_pipeline_entity(). The start entity must be
> passed to media_entity_to_video_device() in find_pipeline_entity(), not
> pad->entity. The pad is only put to use later, after determining the start
> entity is not the entity being searched for.
> 
> Fixes: 3ef46bc97ca2 ("media: staging/imx: Improve pipeline searching")
> 
> Reported-by: Colin Ian King 
> Signed-off-by: Steve Longerbeam 
> ---
>  drivers/staging/media/imx/imx-media-utils.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/media/imx/imx-media-utils.c 
> b/drivers/staging/media/imx/imx-media-utils.c
> index b5b8a3b7730a..6fb88c22ee27 100644
> --- a/drivers/staging/media/imx/imx-media-utils.c
> +++ b/drivers/staging/media/imx/imx-media-utils.c
> @@ -842,7 +842,7 @@ find_pipeline_entity(struct media_entity *start, u32 
> grp_id,
>   if (sd->grp_id & grp_id)
>   return &sd->entity;
>   } else if (buftype && is_media_entity_v4l2_video_device(start)) {
> - vfd = media_entity_to_video_device(pad->entity);
> + vfd = media_entity_to_video_device(start);

Can we also remove the "pad = NULL" assignment at the start of the
function?  Otherwise static checkers and new versions of GCC will warn
that the assignment isn't used.  Plus removing the initialization will
prevent bugs like this in the future.

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate()

2019-06-27 Thread Peter Robinson
>   Dave
>
> PS Is linux-rpi-kernel actually behaving for other people? I didn't
> see this patch when it was submitted, and it isn't showing in the list
> archive either.

No, but it never really has for me, it's always been weird in what it
allows through by default and the admin has to approve a lot of things
so sometimes you'll get 100s of mails at once when who ever the admin
is catches up.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 2/2] drivers/staging/rtl8192u: style nonstyled comments

2019-06-27 Thread Christian Müller
The coding-styles.rst states, that multiline comments should
allways contain a leading "*" in each line.
For multiline comments in general they

/*
 * should look
 * like this.
 */

For multiline comments in either net/ or drivers/net/ however,
they should

/* omit
 * the first
 * empty line.
 */

Since this file is part of a networking driver, the goal for it would
be to reside in drivers/net/ one day.

This patch changes comments, that were in neither form of the two listed
above, to have the style that is specified for drivers/net/.

Signed-off-by: Christian Müller 
Signed-off-by: Felix Trommer 
---
 drivers/staging/rtl8192u/r8192U_dm.c | 28 
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/rtl8192u/r8192U_dm.c 
b/drivers/staging/rtl8192u/r8192U_dm.c
index 86215fee8f0b..cb6c653e624d 100644
--- a/drivers/staging/rtl8192u/r8192U_dm.c
+++ b/drivers/staging/rtl8192u/r8192U_dm.c
@@ -332,9 +332,10 @@ static void dm_check_rate_adaptive(struct net_device *dev)
((bshort_gi_enabled) ? BIT(31) : 0);

/* 2007/10/08 MH We support RA smooth scheme now. When it is 
the first
-  time to link with AP. We will not change upper/lower 
threshold. If
-  STA stay in high or low level, we must change two different 
threshold
-  to prevent jumping frequently. */
+* time to link with AP. We will not change upper/lower 
threshold. If
+* STA stay in high or low level, we must change two different 
threshold
+* to prevent jumping frequently.
+*/
if (pra->ratr_state == DM_RATR_STA_HIGH) {
HighRSSIThreshForRA = 
pra->high2low_rssi_thresh_for_ra;
LowRSSIThreshForRA  = (priv->CurrentChannelBW != 
HT_CHANNEL_WIDTH_20) ?
@@ -1738,10 +1739,12 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(
pHalData->UndecoratedSmoothedPWDB, DM_DigTable.RssiLowThresh,
DM_DigTable.RssiHighThresh, DM_DigTable.Dig_State);*/
/* 1. When RSSI decrease, We have to judge if it is smaller than a 
threshold
- and then execute the step below. */
+* and then execute the step below.
+*/
if (priv->undecorated_smoothed_pwdb <= dm_digtable.rssi_low_thresh) {
/* 2008/02/05 MH When we execute silent reset, the DIG PHY 
parameters
-  will be reset to init value. We must prevent the condition. 
*/
+* will be reset to init value. We must prevent the condition.
+*/
if (dm_digtable.dig_state == DM_STA_DIG_OFF &&
(priv->reset_count == reset_cnt)) {
return;
@@ -1786,7 +1789,8 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(
}

/* 2. When RSSI increase, We have to judge if it is larger than a 
threshold
- and then execute the step below.  */
+* and then execute the step below.
+*/
if (priv->undecorated_smoothed_pwdb >= dm_digtable.rssi_high_thresh) {
u8 reset_flag = 0;

@@ -2252,11 +2256,10 @@ static void dm_ctstoself(struct net_device *dev)
pHTInfo->IOTAction &= ~HT_IOT_ACT_FORCED_CTS2SELF;
return;
}
-   /*
-   1. Uplink
-   2. Linksys350/Linksys300N
-   3. <50 disable, >55 enable
-   */
+   /* 1. Uplink
+* 2. Linksys350/Linksys300N
+* 3. <50 disable, >55 enable
+*/

if (pHTInfo->IOTPeer == HT_IOT_PEER_BROADCOM) {
curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt;
@@ -2333,7 +2336,8 @@ void dm_rf_pathcheck_workitemcallback(struct work_struct 
*work)
u8 rfpath = 0, i;

/* 2008/01/30 MH After discussing with SD3 Jerry, 0xc04/0xd04 register 
will
-  always be the same. We only read 0xc04 now. */
+* always be the same. We only read 0xc04 now.
+*/
read_nic_byte(dev, 0xc04, &rfpath);

/* Check Bit 0-3, it means if RF A-D is enabled. */
--
2.17.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 1/2] drivers/staging/rtl8192u: drop first comment line

2019-06-27 Thread Christian Müller
As stated in coding-styles.rst multiline comments should be structured in a way,
that the actual comment starts on the second line of the commented portion. E.g:

/*
 * Multiline comments
 * should look like
 * this.
 */

However, there is an exception to files in drivers/net/ and net/, where
multiline comments are prefered to look like this:

/* Mutliline comments for
 * drivers/net/ should look
 * like this.
 */

The comments in this file initially looked like the first example.
But since this file is part of a networking driver and thus should
be moved to drivers/net/ one day, this patch adjusts the comments
such that they are fitting to the style imposed for drivers/net/.

Signed-off-by: Christian Müller 
Signed-off-by: Felix Trommer 
---
 drivers/staging/rtl8192u/r8192U_dm.c | 69 ++--
 1 file changed, 23 insertions(+), 46 deletions(-)

diff --git a/drivers/staging/rtl8192u/r8192U_dm.c 
b/drivers/staging/rtl8192u/r8192U_dm.c
index 2ba01041406b..86215fee8f0b 100644
--- a/drivers/staging/rtl8192u/r8192U_dm.c
+++ b/drivers/staging/rtl8192u/r8192U_dm.c
@@ -99,8 +99,7 @@ staticvoiddm_dynamic_txpower(struct net_device 
*dev);
 static void dm_send_rssi_tofw(struct net_device *dev);
 static voiddm_ctstoself(struct net_device *dev);
 /*---Define function 
prototype*/
-/*
- * 

+/* 

  * HW Dynamic mechanism interface.
  * 

  *
@@ -178,8 +177,7 @@ void dm_CheckRxAggregation(struct net_device *dev)

ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | 
(pHTInfo->UsbRxFwAggrPageNum<<16) |
(pHTInfo->UsbRxFwAggrPacketNum<<8) | 
(pHTInfo->UsbRxFwAggrTimeout);
-   /*
-* If usb rx firmware aggregation is enabled,
+   /* If usb rx firmware aggregation is enabled,
 * when anyone of three threshold conditions above is 
reached,
 * firmware will send aggregated packet to driver.
 */
@@ -219,8 +217,7 @@ void hal_dm_watchdog(struct net_device *dev)
 #endif
 }  /* HalDmWatchDog */

-/*
- * Decide Rate Adaptive Set according to distance (signal strength)
+/* Decide Rate Adaptive Set according to distance (signal strength)
  * 01/11/2008  MHC Modify input arguments and RATR table 
level.
  * 01/16/2008  MHC RF_Type is assigned in 
ReadAdapterInfo(). We must call
  * the function after making sure 
RF_Type.
@@ -246,8 +243,7 @@ void init_rate_adaptive(struct net_device *dev)
pra->ping_rssi_thresh_for_ra = 15;

if (priv->rf_type == RF_2T4R) {
-   /*
-* 07/10/08 MH Modify for RA smooth scheme.
+   /* 07/10/08 MH Modify for RA smooth scheme.
 * 2008/01/11 MH Modify 2T RATR table for different RSSI. 
080515 porting by amy from windows code.
 */
pra->upper_rssi_threshold_ratr  =   0x8f0f;
@@ -387,8 +383,7 @@ static void dm_check_rate_adaptive(struct net_device *dev)
}
}

-   /*
-* 2008.04.01
+   /* 2008.04.01
 * For RTL819X, if pairwisekey = wep/tkip, we support only 
MCS0~7.
 */
if (priv->ieee80211->GetHalfNmodeSupportByAPsHandler(dev))
@@ -683,8 +678,7 @@ static void dm_TXPowerTrackingCallback_ThermalMeter(struct 
net_device *dev)
return;
}

-   /*
-* ==
+   /* ==
 * this is only for test, should be masked
 * ==
 */
@@ -850,8 +844,7 @@ static void dm_InitializeTXPowerTracking_TSSI(struct 
net_device *dev)
priv->txbbgain_table[36].txbb_iq_amplifygain =   -24;
priv->txbbgain_table[36].txbbgain_value = 0x1040;

-   /*
-* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
+   /* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
 * This Table is for CH1~CH13
 */
priv->cck_txbbgain_table[0].ccktxbb_valuearray[0] = 0x36;
@@ -1061,8 +1054,7 @@ static void dm_InitializeTXPowerTracking_TSSI(struct 
net_device *dev)
priv->cck_txbbgain_table[22].ccktxbb_valuearray[6] = 0x03;
priv->cck_txbbgain_table[22].ccktxbb_valuearray[7] = 0x01;

-   /*
-* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
+   /* ccktxbb_valuearray[0] is 0xA22 [1] is 0xA24 ...[7] is 0xA29
 * This Table is for CH14
 */
priv->cck_txbbgain_ch14_table[0].cckt

Re: [PATCH] staging: erofs: Replace kzalloc(struct ..) with kzalloc(*ptr)

2019-06-27 Thread Chao Yu
On 2019/6/27 13:31, Shobhit Kukreti wrote:
> Resolve checkpatch warning:
> Prefer kzalloc(sizeof(*ptr)...) over kzalloc(sizeof(struct ..)
> 
> Signed-off-by: Shobhit Kukreti 

Reviewed-by: Chao Yu 

Thanks,
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH RESEND v2] staging: erofs: return the error value if fill_inline_data() fails

2019-06-27 Thread Yue Hu
From: Yue Hu 

We should consider the error returned by fill_inline_data() when filling
last page in fill_inode(). If not getting inode will be successful even
though last page is bad. That is illogical. Also change -EAGAIN to 0 in
fill_inline_data() to stand for successful filling.

Signed-off-by: Yue Hu 
Reviewed-by: Gao Xiang 
Reviewed-by: Chao Yu 
---
no change

 drivers/staging/erofs/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/erofs/inode.c b/drivers/staging/erofs/inode.c
index d6e1e16..1433f25 100644
--- a/drivers/staging/erofs/inode.c
+++ b/drivers/staging/erofs/inode.c
@@ -156,7 +156,7 @@ static int fill_inline_data(struct inode *inode, void *data,
inode->i_link = lnk;
set_inode_fast_symlink(inode);
}
-   return -EAGAIN;
+   return 0;
 }
 
 static int fill_inode(struct inode *inode, int isdir)
@@ -223,7 +223,7 @@ static int fill_inode(struct inode *inode, int isdir)
inode->i_mapping->a_ops = &erofs_raw_access_aops;
 
/* fill last page if inline data is available */
-   fill_inline_data(inode, data, ofs);
+   err = fill_inline_data(inode, data, ofs);
}
 
 out_unlock:
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] Adjust analogix chip driver location

2019-06-27 Thread Xin Ji
On Wed, Jun 26, 2019 at 08:23:17PM +0800, gre...@linuxfoundation.org wrote:
> On Wed, Jun 26, 2019 at 10:44:38AM +, Xin Ji wrote:
> > Move analogix chip ANX78XX bridge driver into "analogix" directory.
> > 
> > Signed-off-by: Xin Ji 
> > ---
> >  drivers/gpu/drm/bridge/Kconfig |   10 -
> >  drivers/gpu/drm/bridge/Makefile|3 +-
> >  drivers/gpu/drm/bridge/analogix-anx78xx.c  | 1485 
> > 
> >  drivers/gpu/drm/bridge/analogix-anx78xx.h  |  710 --
> >  drivers/gpu/drm/bridge/analogix/Kconfig|   10 +
> >  drivers/gpu/drm/bridge/analogix/Makefile   |2 +
> >  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 1485 
> > 
> >  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h |  710 ++
> >  8 files changed, 2208 insertions(+), 2207 deletions(-)
> >  delete mode 100644 drivers/gpu/drm/bridge/analogix-anx78xx.c
> >  delete mode 100644 drivers/gpu/drm/bridge/analogix-anx78xx.h
> >  create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> >  create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
> 
> 'git format-patch -M' is usually a lot better to use when moving files
> around, as it shows you only any changes in the files, not a huge
> delete/add cycle.
> 
> thanks,
> 
> greg k-h

Thanks, I'll submit new version.

Xin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v1] Adjust analogix chip driver location

2019-06-27 Thread Laurent Pinchart
Hello Xin Ji,

Thank you for the patch.

On Thu, Jun 27, 2019 at 11:29:47AM +, Xin Ji wrote:
> Move analogix chip ANX78XX bridge driver into "analogix" directory.
> 
> Signed-off-by: Xin Ji 
> ---
>  drivers/gpu/drm/bridge/Kconfig   | 10 --
>  drivers/gpu/drm/bridge/Makefile  |  3 +--
>  drivers/gpu/drm/bridge/analogix/Kconfig  | 10 ++
>  drivers/gpu/drm/bridge/analogix/Makefile |  2 ++
>  drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c |  0
>  drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h |  0
>  6 files changed, 13 insertions(+), 12 deletions(-)
>  rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c (100%)
>  rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h (100%)
> 
> diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
> index ee77746..862789b 100644
> --- a/drivers/gpu/drm/bridge/Kconfig
> +++ b/drivers/gpu/drm/bridge/Kconfig
> @@ -16,16 +16,6 @@ config DRM_PANEL_BRIDGE
>  menu "Display Interface Bridges"
>   depends on DRM && DRM_BRIDGE
>  
> -config DRM_ANALOGIX_ANX78XX
> - tristate "Analogix ANX78XX bridge"
> - select DRM_KMS_HELPER
> - select REGMAP_I2C
> - ---help---
> -   ANX78XX is an ultra-low Full-HD SlimPort transmitter
> -   designed for portable devices. The ANX78XX transforms
> -   the HDMI output of an application processor to MyDP
> -   or DisplayPort.
> -
>  config DRM_CDNS_DSI
>   tristate "Cadence DPI/DSI bridge"
>   select DRM_KMS_HELPER
> diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
> index 4934fcf..02cb4cd 100644
> --- a/drivers/gpu/drm/bridge/Makefile
> +++ b/drivers/gpu/drm/bridge/Makefile
> @@ -1,5 +1,4 @@
>  # SPDX-License-Identifier: GPL-2.0
> -obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
>  obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o
>  obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o
>  obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o
> @@ -12,8 +11,8 @@ obj-$(CONFIG_DRM_SII9234) += sii9234.o
>  obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o
>  obj-$(CONFIG_DRM_TOSHIBA_TC358764) += tc358764.o
>  obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o
> -obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/
>  obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
>  obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o
>  obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o
>  obj-y += synopsys/
> +obj-y += analogix/

Could you place that line just above the synopsys/ directory, to have
them alphabetically sorted (this could also be done while applying) ?
Apart from that the patch looks good to me, so

Reviewed-by: Laurent Pinchart 

> diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig 
> b/drivers/gpu/drm/bridge/analogix/Kconfig
> index e930ff9..dfe84f5 100644
> --- a/drivers/gpu/drm/bridge/analogix/Kconfig
> +++ b/drivers/gpu/drm/bridge/analogix/Kconfig
> @@ -1,4 +1,14 @@
>  # SPDX-License-Identifier: GPL-2.0-only
> +config DRM_ANALOGIX_ANX78XX
> + tristate "Analogix ANX78XX bridge"
> + select DRM_KMS_HELPER
> + select REGMAP_I2C
> + ---help---
> +   ANX78XX is an ultra-low Full-HD SlimPort transmitter
> +   designed for portable devices. The ANX78XX transforms
> +   the HDMI output of an application processor to MyDP
> +   or DisplayPort.
> +
>  config DRM_ANALOGIX_DP
>   tristate
>   depends on DRM
> diff --git a/drivers/gpu/drm/bridge/analogix/Makefile 
> b/drivers/gpu/drm/bridge/analogix/Makefile
> index fdbf3fd..d4c54ac 100644
> --- a/drivers/gpu/drm/bridge/analogix/Makefile
> +++ b/drivers/gpu/drm/bridge/analogix/Makefile
> @@ -1,3 +1,5 @@
>  # SPDX-License-Identifier: GPL-2.0-only
> +obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
> +
>  analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
>  obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
> diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c 
> b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> similarity index 100%
> rename from drivers/gpu/drm/bridge/analogix-anx78xx.c
> rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.h 
> b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
> similarity index 100%
> rename from drivers/gpu/drm/bridge/analogix-anx78xx.h
> rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h

-- 
Regards,

Laurent Pinchart
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] fbtft: Cleanup line over 80 character warnings

2019-06-27 Thread Lukas Schneider
Cleanup the line over 80 character warnings, reported by checkpatch

Signed-off-by: Lukas Schneider 
Signed-off-by: Jannik Moritz 
Cc: 
---
 drivers/staging/fbtft/fbtft-sysfs.c |  3 ++-
 drivers/staging/fbtft/fbtft.h   | 26 ++
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/fbtft/fbtft-sysfs.c 
b/drivers/staging/fbtft/fbtft-sysfs.c
index 2a5c630dab87..78d2b81ea2e7 100644
--- a/drivers/staging/fbtft/fbtft-sysfs.c
+++ b/drivers/staging/fbtft/fbtft-sysfs.c
@@ -68,7 +68,8 @@ int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves,
ret = get_next_ulong(&curve_p, &val, " ", 16);
if (ret)
goto out;
-   curves[curve_counter * par->gamma.num_values + 
value_counter] = val;
+   curves[curve_counter * par->gamma.num_values
+   + value_counter] = val;
value_counter++;
}
if (value_counter != par->gamma.num_values) {
diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 9b6bdb62093d..cddbfd4ffa10 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -348,9 +348,25 @@ module_exit(fbtft_driver_module_exit);
 
 /* shorthand debug levels */
 #define DEBUG_LEVEL_1  DEBUG_REQUEST_GPIOS
-#define DEBUG_LEVEL_2  (DEBUG_LEVEL_1 | DEBUG_DRIVER_INIT_FUNCTIONS | 
DEBUG_TIME_FIRST_UPDATE)
-#define DEBUG_LEVEL_3  (DEBUG_LEVEL_2 | DEBUG_RESET | DEBUG_INIT_DISPLAY | 
DEBUG_BLANK | DEBUG_REQUEST_GPIOS | DEBUG_FREE_GPIOS | DEBUG_VERIFY_GPIOS | 
DEBUG_BACKLIGHT | DEBUG_SYSFS)
-#define DEBUG_LEVEL_4  (DEBUG_LEVEL_2 | DEBUG_FB_READ | DEBUG_FB_WRITE | 
DEBUG_FB_FILLRECT | DEBUG_FB_COPYAREA | DEBUG_FB_IMAGEBLIT | DEBUG_FB_BLANK)
+#define DEBUG_LEVEL_2  (DEBUG_LEVEL_1 |\
+DEBUG_DRIVER_INIT_FUNCTIONS |  \
+DEBUG_TIME_FIRST_UPDATE)
+#define DEBUG_LEVEL_3  (DEBUG_LEVEL_2 |\
+DEBUG_RESET |  \
+DEBUG_INIT_DISPLAY |   \
+DEBUG_BLANK |  \
+DEBUG_REQUEST_GPIOS |  \
+DEBUG_FREE_GPIOS | \
+DEBUG_VERIFY_GPIOS |   \
+DEBUG_BACKLIGHT |  \
+DEBUG_SYSFS)
+#define DEBUG_LEVEL_4  (DEBUG_LEVEL_2 |\
+DEBUG_FB_READ |\
+DEBUG_FB_WRITE |   \
+DEBUG_FB_FILLRECT |\
+DEBUG_FB_COPYAREA |\
+DEBUG_FB_IMAGEBLIT |   \
+DEBUG_FB_BLANK)
 #define DEBUG_LEVEL_5  (DEBUG_LEVEL_3 | DEBUG_UPDATE_DISPLAY)
 #define DEBUG_LEVEL_6  (DEBUG_LEVEL_4 | DEBUG_LEVEL_5)
 #define DEBUG_LEVEL_7  0x
@@ -392,7 +408,9 @@ module_exit(fbtft_driver_module_exit);
 #define fbtft_init_dbg(dev, format, arg...)  \
 do { \
if (unlikely((dev)->platform_data && \
-   (((struct fbtft_platform_data 
*)(dev)->platform_data)->display.debug & DEBUG_DRIVER_INIT_FUNCTIONS))) \
+   (((struct fbtft_platform_data *) \
+   (dev)->platform_data)->display.debug \
+   & DEBUG_DRIVER_INIT_FUNCTIONS))) \
dev_info(dev, format, ##arg);\
 } while (0)
 
-- 
2.19.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] media: bcm2048: Macros with complex values should be enclosed in parentheses

2019-06-27 Thread Lukas Schneider
Fix ERROR: Macros with complex values should be enclosed in parentheses,
reported by checkpatch.

Add a do {...} while (0) loop around the macro.

Signed-off-by: Lukas Schneider 
Signed-off-by: Jannik Moritz 
Cc: 
---
 drivers/staging/media/bcm2048/radio-bcm2048.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/media/bcm2048/radio-bcm2048.c 
b/drivers/staging/media/bcm2048/radio-bcm2048.c
index 2c60a1fb6350..206f2a662f92 100644
--- a/drivers/staging/media/bcm2048/radio-bcm2048.c
+++ b/drivers/staging/media/bcm2048/radio-bcm2048.c
@@ -2001,8 +2001,10 @@ static ssize_t bcm2048_##prop##_read(struct device *dev, 
\
 }
 
 #define DEFINE_SYSFS_PROPERTY(prop, prop_type, mask, check)\
-property_write(prop, prop_type, mask, check)   \
-property_read(prop, mask)  \
+do {   \
+   property_write(prop, prop_type, mask, check)\
+   property_read(prop, mask)   \
+} while (0)\
 
 #define property_str_read(prop, size)  \
 static ssize_t bcm2048_##prop##_read(struct device *dev,   \
-- 
2.22.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] fbtft: Cleanup line over 80 character warnings

2019-06-27 Thread Dan Carpenter
Sorry, I don't feel like this makes it more readable.

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] media: bcm2048: Macros with complex values should be enclosed in parentheses

2019-06-27 Thread Dan Carpenter
This breaks the build.  :(

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v1] Adjust analogix chip driver location

2019-06-27 Thread Xin Ji
Move analogix chip ANX78XX bridge driver into "analogix" directory.

Signed-off-by: Xin Ji 
---
 drivers/gpu/drm/bridge/Kconfig   | 10 --
 drivers/gpu/drm/bridge/Makefile  |  3 +--
 drivers/gpu/drm/bridge/analogix/Kconfig  | 10 ++
 drivers/gpu/drm/bridge/analogix/Makefile |  2 ++
 drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c |  0
 drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h |  0
 6 files changed, 13 insertions(+), 12 deletions(-)
 rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c (100%)
 rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h (100%)

diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index ee77746..862789b 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -16,16 +16,6 @@ config DRM_PANEL_BRIDGE
 menu "Display Interface Bridges"
depends on DRM && DRM_BRIDGE
 
-config DRM_ANALOGIX_ANX78XX
-   tristate "Analogix ANX78XX bridge"
-   select DRM_KMS_HELPER
-   select REGMAP_I2C
-   ---help---
- ANX78XX is an ultra-low Full-HD SlimPort transmitter
- designed for portable devices. The ANX78XX transforms
- the HDMI output of an application processor to MyDP
- or DisplayPort.
-
 config DRM_CDNS_DSI
tristate "Cadence DPI/DSI bridge"
select DRM_KMS_HELPER
diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
index 4934fcf..02cb4cd 100644
--- a/drivers/gpu/drm/bridge/Makefile
+++ b/drivers/gpu/drm/bridge/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
 obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o
 obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o
 obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o
@@ -12,8 +11,8 @@ obj-$(CONFIG_DRM_SII9234) += sii9234.o
 obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o
 obj-$(CONFIG_DRM_TOSHIBA_TC358764) += tc358764.o
 obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o
-obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/
 obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
 obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o
 obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o
 obj-y += synopsys/
+obj-y += analogix/
diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig 
b/drivers/gpu/drm/bridge/analogix/Kconfig
index e930ff9..dfe84f5 100644
--- a/drivers/gpu/drm/bridge/analogix/Kconfig
+++ b/drivers/gpu/drm/bridge/analogix/Kconfig
@@ -1,4 +1,14 @@
 # SPDX-License-Identifier: GPL-2.0-only
+config DRM_ANALOGIX_ANX78XX
+   tristate "Analogix ANX78XX bridge"
+   select DRM_KMS_HELPER
+   select REGMAP_I2C
+   ---help---
+ ANX78XX is an ultra-low Full-HD SlimPort transmitter
+ designed for portable devices. The ANX78XX transforms
+ the HDMI output of an application processor to MyDP
+ or DisplayPort.
+
 config DRM_ANALOGIX_DP
tristate
depends on DRM
diff --git a/drivers/gpu/drm/bridge/analogix/Makefile 
b/drivers/gpu/drm/bridge/analogix/Makefile
index fdbf3fd..d4c54ac 100644
--- a/drivers/gpu/drm/bridge/analogix/Makefile
+++ b/drivers/gpu/drm/bridge/analogix/Makefile
@@ -1,3 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
+
 analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
 obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c 
b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
similarity index 100%
rename from drivers/gpu/drm/bridge/analogix-anx78xx.c
rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.h 
b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
similarity index 100%
rename from drivers/gpu/drm/bridge/analogix-anx78xx.h
rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2 1/2] drivers/staging/rtl8192u: drop first comment line

2019-06-27 Thread Greg KH
On Thu, Jun 27, 2019 at 10:33:35AM +0200, Christian Müller wrote:
> As stated in coding-styles.rst multiline comments should be structured in a 
> way,
> that the actual comment starts on the second line of the commented portion. 
> E.g:
> 
> /*
>  * Multiline comments
>  * should look like
>  * this.
>  */
> 
> However, there is an exception to files in drivers/net/ and net/, where
> multiline comments are prefered to look like this:
> 
> /* Mutliline comments for
>  * drivers/net/ should look
>  * like this.
>  */
> 
> The comments in this file initially looked like the first example.
> But since this file is part of a networking driver and thus should
> be moved to drivers/net/ one day, this patch adjusts the comments
> such that they are fitting to the style imposed for drivers/net/.
> 
> Signed-off-by: Christian Müller 
> Signed-off-by: Felix Trommer 
> ---
>  drivers/staging/rtl8192u/r8192U_dm.c | 69 ++--
>  1 file changed, 23 insertions(+), 46 deletions(-)

What changed from v1?  That always goes below the --- line.

Please fix up and send v3.

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] fbtft: Cleanup line over 80 character warnings

2019-06-27 Thread Greg KH
On Thu, Jun 27, 2019 at 02:12:40PM +0200, Lukas Schneider wrote:
> Cleanup the line over 80 character warnings, reported by checkpatch
> 
> Signed-off-by: Lukas Schneider 
> Signed-off-by: Jannik Moritz 
> Cc: 
> ---
>  drivers/staging/fbtft/fbtft-sysfs.c |  3 ++-
>  drivers/staging/fbtft/fbtft.h   | 26 ++
>  2 files changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/staging/fbtft/fbtft-sysfs.c 
> b/drivers/staging/fbtft/fbtft-sysfs.c
> index 2a5c630dab87..78d2b81ea2e7 100644
> --- a/drivers/staging/fbtft/fbtft-sysfs.c
> +++ b/drivers/staging/fbtft/fbtft-sysfs.c
> @@ -68,7 +68,8 @@ int fbtft_gamma_parse_str(struct fbtft_par *par, u32 
> *curves,
>   ret = get_next_ulong(&curve_p, &val, " ", 16);
>   if (ret)
>   goto out;
> - curves[curve_counter * par->gamma.num_values + 
> value_counter] = val;
> + curves[curve_counter * par->gamma.num_values
> + + value_counter] = val;

Ick, that's horrible to read now, right?

>   value_counter++;
>   }
>   if (value_counter != par->gamma.num_values) {
> diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
> index 9b6bdb62093d..cddbfd4ffa10 100644
> --- a/drivers/staging/fbtft/fbtft.h
> +++ b/drivers/staging/fbtft/fbtft.h
> @@ -348,9 +348,25 @@ module_exit(fbtft_driver_module_exit);
>  
>  /* shorthand debug levels */
>  #define DEBUG_LEVEL_1DEBUG_REQUEST_GPIOS
> -#define DEBUG_LEVEL_2(DEBUG_LEVEL_1 | DEBUG_DRIVER_INIT_FUNCTIONS | 
> DEBUG_TIME_FIRST_UPDATE)
> -#define DEBUG_LEVEL_3(DEBUG_LEVEL_2 | DEBUG_RESET | 
> DEBUG_INIT_DISPLAY | DEBUG_BLANK | DEBUG_REQUEST_GPIOS | DEBUG_FREE_GPIOS | 
> DEBUG_VERIFY_GPIOS | DEBUG_BACKLIGHT | DEBUG_SYSFS)
> -#define DEBUG_LEVEL_4(DEBUG_LEVEL_2 | DEBUG_FB_READ | DEBUG_FB_WRITE 
> | DEBUG_FB_FILLRECT | DEBUG_FB_COPYAREA | DEBUG_FB_IMAGEBLIT | DEBUG_FB_BLANK)
> +#define DEBUG_LEVEL_2(DEBUG_LEVEL_1 |\
> +  DEBUG_DRIVER_INIT_FUNCTIONS |  \
> +  DEBUG_TIME_FIRST_UPDATE)
> +#define DEBUG_LEVEL_3(DEBUG_LEVEL_2 |\
> +  DEBUG_RESET |  \
> +  DEBUG_INIT_DISPLAY |   \
> +  DEBUG_BLANK |  \
> +  DEBUG_REQUEST_GPIOS |  \
> +  DEBUG_FREE_GPIOS | \
> +  DEBUG_VERIFY_GPIOS |   \
> +  DEBUG_BACKLIGHT |  \
> +  DEBUG_SYSFS)
> +#define DEBUG_LEVEL_4(DEBUG_LEVEL_2 |\
> +  DEBUG_FB_READ |\
> +  DEBUG_FB_WRITE |   \
> +  DEBUG_FB_FILLRECT |\
> +  DEBUG_FB_COPYAREA |\
> +  DEBUG_FB_IMAGEBLIT |   \
> +  DEBUG_FB_BLANK)
>  #define DEBUG_LEVEL_5(DEBUG_LEVEL_3 | DEBUG_UPDATE_DISPLAY)
>  #define DEBUG_LEVEL_6(DEBUG_LEVEL_4 | DEBUG_LEVEL_5)
>  #define DEBUG_LEVEL_70x

All of these special debug "levels" need to go away now that the drivers
are working, and just use the in-kernel debugging macros instead.

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] media: bcm2048: Macros with complex values should be enclosed in parentheses

2019-06-27 Thread kbuild test robot
Hi Lukas,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.2-rc6 next-20190625]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Lukas-Schneider/media-bcm2048-Macros-with-complex-values-should-be-enclosed-in-parentheses/20190628-003532
base:   git://linuxtv.org/media_tree.git master
config: i386-randconfig-x074-201925 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-9) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot 

All error/warnings (new ones prefixed by >>):

>> drivers/staging/media/bcm2048/radio-bcm2048.c:2004:1: error: expected 
>> identifier or '(' before 'do'
do { \
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2033:1: note: in expansion of 
>> macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(power_state, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2033:1: note: in expansion of 
>> macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(power_state, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2034:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(mute, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2035:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(audio_route, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2036:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(dac_output, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2038:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_hi_lo_injection, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2039:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_frequency, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2040:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_af_frequency, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2041:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_deemphasis, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2042:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_rds_mask, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2043:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_best_tune_mode, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'while'
} while (0)\
  ^
   drivers/staging/media/bcm2048/radio-bcm2048.c:2044:1: note: in expansion of 
macro 'DEFINE_SYSFS_PROPERTY'
DEFINE_SYSFS_PROPERTY(fm_search_rssi_threshold, unsigned int, "%u", 0)
^
>> drivers/staging/media/bcm2048/radio-bcm2048.c:2007:3: error: expected 
>> identifier or '(' before 'w

[PATCH 48/87] rtl8723bs: os_dep: replace rtw_malloc and memset with rtw_zmalloc

2019-06-27 Thread Fuqian Huang
rtw_malloc + memset(0) -> rtw_zmalloc

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c |  8 ++--
 drivers/staging/rtl8723bs/os_dep/ioctl_linux.c| 12 +++-
 2 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c 
b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index db553f2e4c0b..f8e0723f5d1f 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -1078,12 +1078,10 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, 
struct net_device *ndev,
DBG_871X("pairwise =%d\n", pairwise);
 
param_len = sizeof(struct ieee_param) + params->key_len;
-   param = rtw_malloc(param_len);
+   param = rtw_zmalloc(param_len);
if (param == NULL)
return -1;
 
-   memset(param, 0, param_len);
-
param->cmd = IEEE_CMD_SET_ENCRYPTION;
memset(param->sta_addr, 0xff, ETH_ALEN);
 
@@ -2167,15 +2165,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, 
struct net_device *ndev,
{
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len + FIELD_OFFSET(struct 
ndis_802_11_wep, KeyMaterial);
-   pwep = rtw_malloc(wep_total_len);
+   pwep = rtw_zmalloc(wep_total_len);
if (pwep == NULL) {
DBG_871X(" wpa_set_encryption: pwep allocate 
fail !!!\n");
ret = -ENOMEM;
goto exit;
}
 
-   memset(pwep, 0, wep_total_len);
-
pwep->KeyLength = wep_key_len;
pwep->Length = wep_total_len;
 
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c 
b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
index e3d356952875..1491d420929c 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
@@ -478,14 +478,12 @@ static int wpa_set_encryption(struct net_device *dev, 
struct ieee_param *param,
if (wep_key_len > 0) {
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len + FIELD_OFFSET(struct 
ndis_802_11_wep, KeyMaterial);
-   pwep = rtw_malloc(wep_total_len);
+   pwep = rtw_zmalloc(wep_total_len);
if (pwep == NULL) {
RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, 
(" wpa_set_encryption: pwep allocate fail !!!\n"));
goto exit;
}
 
-   memset(pwep, 0, wep_total_len);
-
pwep->KeyLength = wep_key_len;
pwep->Length = wep_total_len;
 
@@ -2144,12 +2142,10 @@ static int rtw_wx_set_enc_ext(struct net_device *dev,
int ret = 0;
 
param_len = sizeof(struct ieee_param) + pext->key_len;
-   param = rtw_malloc(param_len);
+   param = rtw_zmalloc(param_len);
if (param == NULL)
return -1;
 
-   memset(param, 0, param_len);
-
param->cmd = IEEE_CMD_SET_ENCRYPTION;
memset(param->sta_addr, 0xff, ETH_ALEN);
 
@@ -3522,14 +3518,12 @@ static int rtw_set_encryption(struct net_device *dev, 
struct ieee_param *param,
if (wep_key_len > 0) {
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len + FIELD_OFFSET(struct 
ndis_802_11_wep, KeyMaterial);
-   pwep = rtw_malloc(wep_total_len);
+   pwep = rtw_zmalloc(wep_total_len);
if (pwep == NULL) {
DBG_871X(" r871x_set_encryption: pwep allocate 
fail !!!\n");
goto exit;
}
 
-   memset(pwep, 0, wep_total_len);
-
pwep->KeyLength = wep_key_len;
pwep->Length = wep_total_len;
 
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 49/87] rtl8723bs: core: remove memset after rtw_zmalloc

2019-06-27 Thread Fuqian Huang
rtw_zmalloc already zeros the memory.
memset is unneeded.

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8723bs/core/rtw_ap.c   | 2 --
 drivers/staging/rtl8723bs/core/rtw_mlme.c | 2 --
 2 files changed, 4 deletions(-)

diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c 
b/drivers/staging/rtl8723bs/core/rtw_ap.c
index bc0230672457..dc1da5626ce1 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -1504,8 +1504,6 @@ static int rtw_ap_set_key(
goto exit;
}
 
-   memset(psetkeyparm, 0, sizeof(struct setkey_parm));
-
psetkeyparm->keyid = (u8)keyid;
if (is_wep_enc(alg))
padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c 
b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 5f78f1eaa7aa..3586da79af5a 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -2229,7 +2229,6 @@ sint rtw_set_auth(struct adapter *adapter, struct 
security_priv *psecuritypriv)
goto exit;
}
 
-   memset(psetauthparm, 0, sizeof(struct setauth_parm));
psetauthparm->mode = (unsigned char)psecuritypriv->dot11AuthAlgrthm;
 
pcmd->cmdcode = _SetAuth_CMD_;
@@ -2262,7 +2261,6 @@ sint rtw_set_key(struct adapter *adapter, struct 
security_priv *psecuritypriv, s
res = _FAIL;
goto exit;
}
-   memset(psetkeyparm, 0, sizeof(struct setkey_parm));
 
if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) {
psetkeyparm->algorithm = (unsigned 
char)psecuritypriv->dot118021XGrpPrivacy;
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 50/87] rtl8712: replace kmalloc and memset with kzalloc

2019-06-27 Thread Fuqian Huang
kmalloc + memset(0) -> kzalloc

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8712/rtl871x_io.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8712/rtl871x_io.c 
b/drivers/staging/rtl8712/rtl871x_io.c
index 17dafeffd6f4..87024d6a465e 100644
--- a/drivers/staging/rtl8712/rtl871x_io.c
+++ b/drivers/staging/rtl8712/rtl871x_io.c
@@ -107,13 +107,11 @@ uint r8712_alloc_io_queue(struct _adapter *adapter)
INIT_LIST_HEAD(&pio_queue->processing);
INIT_LIST_HEAD(&pio_queue->pending);
spin_lock_init(&pio_queue->lock);
-   pio_queue->pallocated_free_ioreqs_buf = kmalloc(NUM_IOREQ *
+   pio_queue->pallocated_free_ioreqs_buf = kzalloc(NUM_IOREQ *
(sizeof(struct io_req)) + 4,
GFP_ATOMIC);
if ((pio_queue->pallocated_free_ioreqs_buf) == NULL)
goto alloc_io_queue_fail;
-   memset(pio_queue->pallocated_free_ioreqs_buf, 0,
-   (NUM_IOREQ * (sizeof(struct io_req)) + 4));
pio_queue->free_ioreqs_buf = pio_queue->pallocated_free_ioreqs_buf + 4
- ((addr_t)(pio_queue->pallocated_free_ioreqs_buf)
& 3);
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 51/87] rtl8188eu: os_dep: replace rtw_malloc and memset with rtw_zmalloc

2019-06-27 Thread Fuqian Huang
rtw_malloc + memset(0) -> rtw_zmalloc

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8188eu/os_dep/mlme_linux.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c 
b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
index 9db11b16cb93..250acb01d1a9 100644
--- a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
+++ b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
@@ -98,10 +98,9 @@ void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, 
u8 *sec_ie)
if (authmode == _WPA_IE_ID_) {
RT_TRACE(_module_mlme_osdep_c_, _drv_info_,
 ("rtw_report_sec_ie, authmode=%d\n", authmode));
-   buff = rtw_malloc(IW_CUSTOM_MAX);
+   buff = rtw_zmalloc(IW_CUSTOM_MAX);
if (!buff)
return;
-   memset(buff, 0, IW_CUSTOM_MAX);
p = buff;
p += sprintf(p, "ASSOCINFO(ReqIEs =");
len = sec_ie[1] + 2;
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[Patch v2] staging: rtl8723bs: hal: sdio_halinit: Remove set but unused varilable pHalData

2019-06-27 Thread Hariprasad Kelam
Remove set but unsed variable pHalData in below functions
_InitOperationMode, SetHwReg8723BS.

Signed-off-by: Hariprasad Kelam 
---
 drivers/staging/rtl8723bs/hal/sdio_halinit.c | 5 -
 1 file changed, 5 deletions(-)

diff --git a/drivers/staging/rtl8723bs/hal/sdio_halinit.c 
b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
index 4d06ab7..5b72d61 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_halinit.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
@@ -606,11 +606,9 @@ static void _initSdioAggregationSetting(struct adapter 
*padapter)
 
 static void _InitOperationMode(struct adapter *padapter)
 {
-   struct hal_com_data *pHalData;
struct mlme_ext_priv *pmlmeext;
u8 regBwOpMode = 0;
 
-   pHalData = GET_HAL_DATA(padapter);
pmlmeext = &padapter->mlmeextpriv;
 
/* 1 This part need to modified according to the rate set we filtered!! 
*/
@@ -1413,7 +1411,6 @@ static void ReadAdapterInfo8723BS(struct adapter 
*padapter)
  */
 static void SetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
 {
-   struct hal_com_data *pHalData;
u8 val8;
 
 #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
@@ -1433,8 +1430,6 @@ static void SetHwReg8723BS(struct adapter *padapter, u8 
variable, u8 *val)
 #endif
 #endif
 
-   pHalData = GET_HAL_DATA(padapter);
-
switch (variable) {
case HW_VAR_SET_RPWM:
/*  rpwm value only use BIT0(clock bit) , BIT6(Ack bit), and 
BIT7(Toggle bit) */
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: rtl8723bs: hal: sdio_halinit: Remove set but unused varilable pHalData

2019-06-27 Thread Hariprasad Kelam
On Thu, Jun 27, 2019 at 09:38:35AM +0300, Dan Carpenter wrote:
> On Wed, Jun 26, 2019 at 11:14:59PM +0530, Hariprasad Kelam wrote:
> > @@ -1433,7 +1430,6 @@ static void SetHwReg8723BS(struct adapter *padapter, 
> > u8 variable, u8 *val)
> >  #endif
> >  #endif
> >  
> > -   pHalData = GET_HAL_DATA(padapter);
> >  
> > switch (variable) {
> 
> We need to delete one of those blank lines or it introduces a new
> checkpatch warning.
>
Yes thanks for correcting this .  Will resend the patch.

Thanks,
Hariprasad k

> regards,
> dan carpenter
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [Patch v2] staging: rtl8723bs: hal: sdio_halinit: Remove set but unused varilable pHalData

2019-06-27 Thread Greg Kroah-Hartman
On Thu, Jun 27, 2019 at 11:33:02PM +0530, Hariprasad Kelam wrote:
> Remove set but unsed variable pHalData in below functions
> _InitOperationMode, SetHwReg8723BS.
> 
> Signed-off-by: Hariprasad Kelam 
> ---
>  drivers/staging/rtl8723bs/hal/sdio_halinit.c | 5 -
>  1 file changed, 5 deletions(-)

What changed in v2?
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 48/87] rtl8723bs: os_dep: replace rtw_malloc and memset with rtw_zmalloc

2019-06-27 Thread Andy Shevchenko
On Thu, Jun 27, 2019 at 8:41 PM Fuqian Huang  wrote:
>
> rtw_malloc + memset(0) -> rtw_zmalloc

I have a feeling that everything under os_dep folder should be
replaced with native kernel APIs.

>  drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c |  8 ++--
>  drivers/staging/rtl8723bs/os_dep/ioctl_linux.c| 12 +++-

-- 
With Best Regards,
Andy Shevchenko
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[Patch v3] staging: rtl8723bs: hal: sdio_halinit: Remove set but unused varilable pHalData

2019-06-27 Thread Hariprasad Kelam
Remove set but unsed variable pHalData in below functions
_InitOperationMode, SetHwReg8723BS.

Signed-off-by: Hariprasad Kelam 
---
v2 add clean change log
v3 remove unneeded blank lines
---
 drivers/staging/rtl8723bs/hal/sdio_halinit.c | 5 -
 1 file changed, 5 deletions(-)

diff --git a/drivers/staging/rtl8723bs/hal/sdio_halinit.c 
b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
index 4d06ab7..5b72d61 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_halinit.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_halinit.c
@@ -606,11 +606,9 @@ static void _initSdioAggregationSetting(struct adapter 
*padapter)
 
 static void _InitOperationMode(struct adapter *padapter)
 {
-   struct hal_com_data *pHalData;
struct mlme_ext_priv *pmlmeext;
u8 regBwOpMode = 0;
 
-   pHalData = GET_HAL_DATA(padapter);
pmlmeext = &padapter->mlmeextpriv;
 
/* 1 This part need to modified according to the rate set we filtered!! 
*/
@@ -1413,7 +1411,6 @@ static void ReadAdapterInfo8723BS(struct adapter 
*padapter)
  */
 static void SetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
 {
-   struct hal_com_data *pHalData;
u8 val8;
 
 #if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
@@ -1433,8 +1430,6 @@ static void SetHwReg8723BS(struct adapter *padapter, u8 
variable, u8 *val)
 #endif
 #endif
 
-   pHalData = GET_HAL_DATA(padapter);
-
switch (variable) {
case HW_VAR_SET_RPWM:
/*  rpwm value only use BIT0(clock bit) , BIT6(Ack bit), and 
BIT7(Toggle bit) */
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 00/34] treewide: simplify getting the adapter of an I2C client

2019-06-27 Thread Sebastian Reichel
Hi,

On Sat, Jun 08, 2019 at 12:55:39PM +0200, Wolfram Sang wrote:
> While preparing a refactoring series, I noticed that some drivers use a
> complicated way of determining the adapter of a client. The easy way is
> to use the intended pointer: client->adapter
> 
> These drivers do:
>   to_i2c_adapter(client->dev.parent);
> 
> The I2C core populates the parent pointer as:
>   client->dev.parent = &client->adapter->dev;
> 
> Now take into consideration that
>   to_i2c_adapter(&adapter->dev);
> 
> is a complicated way of saying 'adapter', then we can even formally
> prove that the complicated expression can be simplified by using
> client->adapter.
> 
> The conversion was done using a coccinelle script with some manual
> indentation fixes applied on top.
> 
> To avoid a brown paper bag mistake, I double checked this on a Renesas
> Salvator-XS board (R-Car M3N) and verified both expression result in the
> same pointer. Other than that, the series is only build tested.
> 
> A branch can be found here:
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/no_to_adapter
> 
> Please apply the patches to the individual subsystem trees. There are no
> dependencies.
> 
> Thanks and kind regards,
> 
>Wolfram

Thanks, I queued the patches prefixed with "power: supply: [...]".

-- Sebastian

> Wolfram Sang (34):
>   clk: clk-cdce706: simplify getting the adapter of a client
>   gpu: drm: bridge: sii9234: simplify getting the adapter of a client
>   iio: light: bh1780: simplify getting the adapter of a client
>   leds: leds-pca955x: simplify getting the adapter of a client
>   leds: leds-tca6507: simplify getting the adapter of a client
>   media: i2c: ak881x: simplify getting the adapter of a client
>   media: i2c: mt9m001: simplify getting the adapter of a client
>   media: i2c: mt9m111: simplify getting the adapter of a client
>   media: i2c: mt9p031: simplify getting the adapter of a client
>   media: i2c: ov2640: simplify getting the adapter of a client
>   media: i2c: tw9910: simplify getting the adapter of a client
>   misc: fsa9480: simplify getting the adapter of a client
>   misc: isl29003: simplify getting the adapter of a client
>   misc: tsl2550: simplify getting the adapter of a client
>   mtd: maps: pismo: simplify getting the adapter of a client
>   power: supply: bq24190_charger: simplify getting the adapter of a client
>   power: supply: bq24257_charger: simplify getting the adapter of a client
>   power: supply: bq25890_charger: simplify getting the adapter of a client
>   power: supply: max14656_charger_detector: simplify getting the adapter
> of a client
>   power: supply: max17040_battery: simplify getting the adapter of a client
>   power: supply: max17042_battery: simplify getting the adapter of a client
>   power: supply: rt5033_battery: simplify getting the adapter of a client
>   power: supply: rt9455_charger: simplify getting the adapter of a client
>   power: supply: sbs-manager: simplify getting the adapter of a client
>   regulator: max8952: simplify getting the adapter of a client
>   rtc: fm3130: simplify getting the adapter of a client
>   rtc: m41t80: simplify getting the adapter of a client
>   rtc: rv8803: simplify getting the adapter of a client
>   rtc: rx8010: simplify getting the adapter of a client
>   rtc: rx8025: simplify getting the adapter of a client
>   staging: media: soc_camera: imx074: simplify getting the adapter of a client
>   staging: media: soc_camera: mt9t031: simplify getting the adapter of a 
> client
>   staging: media: soc_camera: soc_mt9v022: simplify getting the adapter
> of a client
>   usb: typec: tcpm: fusb302: simplify getting the adapter of a client
> 
>  drivers/clk/clk-cdce706.c| 2 +-
>  drivers/gpu/drm/bridge/sii9234.c | 4 ++--
>  drivers/iio/light/bh1780.c   | 2 +-
>  drivers/leds/leds-pca955x.c  | 2 +-
>  drivers/leds/leds-tca6507.c  | 2 +-
>  drivers/media/i2c/ak881x.c   | 2 +-
>  drivers/media/i2c/mt9m001.c  | 2 +-
>  drivers/media/i2c/mt9m111.c  | 2 +-
>  drivers/media/i2c/mt9p031.c  | 2 +-
>  drivers/media/i2c/ov2640.c   | 2 +-
>  drivers/media/i2c/tw9910.c   | 3 +--
>  drivers/misc/fsa9480.c   | 2 +-
>  drivers/misc/isl29003.c  | 2 +-
>  drivers/misc/tsl2550.c   | 2 +-
>  drivers/mtd/maps/pismo.c | 2 +-
>  drivers/power/supply/bq24190_charger.c   | 2 +-
>  drivers/power/supply/bq24257_charger.c   | 2 +-
>  drivers/power/supply/bq25890_charger.c   | 2 +-
>  drivers/power/supply/max14656_charger_detector.c | 2 +-
>  drivers/power/supply/max17040_battery.c  | 2 +-
>  drivers/power/supply/max17042_battery.c  | 2 +-
>  drivers/power/supply/rt5033_battery.c

[PATCH] staging:kpc2000:Fix sparse warnings

2019-06-27 Thread Harsh Jain
From: root 

Fix following sparse warning
symbol was not declared. Should it be static?
Using plain integer as NULL pointer

Signed-off-by: Harsh Jain 
---
 drivers/staging/kpc2000/kpc_i2c/i2c_driver.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/kpc2000/kpc_i2c/i2c_driver.c 
b/drivers/staging/kpc2000/kpc_i2c/i2c_driver.c
index 0fb068b2408d..155da641e3a2 100644
--- a/drivers/staging/kpc2000/kpc_i2c/i2c_driver.c
+++ b/drivers/staging/kpc2000/kpc_i2c/i2c_driver.c
@@ -614,7 +614,7 @@ static const struct i2c_algorithm smbus_algorithm = {
 /
  *** Part 2 - Driver Handlers ***
  /
-int pi2c_probe(struct platform_device *pldev)
+static int pi2c_probe(struct platform_device *pldev)
 {
 int err;
 struct i2c_device *priv;
@@ -664,7 +664,7 @@ int pi2c_probe(struct platform_device *pldev)
 return 0;
 }
 
-int pi2c_remove(struct platform_device *pldev)
+static int pi2c_remove(struct platform_device *pldev)
 {
 struct i2c_device *lddev;
 dev_dbg(&pldev->dev, "pi2c_remove(pldev = %p '%s')\n", pldev, pldev->name);
@@ -679,9 +679,9 @@ int pi2c_remove(struct platform_device *pldev)
 //pci_set_drvdata(dev, NULL);
 
 //cdev_del(&lddev->cdev);
-if(lddev != 0) {
+if(lddev != NULL) {
 kfree(lddev);
-pldev->dev.platform_data = 0;
+pldev->dev.platform_data = NULL;
 }
 
 return 0;
-- 
2.17.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 01/31] staging: bcm2835-camera: Ensure H264 header bytes get a sensible timestamp

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

H264 header come from VC with 0 timestamps, which means they get a
strange timestamp when processed with VC/kernel start times,
particularly if used with the inline header option.
Remember the last frame timestamp and use that if set, or otherwise
use the kernel start time.

Link: https://github.com/raspberrypi/linux/issues/1836
Signed-off-by: Dave Stevenson 
---
 .../staging/vc04_services/bcm2835-camera/bcm2835-camera.c  | 14 --
 .../staging/vc04_services/bcm2835-camera/bcm2835-camera.h  |  2 ++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index dce6e6d..0c04815 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -359,7 +359,9 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
}
} else {
if (dev->capture.frame_count) {
-   if (dev->capture.vc_start_timestamp != -1 && pts) {
+   if (dev->capture.vc_start_timestamp != -1) {
+   buf->vb.vb2_buf.timestamp = ktime_get_ns();
+   } else if (pts) {
ktime_t timestamp;
s64 runtime_us = pts -
dev->capture.vc_start_timestamp;
@@ -372,8 +374,15 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
 ktime_to_ns(timestamp));
buf->vb.vb2_buf.timestamp = 
ktime_to_ns(timestamp);
} else {
-   buf->vb.vb2_buf.timestamp = ktime_get_ns();
+   if (dev->capture.last_timestamp) {
+   buf->vb.vb2_buf.timestamp =
+   dev->capture.last_timestamp;
+   } else {
+   buf->vb.vb2_buf.timestamp =
+   
ktime_to_ns(dev->capture.kernel_start_ts);
+   }
}
+   dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;

vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
@@ -541,6 +550,7 @@ static int start_streaming(struct vb2_queue *vq, unsigned 
int count)
 dev->capture.vc_start_timestamp, parameter_size);

dev->capture.kernel_start_ts = ktime_get();
+   dev->capture.last_timestamp = 0;

/* enable the camera port */
dev->capture.port->cb_ctx = dev;
diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
index 2b5679e..09273b0 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -90,6 +90,8 @@ struct bm2835_mmal_dev {
s64 vc_start_timestamp;
/* Kernel start timestamp for streaming */
ktime_t kernel_start_ts;
+   /* Timestamp of last frame */
+   u64 last_timestamp;

struct vchiq_mmal_port  *port; /* port being used for capture */
/* camera port being used for capture */
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 14/31] staging: bcm2835-camera: Fix open parenthesis alignment

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix checkpatch "Alignment should match open parenthesis"
errors.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  |  9 
 .../vc04_services/bcm2835-camera/controls.c| 25 ++
 .../vc04_services/bcm2835-camera/mmal-vchiq.c  |  2 +-
 .../vc04_services/bcm2835-camera/mmal-vchiq.h  |  6 +++---
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index c1f6141..4968782 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -568,8 +568,8 @@ static int start_streaming(struct vb2_queue *vq, unsigned 
int count)
vchiq_mmal_port_enable(dev->instance, dev->capture.port, buffer_cb);
if (ret) {
v4l2_err(&dev->v4l2_dev,
-   "Failed to enable capture port - error %d. Disabling 
camera port again\n",
-   ret);
+"Failed to enable capture port - error %d. Disabling 
camera port again\n",
+ret);

vchiq_mmal_port_disable(dev->instance,
dev->capture.camera_port);
@@ -961,8 +961,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void 
*priv,
f->fmt.pix.bytesperline =
(f->fmt.pix.bytesperline + align_mask) & ~align_mask;
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
-"Not removing padding, so bytes/line = %d, "
-"(align_mask %d)\n",
+"Not removing padding, so bytes/line = %d, (align_mask 
%d)\n",
 f->fmt.pix.bytesperline, align_mask);
}

@@ -1308,7 +1307,7 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void 
*priv,
 }

 static int vidioc_enum_framesizes(struct file *file, void *fh,
-  struct v4l2_frmsizeenum *fsize)
+ struct v4l2_frmsizeenum *fsize)
 {
struct bm2835_mmal_dev *dev = video_drvdata(file);
static const struct v4l2_frmsize_stepwise sizes = {
diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index 1a7588d..bc2f3f4 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -1260,9 +1260,12 @@ int bm2835_mmal_init_controls(struct bm2835_mmal_dev 
*dev,

switch (ctrl->type) {
case MMAL_CONTROL_TYPE_STD:
-   dev->ctrls[c] = v4l2_ctrl_new_std(hdl,
-   &bm2835_mmal_ctrl_ops, ctrl->id,
-   ctrl->min, ctrl->max, ctrl->step, ctrl->def);
+   dev->ctrls[c] =
+   v4l2_ctrl_new_std(hdl,
+ &bm2835_mmal_ctrl_ops,
+ ctrl->id, ctrl->min,
+ ctrl->max, ctrl->step,
+ ctrl->def);
break;

case MMAL_CONTROL_TYPE_STD_MENU:
@@ -1286,16 +1289,20 @@ int bm2835_mmal_init_controls(struct bm2835_mmal_dev 
*dev,
mask = ~mask;
}

-   dev->ctrls[c] = v4l2_ctrl_new_std_menu(hdl,
-   &bm2835_mmal_ctrl_ops, ctrl->id,
-   ctrl->max, mask, ctrl->def);
+   dev->ctrls[c] =
+   v4l2_ctrl_new_std_menu(hdl,
+  &bm2835_mmal_ctrl_ops,
+  ctrl->id, ctrl->max,
+  mask, ctrl->def);
break;
}

case MMAL_CONTROL_TYPE_INT_MENU:
-   dev->ctrls[c] = v4l2_ctrl_new_int_menu(hdl,
-   &bm2835_mmal_ctrl_ops, ctrl->id,
-   ctrl->max, ctrl->def, ctrl->imenu);
+   dev->ctrls[c] =
+   v4l2_ctrl_new_int_menu(hdl,
+  &bm2835_mmal_ctrl_ops,
+  ctrl->id, ctrl->max,
+  ctrl->def, ctrl->imenu);
break;

case MMAL_CONTROL_TYPE_CLUSTER:
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 73cb295..0b95723 100644
--- a/drivers/staging/vc04_servic

[PATCH 09/31] staging: bcm2835-camera: Fix spacing around operators

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix checkpatch warnings over spaces around operators.
Many were around operations that can be replaced with the
BIT(x) macro, so replace with that where appropriate.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/controls.c| 32 +++---
 .../vc04_services/bcm2835-camera/mmal-msg.h|  3 +-
 .../vc04_services/bcm2835-camera/mmal-parameters.h | 12 
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index b142130..e79e7cd 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -1130,10 +1130,10 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
{
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
MMAL_CONTROL_TYPE_STD_MENU,
-   ~((1<1) */
 #define MMAL_BUFFER_HEADER_FLAG_FRAME  \
-   (MMAL_BUFFER_HEADER_FLAG_FRAME_START|MMAL_BUFFER_HEADER_FLAG_FRAME_END)
+   (MMAL_BUFFER_HEADER_FLAG_FRAME_START | \
+MMAL_BUFFER_HEADER_FLAG_FRAME_END)
 /* Signals that the current payload is a keyframe (i.e. self decodable) */
 #define MMAL_BUFFER_HEADER_FLAG_KEYFRAME   BIT(3)
 /*
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
index 96e987d..6d21594 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
@@ -23,17 +23,17 @@
 #define __MMAL_PARAMETERS_H

 /** Common parameter ID group, used with many types of component. */
-#define MMAL_PARAMETER_GROUP_COMMON(0<<16)
+#define MMAL_PARAMETER_GROUP_COMMON(0 << 16)
 /** Camera-specific parameter ID group. */
-#define MMAL_PARAMETER_GROUP_CAMERA(1<<16)
+#define MMAL_PARAMETER_GROUP_CAMERA(1 << 16)
 /** Video-specific parameter ID group. */
-#define MMAL_PARAMETER_GROUP_VIDEO (2<<16)
+#define MMAL_PARAMETER_GROUP_VIDEO (2 << 16)
 /** Audio-specific parameter ID group. */
-#define MMAL_PARAMETER_GROUP_AUDIO (3<<16)
+#define MMAL_PARAMETER_GROUP_AUDIO (3 << 16)
 /** Clock-specific parameter ID group. */
-#define MMAL_PARAMETER_GROUP_CLOCK (4<<16)
+#define MMAL_PARAMETER_GROUP_CLOCK (4 << 16)
 /** Miracast-specific parameter ID group. */
-#define MMAL_PARAMETER_GROUP_MIRACAST   (5<<16)
+#define MMAL_PARAMETER_GROUP_MIRACAST   (5 << 16)

 /* Common parameters */
 enum mmal_parameter_common_type {
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 13/31] staging: bcm2835-camera: Fix missing lines between items

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix checkpatch errors for missing blank lines after variable
or structure declarations.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
index b8a466e..bbfe8fe 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -130,6 +130,7 @@ int set_framerate_params(struct bm2835_mmal_dev *dev);
(pix_fmt)->pixelformat, (pix_fmt)->bytesperline,\
(pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \
 }
+
 #define v4l2_dump_win_format(level, debug, dev, win_fmt, desc) \
 {  \
v4l2_dbg(level, debug, dev, \
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 11/31] staging: bcm2835-camera: Fix multiple line dereference errors

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix checkpatch errors "Avoid multiple line dereference"

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 23f7754..bde3548 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -1028,12 +1028,10 @@ static int mmal_setup_components(struct bm2835_mmal_dev 
*dev,
if (f->fmt.pix.width <= max_video_width &&
f->fmt.pix.height <= max_video_height)
camera_port = port =
-   &dev->component[COMP_CAMERA]->
-   output[CAM_PORT_VIDEO];
+   
&dev->component[COMP_CAMERA]->output[CAM_PORT_VIDEO];
else
camera_port = port =
-   &dev->component[COMP_CAMERA]->
-   output[CAM_PORT_CAPTURE];
+   
&dev->component[COMP_CAMERA]->output[CAM_PORT_CAPTURE];
break;
case COMP_IMAGE_ENCODE:
encode_component = dev->component[COMP_IMAGE_ENCODE];
@@ -1224,9 +1222,8 @@ static int mmal_setup_components(struct bm2835_mmal_dev 
*dev,
 port->current_buffer.size);
port->current_buffer.size =
(f->fmt.pix.sizeimage <
-(100 << 10))
-   ? (100 << 10)
-   : f->fmt.pix.sizeimage;
+(100 << 10)) ?
+   (100 << 10) : f->fmt.pix.sizeimage;
}
v4l2_dbg(1, bcm2835_v4l2_debug,
 &dev->v4l2_dev,
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 17/31] staging: bcm2835-camera: Handle empty EOS buffers whilst streaming

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

The change to mapping V4L2 to MMAL buffers 1:1 didn't handle
the condition we get with raw pixel buffers (eg YUV and RGB)
direct from the camera's stills port. That sends the pixel buffer
and then an empty buffer with the EOS flag set. The EOS buffer
wasn't handled and returned an error up the stack.

Handle the condition correctly by returning it to the component
if streaming, or returning with an error if stopping streaming.

Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer 
remapping")
Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c   | 21 -
 .../vc04_services/bcm2835-camera/mmal-vchiq.c   |  5 +++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 36eb4d6..f2e951c 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -339,16 +339,13 @@ static void buffer_cb(struct vchiq_mmal_instance 
*instance,

if (length == 0) {
/* stream ended */
-   if (buf) {
-   /* this should only ever happen if the port is
-* disabled and there are buffers still queued
+   if (dev->capture.frame_count) {
+   /* empty buffer whilst capturing - expected to be an
+* EOS, so grab another frame
 */
-   vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
-   pr_debug("Empty buffer");
-   } else if (dev->capture.frame_count) {
-   /* grab another frame */
if (is_capturing(dev)) {
-   pr_debug("Grab another frame");
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"Grab another frame");
vchiq_mmal_port_parameter_set(
instance,
dev->capture.camera_port,
@@ -356,8 +353,14 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
&dev->capture.frame_count,
sizeof(dev->capture.frame_count));
}
+   if (vchiq_mmal_submit_buffer(instance, port, buf))
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"Failed to return EOS buffer");
} else {
-   /* signal frame completion */
+   /* stopping streaming.
+* return buffer, and signal frame completion
+*/
+   vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
complete(&dev->capture.frame_cmplt);
}
return;
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 59eb812..d0f7b67 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -332,8 +332,6 @@ static int bulk_receive(struct vchiq_mmal_instance 
*instance,

/* store length */
msg_context->u.bulk.buffer_used = rd_len;
-   msg_context->u.bulk.mmal_flags =
-   msg->u.buffer_from_host.buffer_header.flags;
msg_context->u.bulk.dts = msg->u.buffer_from_host.buffer_header.dts;
msg_context->u.bulk.pts = msg->u.buffer_from_host.buffer_header.pts;

@@ -461,6 +459,9 @@ static void buffer_to_host_cb(struct vchiq_mmal_instance 
*instance,
return;
}

+   msg_context->u.bulk.mmal_flags =
+   msg->u.buffer_from_host.buffer_header.flags;
+
if (msg->h.status != MMAL_MSG_STATUS_SUCCESS) {
/* message reception had an error */
pr_warn("error %d in reply\n", msg->h.status);
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 06/31] staging: bcm2835-camera: Return early on errors

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix several instances where it is easier to return
early on error conditions than handle it as an else
clause. As requested by Mauro.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  | 109 +++--
 1 file changed, 58 insertions(+), 51 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 456b686..b597475 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -334,7 +334,9 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
}
return;
-   } else if (length == 0) {
+   }
+
+   if (length == 0) {
/* stream ended */
if (buf) {
/* this should only ever happen if the port is
@@ -357,56 +359,59 @@ static void buffer_cb(struct vchiq_mmal_instance 
*instance,
/* signal frame completion */
complete(&dev->capture.frame_cmplt);
}
-   } else {
-   if (dev->capture.frame_count) {
-   if (dev->capture.vc_start_timestamp != -1) {
-   buf->vb.vb2_buf.timestamp = ktime_get_ns();
-   } else if (pts) {
-   ktime_t timestamp;
-   s64 runtime_us = pts -
-   dev->capture.vc_start_timestamp;
-   timestamp = 
ktime_add_us(dev->capture.kernel_start_ts,
-runtime_us);
-   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
-"Convert start time %llu and %llu with 
offset %llu to %llu\n",
-
ktime_to_ns(dev->capture.kernel_start_ts),
-dev->capture.vc_start_timestamp, pts,
-ktime_to_ns(timestamp));
-   buf->vb.vb2_buf.timestamp = 
ktime_to_ns(timestamp);
-   } else {
-   if (dev->capture.last_timestamp) {
-   buf->vb.vb2_buf.timestamp =
-   dev->capture.last_timestamp;
-   } else {
-   buf->vb.vb2_buf.timestamp =
-   
ktime_to_ns(dev->capture.kernel_start_ts);
-   }
-   }
-   dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;
+   return;
+   }

-   vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
-   if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME)
-   buf->vb.flags |= V4L2_BUF_FLAG_KEYFRAME;
+   if (!dev->capture.frame_count) {
+   /* signal frame completion */
+   vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
+   complete(&dev->capture.frame_cmplt);
+   return;
+   }

-   vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE);

-   if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_EOS &&
-   is_capturing(dev)) {
-   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
-"Grab another frame as buffer has 
EOS");
-   vchiq_mmal_port_parameter_set(
-   instance,
-   dev->capture.camera_port,
-   MMAL_PARAMETER_CAPTURE,
-   &dev->capture.frame_count,
-   sizeof(dev->capture.frame_count));
-   }
+   if (dev->capture.vc_start_timestamp != -1) {
+   buf->vb.vb2_buf.timestamp = ktime_get_ns();
+   } else if (pts) {
+   ktime_t timestamp;
+   s64 runtime_us = pts -
+   dev->capture.vc_start_timestamp;
+   timestamp = ktime_add_us(dev->capture.kernel_start_ts,
+runtime_us);
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"Convert start time %llu and %llu with offset %llu to 
%llu\n",
+ktime_to_ns(dev->capture.kernel_start_ts),
+dev->capture.vc_start_timestamp, pts,
+ktime_to_ns(timestamp));
+   buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp)

[PATCH 19/31] staging: bcm2835-camera: Ensure timestamps never go backwards.

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

There is an awkward situation with H264 header bytes. Currently
they are returned with a PTS of 0 because they aren't associated
with a timestamped frame to encode. These are handled by either
returning the timestamp of the last buffer to have been received,
or in the case of the first buffer the timestamp taken at
start_streaming.
This results in a race where the current frame may have started
before we take the start time, which results in the first encoded
frame having an earlier timestamp than the header bytes.

Ensure that we never return a negative delta to the user by checking
against the previous timestamp.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 9967df9..6205793 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -387,6 +387,11 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
 ktime_to_ns(dev->capture.kernel_start_ts),
 dev->capture.vc_start_timestamp, pts,
 ktime_to_ns(timestamp));
+   if (timestamp < dev->capture.last_timestamp) {
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"Negative delta - using last time\n");
+   timestamp = dev->capture.last_timestamp;
+   }
buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp);
} else {
if (dev->capture.last_timestamp) {
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 15/31] staging: bcm2835-camera: Ensure all buffers are returned on disable

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

With the recent change to match MMAL and V4L2 buffers there
is a need to wait for all MMAL buffers to be returned during
stop_streaming.

Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer 
remapping")
Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  | 22 --
 .../vc04_services/bcm2835-camera/mmal-vchiq.c  |  4 
 .../vc04_services/bcm2835-camera/mmal-vchiq.h  |  3 +++
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 4968782..36eb4d6 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -595,6 +595,7 @@ static void stop_streaming(struct vb2_queue *vq)
int ret;
unsigned long timeout;
struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq);
+   struct vchiq_mmal_port *port = dev->capture.port;

v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "%s: dev:%p\n",
 __func__, dev);
@@ -618,12 +619,6 @@ static void stop_streaming(struct vb2_queue *vq)
  &dev->capture.frame_count,
  sizeof(dev->capture.frame_count));

-   /* wait for last frame to complete */
-   timeout = wait_for_completion_timeout(&dev->capture.frame_cmplt, HZ);
-   if (timeout == 0)
-   v4l2_err(&dev->v4l2_dev,
-"timed out waiting for frame completion\n");
-
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
 "disabling connection\n");

@@ -638,6 +633,21 @@ static void stop_streaming(struct vb2_queue *vq)
 ret);
}

+   /* wait for all buffers to be returned */
+   while (atomic_read(&port->buffers_with_vpu)) {
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"%s: Waiting for buffers to be returned - %d 
outstanding\n",
+__func__, atomic_read(&port->buffers_with_vpu));
+   timeout = wait_for_completion_timeout(&dev->capture.frame_cmplt,
+ HZ);
+   if (timeout == 0) {
+   v4l2_err(&dev->v4l2_dev, "%s: Timeout waiting for 
buffers to be returned - %d outstanding\n",
+__func__,
+atomic_read(&port->buffers_with_vpu));
+   break;
+   }
+   }
+
if (disable_camera(dev) < 0)
v4l2_err(&dev->v4l2_dev, "Failed to disable camera\n");
 }
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 0b95723..4d63176 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -246,6 +246,8 @@ static void buffer_work_cb(struct work_struct *work)
struct mmal_msg_context *msg_context =
container_of(work, struct mmal_msg_context, u.bulk.work);

+   atomic_dec(&msg_context->u.bulk.port->buffers_with_vpu);
+
msg_context->u.bulk.port->buffer_cb(msg_context->u.bulk.instance,
msg_context->u.bulk.port,
msg_context->u.bulk.status,
@@ -389,6 +391,8 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
INIT_WORK(&msg_context->u.bulk.buffer_to_host_work,
  buffer_to_host_work_cb);

+   atomic_inc(&port->buffers_with_vpu);
+
/* prep the buffer from host message */
memset(&m, 0xbc, sizeof(m));/* just to make debug clearer */

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
index 3498555..1750ff0 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
@@ -72,6 +72,9 @@ struct vchiq_mmal_port {
struct list_head buffers;
/* lock to serialise adding and removing buffers from list */
spinlock_t slock;
+
+   /* Count of buffers the VPU has yet to return */
+   atomic_t buffers_with_vpu;
/* callback on buffer completion */
vchiq_mmal_buffer_cb buffer_cb;
/* callback context */
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 05/31] staging: bcm2835-camera: Correctly denote key frames in encoded data

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Forward MMAL key frame flags to the V4L2 buffers.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 0c04815..456b686 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -385,6 +385,9 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;

vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
+   if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME)
+   buf->vb.flags |= V4L2_BUF_FLAG_KEYFRAME;
+
vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE);

if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_EOS &&
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 07/31] staging: bcm2835-camera: Remove dead email addresses

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

None of the listed author email addresses were valid.
Keep list of authors and the companies they represented.
Update my email address.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c  | 9 +
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h  | 9 +
 drivers/staging/vc04_services/bcm2835-camera/controls.c| 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-common.h | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h  | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-msg-common.h | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-msg-port.h   | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h| 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c  | 9 +
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h  | 9 +
 12 files changed, 60 insertions(+), 48 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index b597475..814deee 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -4,10 +4,11 @@
  *
  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  *
- * Authors: Vincent Sanders 
- *  Dave Stevenson 
- *  Simon Mellor 
- *  Luke Diamand 
+ * Authors: Vincent Sanders @ Collabora
+ *  Dave Stevenson @ Broadcom
+ * (now dave.steven...@raspberrypi.org)
+ *  Simon Mellor @ Broadcom
+ *  Luke Diamand @ Broadcom
  */

 #include 
diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
index 09273b0..9833828 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -4,10 +4,11 @@
  *
  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  *
- * Authors: Vincent Sanders 
- *  Dave Stevenson 
- *  Simon Mellor 
- *  Luke Diamand 
+ * Authors: Vincent Sanders @ Collabora
+ *  Dave Stevenson @ Broadcom
+ * (now dave.steven...@raspberrypi.org)
+ *  Simon Mellor @ Broadcom
+ *  Luke Diamand @ Broadcom
  *
  * core driver device
  */
diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index 133aa6e..b142130 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -4,10 +4,11 @@
  *
  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  *
- * Authors: Vincent Sanders 
- *  Dave Stevenson 
- *  Simon Mellor 
- *  Luke Diamand 
+ * Authors: Vincent Sanders @ Collabora
+ *  Dave Stevenson @ Broadcom
+ * (now dave.steven...@raspberrypi.org)
+ *  Simon Mellor @ Broadcom
+ *  Luke Diamand @ Broadcom
  */

 #include 
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
index a20bf27..858bdcd 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
@@ -4,10 +4,11 @@
  *
  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  *
- * Authors: Vincent Sanders 
- *  Dave Stevenson 
- *  Simon Mellor 
- *  Luke Diamand 
+ * Authors: Vincent Sanders @ Collabora
+ *  Dave Stevenson @ Broadcom
+ * (now dave.steven...@raspberrypi.org)
+ *  Simon Mellor @ Broadcom
+ *  Luke Diamand @ Broadcom
  *
  * MMAL structures
  *
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h
index 1292035..2be9941 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h
@@ -4,10 +4,11 @@
  *
  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  *
- * Authors: Vincent Sanders 
- *  Dave Stevenson 
- *  Simon Mellor 
- *  Luke Diamand 
+ * Authors: Vincent Sanders @ Collabora
+ *  Dave Stevenson @ Broadcom
+ * (now dave.steven...@raspberrypi.org)
+ *  Simon Mellor @ Broadcom
+ *  Luke Diamand @ Broadcom
  */
 #ifndef MMAL_ENCODINGS_H
 #define MMAL_ENCODINGS_H
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-common.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-common.h
index ec84556..342c9b6 100644
--- a/drivers/staging/

[PATCH 16/31] staging: bcm2835-camera: Remove check of the number of buffers supplied

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Before commit "staging: bcm2835-camera: Remove V4L2/MMAL buffer remapping"
there was a need to ensure that there were sufficient buffers supplied from
the user to cover those being sent to the VPU (always 1).

Now the buffers are linked 1:1 between MMAL and V4L2,
therefore there is no need for that check, and indeed it is wrong
as there is no need to submit all the buffers before starting streaming.

Fixes: 938416707071 ("staging: bcm2835-camera: Remove V4L2/MMAL buffer 
remapping")
Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 10 --
 1 file changed, 10 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 4d63176..59eb812 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -1338,16 +1338,6 @@ static int port_enable(struct vchiq_mmal_instance 
*instance,
if (port->enabled)
return 0;

-   /* ensure there are enough buffers queued to cover the buffer headers */
-   if (port->buffer_cb) {
-   hdr_count = 0;
-   list_for_each(buf_head, &port->buffers) {
-   hdr_count++;
-   }
-   if (hdr_count < port->current_buffer.num)
-   return -ENOSPC;
-   }
-
ret = port_action_port(instance, port,
   MMAL_MSG_PORT_ACTION_TYPE_ENABLE);
if (ret)
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 02/31] staging: bcm2835-camera: Check the error for REPEAT_SEQ_HEADER

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

When handling for V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER was added
the firmware would reject the setting if H264 hadn't already been
selected. This was fixed in the firmware at that point, but to
enable backwards compatibility the returned error was ignored.

That was Dec 2013, so the chances of having a firmware that still
has that issue is so close to zero that the workaround can be
removed.

Link: https://github.com/raspberrypi/linux/pull/2782/
Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/controls.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index c251164..133aa6e 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -1124,7 +1124,7 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
0, 1, NULL,
MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER,
ctrl_set_video_encode_param_output,
-   true/* Errors ignored as requires latest firmware to work */
+   false
},
{
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 04/31] staging: bcm2835-camera: Do not bulk receive from service thread

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

vchi_bulk_queue_receive will queue up to a default of 4
bulk receives on a connection before blocking.
If called from the VCHI service_callback thread, then
that thread is unable to service the VCHI_CALLBACK_BULK_RECEIVED
events that would enable the queue call to succeed.

Add a workqueue to schedule the call vchi_bulk_queue_receive
in an alternate context to avoid the lock up.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/mmal-vchiq.c  | 101 -
 1 file changed, 59 insertions(+), 42 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index f1bb900..1a343d8 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -117,8 +117,10 @@ struct mmal_msg_context {

union {
struct {
-   /* work struct for defered callback - must come first */
+   /* work struct for buffer_cb callback */
struct work_struct work;
+   /* work struct for deferred callback */
+   struct work_struct buffer_to_host_work;
/* mmal instance */
struct vchiq_mmal_instance *instance;
/* mmal port */
@@ -167,6 +169,9 @@ struct vchiq_mmal_instance {
/* component to use next */
int component_idx;
struct vchiq_mmal_component component[VCHIQ_MMAL_MAX_COMPONENTS];
+
+   /* ordered workqueue to process all bulk operations */
+   struct workqueue_struct *bulk_wq;
 };

 static struct mmal_msg_context *
@@ -248,7 +253,44 @@ static void buffer_work_cb(struct work_struct *work)
msg_context->u.bulk.mmal_flags,
msg_context->u.bulk.dts,
msg_context->u.bulk.pts);
+}

+/* workqueue scheduled callback to handle receiving buffers
+ *
+ * VCHI will allow up to 4 bulk receives to be scheduled before blocking.
+ * If we block in the service_callback context then we can't process the
+ * VCHI_CALLBACK_BULK_RECEIVED message that would otherwise allow the blocked
+ * vchi_bulk_queue_receive() call to complete.
+ */
+static void buffer_to_host_work_cb(struct work_struct *work)
+{
+   struct mmal_msg_context *msg_context =
+   container_of(work, struct mmal_msg_context,
+u.bulk.buffer_to_host_work);
+   struct vchiq_mmal_instance *instance = msg_context->instance;
+   unsigned long len = msg_context->u.bulk.buffer_used;
+   int ret;
+
+   if (!len)
+   /* Dummy receive to ensure the buffers remain in order */
+   len = 8;
+   /* queue the bulk submission */
+   vchi_service_use(instance->handle);
+   ret = vchi_bulk_queue_receive(instance->handle,
+ msg_context->u.bulk.buffer->buffer,
+ /* Actual receive needs to be a multiple
+  * of 4 bytes
+  */
+ (len + 3) & ~3,
+ VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE |
+ VCHI_FLAGS_BLOCK_UNTIL_QUEUED,
+ msg_context);
+
+   vchi_service_release(instance->handle);
+
+   if (ret != 0)
+   pr_err("%s: ctx: %p, vchi_bulk_queue_receive failed %d\n",
+  __func__, msg_context, ret);
 }

 /* enqueue a bulk receive for a given message context */
@@ -257,7 +299,6 @@ static int bulk_receive(struct vchiq_mmal_instance 
*instance,
struct mmal_msg_context *msg_context)
 {
unsigned long rd_len;
-   int ret;

rd_len = msg->u.buffer_from_host.buffer_header.length;

@@ -293,45 +334,10 @@ static int bulk_receive(struct vchiq_mmal_instance 
*instance,
msg_context->u.bulk.dts = msg->u.buffer_from_host.buffer_header.dts;
msg_context->u.bulk.pts = msg->u.buffer_from_host.buffer_header.pts;

-   /* queue the bulk submission */
-   vchi_service_use(instance->handle);
-   ret = vchi_bulk_queue_receive(instance->handle,
- msg_context->u.bulk.buffer->buffer,
- /* Actual receive needs to be a multiple
-  * of 4 bytes
-  */
- (rd_len + 3) & ~3,
- VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE |
- VCHI_FLAGS_BLOCK_UNTIL_QUEUED,
- msg_context);
-
-   vchi_service_release(instance->handle);
+   queue_wo

[PATCH 10/31] staging: bcm2835-camera: Reduce length of enum names

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

We have numerous lines over 80 chars, or oddly split. Many
of these are due to using long enum names such as
MMAL_COMPONENT_CAMERA.
Reduce the length of these enum names.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  | 156 +++--
 .../vc04_services/bcm2835-camera/bcm2835-camera.h  |  20 +--
 .../vc04_services/bcm2835-camera/controls.c|  47 +++
 3 files changed, 111 insertions(+), 112 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 814deee..23f7754 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -80,7 +80,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_I420,
.depth = 12,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 1,
.remove_padding = 1,
}, {
@@ -89,7 +89,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_YUYV,
.depth = 16,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 2,
.remove_padding = 0,
}, {
@@ -98,7 +98,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_RGB24,
.depth = 24,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 3,
.remove_padding = 0,
}, {
@@ -107,7 +107,7 @@ static struct mmal_fmt formats[] = {
.flags = V4L2_FMT_FLAG_COMPRESSED,
.mmal = MMAL_ENCODING_JPEG,
.depth = 8,
-   .mmal_component = MMAL_COMPONENT_IMAGE_ENCODE,
+   .mmal_component = COMP_IMAGE_ENCODE,
.ybbp = 0,
.remove_padding = 0,
}, {
@@ -116,7 +116,7 @@ static struct mmal_fmt formats[] = {
.flags = V4L2_FMT_FLAG_COMPRESSED,
.mmal = MMAL_ENCODING_H264,
.depth = 8,
-   .mmal_component = MMAL_COMPONENT_VIDEO_ENCODE,
+   .mmal_component = COMP_VIDEO_ENCODE,
.ybbp = 0,
.remove_padding = 0,
}, {
@@ -125,7 +125,7 @@ static struct mmal_fmt formats[] = {
.flags = V4L2_FMT_FLAG_COMPRESSED,
.mmal = MMAL_ENCODING_MJPEG,
.depth = 8,
-   .mmal_component = MMAL_COMPONENT_VIDEO_ENCODE,
+   .mmal_component = COMP_VIDEO_ENCODE,
.ybbp = 0,
.remove_padding = 0,
}, {
@@ -134,7 +134,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_YVYU,
.depth = 16,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 2,
.remove_padding = 0,
}, {
@@ -143,7 +143,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_VYUY,
.depth = 16,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 2,
.remove_padding = 0,
}, {
@@ -152,7 +152,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_UYVY,
.depth = 16,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 2,
.remove_padding = 0,
}, {
@@ -161,7 +161,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_NV12,
.depth = 12,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 1,
.remove_padding = 1,
}, {
@@ -170,7 +170,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_BGR24,
.depth = 24,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 3,
.remove_padding = 0,
}, {
@@ -179,7 +179,7 @@ static struct mmal_fmt formats[] = {
.flags = 0,
.mmal = MMAL_ENCODING_YV12,
.depth = 12,
-   .mmal_component = MMAL_COMPONENT_CAMERA,
+   .mmal_component = COMP_CAMERA,
.ybbp = 1,
.remove_padding = 1,
}, {
@@ -188,7 +188,7 @@ static struct

[PATCH 12/31] staging: bcm2835-camera: Fix brace style issues.

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix mismatched or missing brace issues flagged by checkpatch.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 3 ++-
 drivers/staging/vc04_services/bcm2835-camera/controls.c   | 3 ++-
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index bde3548..c1f6141 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -553,10 +553,11 @@ static int start_streaming(struct vb2_queue *vq, unsigned 
int count)

/* Flag to indicate just to rely on kernel timestamps */
dev->capture.vc_start_timestamp = -1;
-   } else
+   } else {
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
 "Start time %lld size %d\n",
 dev->capture.vc_start_timestamp, parameter_size);
+   }

dev->capture.kernel_start_ts = ktime_get();
dev->capture.last_timestamp = 0;
diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index b3d7029..1a7588d 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -407,8 +407,9 @@ static int ctrl_set_metering_mode(struct bm2835_mmal_dev 
*dev,
return vchiq_mmal_port_parameter_set(dev->instance, control,
 mmal_ctrl->mmal_id,
 &u32_value, sizeof(u32_value));
-   } else
+   } else {
return 0;
+   }
 }

 static int ctrl_set_flicker_avoidance(struct bm2835_mmal_dev *dev,
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 5175e2c..73cb295 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -1262,9 +1262,10 @@ static int port_parameter_get(struct vchiq_mmal_instance 
*instance,
memcpy(value, &rmsg->u.port_parameter_get_reply.value,
   *value_size);
*value_size = rmsg->u.port_parameter_get_reply.size;
-   } else
+   } else {
memcpy(value, &rmsg->u.port_parameter_get_reply.value,
   rmsg->u.port_parameter_get_reply.size);
+   }

pr_debug("%s:result:%d component:0x%x port:%d parameter:%d\n", __func__,
 ret, port->component->handle, port->handle, parameter_id);
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 18/31] staging: bcm2835-camera: Set sequence number correctly

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Set the sequence number in vb2_v4l2_buffer mainly so the
latest v4l2-ctl reports the frame rate correctly.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 4 
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index f2e951c..9967df9 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -398,6 +398,7 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
}
}
dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;
+   buf->vb.sequence = dev->capture.sequence++;

vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME)
@@ -525,6 +526,9 @@ static int start_streaming(struct vb2_queue *vq, unsigned 
int count)
/* enable frame capture */
dev->capture.frame_count = 1;

+   /* reset sequence number */
+   dev->capture.sequence = 0;
+
/* if the preview is not already running, wait for a few frames for AGC
 * to settle down.
 */
diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
index bbfe8fe..c821513 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -93,6 +93,8 @@ struct bm2835_mmal_dev {
ktime_t kernel_start_ts;
/* Timestamp of last frame */
u64 last_timestamp;
+   /* Sequence number of last buffer */
+   u32 sequence;

struct vchiq_mmal_port  *port; /* port being used for capture */
/* camera port being used for capture */
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 03/31] staging: bcm2835-camera: Replace spinlock protecting context_map with mutex

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

The commit "staging: bcm2835-camera: Replace open-coded idr with a struct idr."
replaced an internal implementation of an idr with the standard functions
and a spinlock. idr_alloc(GFP_KERNEL) can sleep whilst calling kmem_cache_alloc
to allocate the new node, but this is not valid whilst in an atomic context
due to the spinlock.

There is no need for this to be a spinlock as a standard mutex is
sufficient.

Fixes: 950fd867c635 ("staging: bcm2835-camera: Replace open-coded idr with a 
struct idr.")
Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 13 +++--
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index 16af735..f1bb900 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -161,7 +161,8 @@ struct vchiq_mmal_instance {
void *bulk_scratch;

struct idr context_map;
-   spinlock_t context_map_lock;
+   /* protect accesses to context_map */
+   struct mutex context_map_lock;

/* component to use next */
int component_idx;
@@ -184,10 +185,10 @@ get_msg_context(struct vchiq_mmal_instance *instance)
 * that when we service the VCHI reply, we can look up what
 * message is being replied to.
 */
-   spin_lock(&instance->context_map_lock);
+   mutex_lock(&instance->context_map_lock);
handle = idr_alloc(&instance->context_map, msg_context,
   0, 0, GFP_KERNEL);
-   spin_unlock(&instance->context_map_lock);
+   mutex_unlock(&instance->context_map_lock);

if (handle < 0) {
kfree(msg_context);
@@ -211,9 +212,9 @@ release_msg_context(struct mmal_msg_context *msg_context)
 {
struct vchiq_mmal_instance *instance = msg_context->instance;

-   spin_lock(&instance->context_map_lock);
+   mutex_lock(&instance->context_map_lock);
idr_remove(&instance->context_map, msg_context->handle);
-   spin_unlock(&instance->context_map_lock);
+   mutex_unlock(&instance->context_map_lock);
kfree(msg_context);
 }

@@ -1849,7 +1850,7 @@ int vchiq_mmal_init(struct vchiq_mmal_instance 
**out_instance)

instance->bulk_scratch = vmalloc(PAGE_SIZE);

-   spin_lock_init(&instance->context_map_lock);
+   mutex_init(&instance->context_map_lock);
idr_init_base(&instance->context_map, 1);

params.callback_param = instance;
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 00/31] staging: bcm2835-camera: Improvements

2019-06-27 Thread Stefan Wahren
This is an attempt to help Dave Stevenson to get all the fixes and
improvements of the bcm2835-camera driver into mainline.

Mostly i only polished the commit logs for upstream.

The series based on the latest bugfix V2 of staging: bcm2835-camera: Restore
return behavior of ctrl_set_bitrate().

Dave Stevenson (31):
  staging: bcm2835-camera: Ensure H264 header bytes get a sensible
timestamp
  staging: bcm2835-camera: Check the error for REPEAT_SEQ_HEADER
  staging: bcm2835-camera: Replace spinlock protecting context_map with
mutex
  staging: bcm2835-camera: Do not bulk receive from service thread
  staging: bcm2835-camera: Correctly denote key frames in encoded data
  staging: bcm2835-camera: Return early on errors
  staging: bcm2835-camera: Remove dead email addresses
  staging: bcm2835-camera: Fix comment style violations.
  staging: bcm2835-camera: Fix spacing around operators
  staging: bcm2835-camera: Reduce length of enum names
  staging: bcm2835-camera: Fix multiple line dereference errors
  staging: bcm2835-camera: Fix brace style issues.
  staging: bcm2835-camera: Fix missing lines between items
  staging: bcm2835-camera: Fix open parenthesis alignment
  staging: bcm2835-camera: Ensure all buffers are returned on disable
  staging: bcm2835-camera: Remove check of the number of buffers
supplied
  staging: bcm2835-camera: Handle empty EOS buffers whilst streaming
  staging: bcm2835-camera: Set sequence number correctly
  staging: bcm2835-camera: Ensure timestamps never go backwards.
  staging: bcm2835-camera: Add multiple inclusion protection to headers
  staging: bcm2835-camera: Unify header inclusion defines
  staging: bcm2835-camera: Fix multiple assignments should be avoided
  staging: bcm2835-camera: Fix up mmal-parameters.h
  staging: bcm2835-camera: Use enums for max value in controls
  staging: bcm2835-camera: Correct V4L2_CID_COLORFX_CBCR behaviour
  staging: bcm2835-camera: Remove/amend some obsolete comments
  staging: mmal-vchiq: Avoid use of bool in structures
  staging: bcm2835-camera: Fix stride on RGB3/BGR3 formats
  staging: bcm2835-camera: Add sanity checks for queue_setup/CREATE_BUFS
  staging: bcm2835-camera: Set the field value within ach buffer
  staging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit

 .../vc04_services/bcm2835-camera/bcm2835-camera.c  | 378 -
 .../vc04_services/bcm2835-camera/bcm2835-camera.h  |  34 +-
 .../vc04_services/bcm2835-camera/controls.c| 184 +-
 .../vc04_services/bcm2835-camera/mmal-common.h |  12 +-
 .../vc04_services/bcm2835-camera/mmal-encodings.h  |   9 +-
 .../vc04_services/bcm2835-camera/mmal-msg-common.h |   9 +-
 .../vc04_services/bcm2835-camera/mmal-msg-format.h | 104 +++---
 .../vc04_services/bcm2835-camera/mmal-msg-port.h   | 133 
 .../vc04_services/bcm2835-camera/mmal-msg.h| 150 
 .../vc04_services/bcm2835-camera/mmal-parameters.h | 286 +---
 .../vc04_services/bcm2835-camera/mmal-vchiq.c  | 159 +
 .../vc04_services/bcm2835-camera/mmal-vchiq.h  |  22 +-
 12 files changed, 826 insertions(+), 654 deletions(-)

--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 08/31] staging: bcm2835-camera: Fix comment style violations.

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fix comment style violations in the header files.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/mmal-msg-format.h |  95 ---
 .../vc04_services/bcm2835-camera/mmal-msg-port.h   | 124 +--
 .../vc04_services/bcm2835-camera/mmal-msg.h| 135 +++--
 3 files changed, 185 insertions(+), 169 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h
index 5ea1a1b..a118efd 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h
@@ -19,22 +19,23 @@
 /* MMAL_ES_FORMAT_T */

 struct mmal_audio_format {
-   u32 channels;   /**< Number of audio channels */
-   u32 sample_rate;/**< Sample rate */
+   u32 channels;   /* Number of audio channels */
+   u32 sample_rate;/* Sample rate */

-   u32 bits_per_sample;/**< Bits per sample */
-   u32 block_align;/**< Size of a block of data */
+   u32 bits_per_sample;/* Bits per sample */
+   u32 block_align;/* Size of a block of data */
 };

 struct mmal_video_format {
-   u32 width;/**< Width of frame in pixels */
-   u32 height;   /**< Height of frame in rows of pixels */
-   struct mmal_rect crop; /**< Visible region of the frame */
-   struct mmal_rational frame_rate;   /**< Frame rate */
-   struct mmal_rational par;  /**< Pixel aspect ratio */
-
-   /* FourCC specifying the color space of the video stream. See the
-* \ref MmalColorSpace "pre-defined color spaces" for some examples.
+   u32 width;  /* Width of frame in pixels */
+   u32 height; /* Height of frame in rows of pixels */
+   struct mmal_rect crop;  /* Visible region of the frame */
+   struct mmal_rational frame_rate;/* Frame rate */
+   struct mmal_rational par;   /* Pixel aspect ratio */
+
+   /*
+* FourCC specifying the color space of the video stream. See the
+* MmalColorSpace "pre-defined color spaces" for some examples.
 */
u32 color_space;
 };
@@ -50,48 +51,56 @@ union mmal_es_specific_format {
struct mmal_subpicture_format subpicture;
 };

-/** Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
+/* Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
 struct mmal_es_format_local {
-   u32 type;  /* enum mmal_es_type */
-
-   u32 encoding;  /* FourCC specifying encoding of the elementary stream.*/
-   u32 encoding_variant; /* FourCC specifying the specific
-  * encoding variant of the elementary
-  * stream.
-  */
-
-   union mmal_es_specific_format *es;  /* Type specific
-* information for the
-* elementary stream
-*/
-
-   u32 bitrate;/**< Bitrate in bits per second */
-   u32 flags; /**< Flags describing properties of the elementary stream. */
-
-   u32 extradata_size;   /**< Size of the codec specific data */
-   u8  *extradata;   /**< Codec specific data */
+   u32 type;   /* enum mmal_es_type */
+
+   u32 encoding;   /* FourCC specifying encoding of the elementary
+* stream.
+*/
+   u32 encoding_variant;   /* FourCC specifying the specific
+* encoding variant of the elementary
+* stream.
+*/
+
+   union mmal_es_specific_format *es;  /* Type specific
+* information for the
+* elementary stream
+*/
+
+   u32 bitrate;/* Bitrate in bits per second */
+   u32 flags;  /* Flags describing properties of the elementary
+* stream.
+*/
+
+   u32 extradata_size; /* Size of the codec specific data */
+   u8  *extradata; /* Codec specific data */
 };

-/** Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */
+/* Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */
 struct mmal_es_format {
-   u32 type;  /* enum mmal_es_type */
+   u32 type;   /* enum mmal_es_type */

-   u32 encoding;  /* FourCC specifying encoding of the elementary stream.*/
-   u32 encoding_variant; /* FourCC specifying the specific
-  * encoding variant of the elementary
-  * stream.
-  */
+ 

[PATCH 26/31] staging: bcm2835-camera: Remove/amend some obsolete comments

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Remove a todo which has been done.
Remove a template line that was redundant.
Make a comment clearer as to the non-obvious meaning of a field.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/controls.c | 11 +--
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index b8aaedd..848b14a 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -971,10 +971,6 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
ctrl_set_value,
false
},
-/* {
- * 0, MMAL_CONTROL_TYPE_CLUSTER, 3, 1, 0, NULL, 0, NULL
- * },
- */
{
V4L2_CID_EXPOSURE_AUTO, MMAL_CONTROL_TYPE_STD_MENU,
~0x03, V4L2_EXPOSURE_APERTURE_PRIORITY, V4L2_EXPOSURE_AUTO, 0,
@@ -982,11 +978,6 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
ctrl_set_exposure,
false
},
-/* todo this needs mixing in with set exposure
- * {
- * V4L2_CID_SCENE_MODE, MMAL_CONTROL_TYPE_STD_MENU,
- * },
- */
{
V4L2_CID_EXPOSURE_ABSOLUTE, MMAL_CONTROL_TYPE_STD,
/* Units of 100usecs */
@@ -1152,7 +1143,7 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
},
{
V4L2_CID_SCENE_MODE, MMAL_CONTROL_TYPE_STD_MENU,
-   -1, /* Min is computed at runtime */
+   -1, /* Min (mask) is computed at runtime */
V4L2_SCENE_MODE_TEXT,
V4L2_SCENE_MODE_NONE, 1, NULL,
MMAL_PARAMETER_PROFILE,
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 20/31] staging: bcm2835-camera: Add multiple inclusion protection to headers

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

mmal-common.h and mmal-msg.h didn't have the normal
ifndef FOO / define FOO / endif protection to stop it being
included multiple times. Add it.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/mmal-common.h | 3 +++
 drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h| 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
index 858bdcd..6f56c51 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-common.h
@@ -13,6 +13,8 @@
  * MMAL structures
  *
  */
+#ifndef MMAL_COMMON_H
+#define MMAL_COMMON_H

 #define MMAL_FOURCC(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24))
 #define MMAL_MAGIC MMAL_FOURCC('m', 'm', 'a', 'l')
@@ -56,3 +58,4 @@ struct mmal_colourfx {
u32 u;
u32 v;
 };
+#endif
diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h
index 8e0aee8..43cc593 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h
@@ -23,6 +23,8 @@
  * implementation uses fixed size types and not the enums (though the
  * comments have the actual enum type
  */
+#ifndef MMAL_MSG_H
+#define MMAL_MSG_H

 #define VC_MMAL_VER 15
 #define VC_MMAL_MIN_VER 10
@@ -401,3 +403,4 @@ struct mmal_msg {
u8 payload[MMAL_MSG_MAX_PAYLOAD];
} u;
 };
+#endif
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 22/31] staging: bcm2835-camera: Fix multiple assignments should be avoided

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Clear checkpatch complaints of "multiple assignments should be avoided"

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 6205793..bef0052 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -1049,11 +1049,12 @@ static int mmal_setup_components(struct bm2835_mmal_dev 
*dev,
/* Make a further decision on port based on resolution */
if (f->fmt.pix.width <= max_video_width &&
f->fmt.pix.height <= max_video_height)
-   camera_port = port =
+   camera_port =

&dev->component[COMP_CAMERA]->output[CAM_PORT_VIDEO];
else
-   camera_port = port =
+   camera_port =

&dev->component[COMP_CAMERA]->output[CAM_PORT_CAPTURE];
+   port = camera_port;
break;
case COMP_IMAGE_ENCODE:
encode_component = dev->component[COMP_IMAGE_ENCODE];
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 23/31] staging: bcm2835-camera: Fix up mmal-parameters.h

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fixes up all the checkpatch error "line over 80 characters" in
mmal-parameters.h

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/mmal-parameters.h | 261 +
 1 file changed, 159 insertions(+), 102 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
index da21ec5..80a9912 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
@@ -37,134 +37,190 @@

 /* Common parameters */
 enum mmal_parameter_common_type {
-   MMAL_PARAMETER_UNUSED  /**< Never a valid parameter ID */
-   = MMAL_PARAMETER_GROUP_COMMON,
-   MMAL_PARAMETER_SUPPORTED_ENCODINGS, /**< MMAL_PARAMETER_ENCODING_T */
-   MMAL_PARAMETER_URI, /**< MMAL_PARAMETER_URI_T */
-
-   /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */
+   /**< Never a valid parameter ID */
+   MMAL_PARAMETER_UNUSED = MMAL_PARAMETER_GROUP_COMMON,
+
+   /**< MMAL_PARAMETER_ENCODING_T */
+   MMAL_PARAMETER_SUPPORTED_ENCODINGS,
+   /**< MMAL_PARAMETER_URI_T */
+   MMAL_PARAMETER_URI,
+   /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */
MMAL_PARAMETER_CHANGE_EVENT_REQUEST,
-
-   /** MMAL_PARAMETER_BOOLEAN_T */
+   /** MMAL_PARAMETER_BOOLEAN_T */
MMAL_PARAMETER_ZERO_COPY,
-
-   /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */
+   /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */
MMAL_PARAMETER_BUFFER_REQUIREMENTS,
-
-   MMAL_PARAMETER_STATISTICS, /**< MMAL_PARAMETER_STATISTICS_T */
-   MMAL_PARAMETER_CORE_STATISTICS, /**< MMAL_PARAMETER_CORE_STATISTICS_T */
-   MMAL_PARAMETER_MEM_USAGE, /**< MMAL_PARAMETER_MEM_USAGE_T */
-   MMAL_PARAMETER_BUFFER_FLAG_FILTER, /**< MMAL_PARAMETER_UINT32_T */
-   MMAL_PARAMETER_SEEK, /**< MMAL_PARAMETER_SEEK_T */
-   MMAL_PARAMETER_POWERMON_ENABLE, /**< MMAL_PARAMETER_BOOLEAN_T */
-   MMAL_PARAMETER_LOGGING, /**< MMAL_PARAMETER_LOGGING_T */
-   MMAL_PARAMETER_SYSTEM_TIME, /**< MMAL_PARAMETER_UINT64_T */
-   MMAL_PARAMETER_NO_IMAGE_PADDING  /**< MMAL_PARAMETER_BOOLEAN_T */
+   /**< MMAL_PARAMETER_STATISTICS_T */
+   MMAL_PARAMETER_STATISTICS,
+   /**< MMAL_PARAMETER_CORE_STATISTICS_T */
+   MMAL_PARAMETER_CORE_STATISTICS,
+   /**< MMAL_PARAMETER_MEM_USAGE_T */
+   MMAL_PARAMETER_MEM_USAGE,
+   /**< MMAL_PARAMETER_UINT32_T */
+   MMAL_PARAMETER_BUFFER_FLAG_FILTER,
+   /**< MMAL_PARAMETER_SEEK_T */
+   MMAL_PARAMETER_SEEK,
+   /**< MMAL_PARAMETER_BOOLEAN_T */
+   MMAL_PARAMETER_POWERMON_ENABLE,
+   /**< MMAL_PARAMETER_LOGGING_T */
+   MMAL_PARAMETER_LOGGING,
+   /**< MMAL_PARAMETER_UINT64_T */
+   MMAL_PARAMETER_SYSTEM_TIME,
+   /**< MMAL_PARAMETER_BOOLEAN_T */
+   MMAL_PARAMETER_NO_IMAGE_PADDING,
 };

 /* camera parameters */

 enum mmal_parameter_camera_type {
/* 0 */
-   /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */
-   MMAL_PARAMETER_THUMBNAIL_CONFIGURATION
-   = MMAL_PARAMETER_GROUP_CAMERA,
-   MMAL_PARAMETER_CAPTURE_QUALITY, /**< Unused? */
-   MMAL_PARAMETER_ROTATION, /**< @ref MMAL_PARAMETER_INT32_T */
-   MMAL_PARAMETER_EXIF_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
-   MMAL_PARAMETER_EXIF, /**< @ref MMAL_PARAMETER_EXIF_T */
-   MMAL_PARAMETER_AWB_MODE, /**< @ref MMAL_PARAM_AWBMODE_T */
-   MMAL_PARAMETER_IMAGE_EFFECT, /**< @ref MMAL_PARAMETER_IMAGEFX_T */
-   MMAL_PARAMETER_COLOUR_EFFECT, /**< @ref MMAL_PARAMETER_COLOURFX_T */
-   MMAL_PARAMETER_FLICKER_AVOID, /**< @ref MMAL_PARAMETER_FLICKERAVOID_T */
-   MMAL_PARAMETER_FLASH, /**< @ref MMAL_PARAMETER_FLASH_T */
-   MMAL_PARAMETER_REDEYE, /**< @ref MMAL_PARAMETER_REDEYE_T */
-   MMAL_PARAMETER_FOCUS, /**< @ref MMAL_PARAMETER_FOCUS_T */
-   MMAL_PARAMETER_FOCAL_LENGTHS, /**< Unused? */
-   MMAL_PARAMETER_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */
-   MMAL_PARAMETER_ZOOM, /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */
-   MMAL_PARAMETER_MIRROR, /**< @ref MMAL_PARAMETER_MIRROR_T */
+   /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */
+   MMAL_PARAMETER_THUMBNAIL_CONFIGURATION =
+   MMAL_PARAMETER_GROUP_CAMERA,
+   /**< Unused? */
+   MMAL_PARAMETER_CAPTURE_QUALITY,
+   /**< @ref MMAL_PARAMETER_INT32_T */
+   MMAL_PARAMETER_ROTATION,
+   /**< @ref MMAL_PARAMETER_BOOLEAN_T */
+   MMAL_PARAMETER_EXIF_DISABLE,
+   /**< @ref MMAL_PARAMETER_EXIF_T */
+   MMAL_PARAMETER_EXIF,
+   /**< @ref MMAL_PARAM_AWBMODE_T */
+   MMAL_PARAMETER_AWB_MODE,
+   /**< @ref MMAL_PARAMETER_IMAGEFX_T */
+   MMAL_PARAMETER_IMAGE_EFFECT,
+   /**< @r

[PATCH 25/31] staging: bcm2835-camera: Correct V4L2_CID_COLORFX_CBCR behaviour

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

With V4L2_CID_COLORFX_CBCR calling ctrl_set_colfx it was incorrectly
assigning the colour values to the enable field of dev->colourfx
instead of the u and v fields.

Correct the assignments.

Reported as a Coverity issue
Detected by CoverityScan CID#1419711 ("Unused value")

Reported-by: Colin Ian King 
Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/controls.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index 038b9b9..b8aaedd 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -574,8 +574,8 @@ static int ctrl_set_colfx(struct bm2835_mmal_dev *dev,

control = &dev->component[COMP_CAMERA]->control;

-   dev->colourfx.enable = (ctrl->val & 0xff00) >> 8;
-   dev->colourfx.enable = ctrl->val & 0xff;
+   dev->colourfx.u = (ctrl->val & 0xff00) >> 8;
+   dev->colourfx.v = ctrl->val & 0xff;

ret = vchiq_mmal_port_parameter_set(dev->instance, control,
MMAL_PARAMETER_COLOUR_EFFECT,
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 24/31] staging: bcm2835-camera: Use enums for max value in controls

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Controls of type MMAL_CONTROL_TYPE_STD_MENU call v4l2_ctrl_new_std_menu
with a max value and a mask. The max value is one of the defined
values for the control, however in the config array there are several
entries where raw numbers have been used instead. Replace these
with the appropriate enum.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/controls.c| 37 --
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index bc2f3f4..038b9b9 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -58,19 +58,6 @@ static const u32 iso_values[] = {
0, 100, 200, 400, 800,
 };

-static const s64 mains_freq_qmenu[] = {
-   V4L2_CID_POWER_LINE_FREQUENCY_DISABLED,
-   V4L2_CID_POWER_LINE_FREQUENCY_50HZ,
-   V4L2_CID_POWER_LINE_FREQUENCY_60HZ,
-   V4L2_CID_POWER_LINE_FREQUENCY_AUTO
-};
-
-/* Supported video encode modes */
-static const s64 bitrate_mode_qmenu[] = {
-   (s64)V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
-   (s64)V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
-};
-
 enum bm2835_mmal_ctrl_type {
MMAL_CONTROL_TYPE_STD,
MMAL_CONTROL_TYPE_STD_MENU,
@@ -972,8 +959,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
},
{
V4L2_CID_ISO_SENSITIVITY_AUTO, MMAL_CONTROL_TYPE_STD_MENU,
-   0, 1, V4L2_ISO_SENSITIVITY_AUTO, 1, NULL,
-   MMAL_PARAMETER_ISO,
+   0, V4L2_ISO_SENSITIVITY_AUTO, V4L2_ISO_SENSITIVITY_AUTO, 1,
+   NULL, MMAL_PARAMETER_ISO,
ctrl_set_iso,
false
},
@@ -990,8 +977,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
  */
{
V4L2_CID_EXPOSURE_AUTO, MMAL_CONTROL_TYPE_STD_MENU,
-   ~0x03, 3, V4L2_EXPOSURE_AUTO, 0, NULL,
-   MMAL_PARAMETER_EXPOSURE_MODE,
+   ~0x03, V4L2_EXPOSURE_APERTURE_PRIORITY, V4L2_EXPOSURE_AUTO, 0,
+   NULL, MMAL_PARAMETER_EXPOSURE_MODE,
ctrl_set_exposure,
false
},
@@ -1027,7 +1014,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
{
V4L2_CID_EXPOSURE_METERING,
MMAL_CONTROL_TYPE_STD_MENU,
-   ~0x7, 2, V4L2_EXPOSURE_METERING_AVERAGE, 0, NULL,
+   ~0x7, V4L2_EXPOSURE_METERING_SPOT,
+   V4L2_EXPOSURE_METERING_AVERAGE, 0, NULL,
MMAL_PARAMETER_EXP_METERING_MODE,
ctrl_set_metering_mode,
false
@@ -1035,7 +1023,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
{
V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE,
MMAL_CONTROL_TYPE_STD_MENU,
-   ~0x3ff, 9, V4L2_WHITE_BALANCE_AUTO, 0, NULL,
+   ~0x3ff, V4L2_WHITE_BALANCE_SHADE, V4L2_WHITE_BALANCE_AUTO, 0,
+   NULL,
MMAL_PARAMETER_AWB_MODE,
ctrl_set_awb_mode,
false
@@ -1056,7 +1045,7 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
},
{
V4L2_CID_COLORFX, MMAL_CONTROL_TYPE_STD_MENU,
-   0, 15, V4L2_COLORFX_NONE, 0, NULL,
+   0, V4L2_COLORFX_SET_CBCR, V4L2_COLORFX_NONE, 0, NULL,
MMAL_PARAMETER_IMAGE_EFFECT,
ctrl_set_image_effect,
false
@@ -1091,8 +1080,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
},
{
V4L2_CID_MPEG_VIDEO_BITRATE_MODE, MMAL_CONTROL_TYPE_STD_MENU,
-   0, ARRAY_SIZE(bitrate_mode_qmenu) - 1,
-   0, 0, bitrate_mode_qmenu,
+   0, V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
+   0, 0, NULL,
MMAL_PARAMETER_RATECONTROL,
ctrl_set_bitrate_mode,
false
@@ -1114,8 +1103,8 @@ static const struct bm2835_mmal_v4l2_ctrl 
v4l2_ctrls[V4L2_CTRL_COUNT] = {
},
{
V4L2_CID_POWER_LINE_FREQUENCY, MMAL_CONTROL_TYPE_STD_MENU,
-   0, ARRAY_SIZE(mains_freq_qmenu) - 1,
-   1, 1, mains_freq_qmenu,
+   0, V4L2_CID_POWER_LINE_FREQUENCY_AUTO,
+   1, 1, NULL,
MMAL_PARAMETER_FLICKER_AVOID,
ctrl_set_flicker_avoidance,
false
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 21/31] staging: bcm2835-camera: Unify header inclusion defines

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Most of the headers use ifndef FOO_H, whilst mmal-parameters.h
used ifndef __FOO_H.

Revise mmal-parameters.h to drop the underscores and make the
headers all consistent.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
index 6d21594..da21ec5 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
@@ -19,8 +19,8 @@
  * @{
  */

-#ifndef __MMAL_PARAMETERS_H
-#define __MMAL_PARAMETERS_H
+#ifndef MMAL_PARAMETERS_H
+#define MMAL_PARAMETERS_H

 /** Common parameter ID group, used with many types of component. */
 #define MMAL_PARAMETER_GROUP_COMMON(0 << 16)
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: kpc2000: fix brace issues in kpc2000_spi.c

2019-06-27 Thread Simon Sandström
Fixes issues found by checkpatch:

- "WARNING: braces {} are not necessary for single statement blocks"
- "WARNING: braces {} are not necessary for any arm of this statement"

Signed-off-by: Simon Sandström 
---
 drivers/staging/kpc2000/kpc2000_spi.c | 39 ++-
 1 file changed, 14 insertions(+), 25 deletions(-)

diff --git a/drivers/staging/kpc2000/kpc2000_spi.c 
b/drivers/staging/kpc2000/kpc2000_spi.c
index 98484fbb9d2e..76db8e8510df 100644
--- a/drivers/staging/kpc2000/kpc2000_spi.c
+++ b/drivers/staging/kpc2000/kpc2000_spi.c
@@ -164,9 +164,9 @@ kp_spi_read_reg(struct kp_spi_controller_state *cs, int idx)
u64 val;
 
addr += idx;
-   if ((idx == KP_SPI_REG_CONFIG) && (cs->conf_cache >= 0)) {
+   if ((idx == KP_SPI_REG_CONFIG) && (cs->conf_cache >= 0))
return cs->conf_cache;
-   }
+
val = readq(addr);
return val;
 }
@@ -188,11 +188,10 @@ kp_spi_wait_for_reg_bit(struct kp_spi_controller_state 
*cs, int idx, unsigned lo
timeout = jiffies + msecs_to_jiffies(1000);
while (!(kp_spi_read_reg(cs, idx) & bit)) {
if (time_after(jiffies, timeout)) {
-   if (!(kp_spi_read_reg(cs, idx) & bit)) {
+   if (!(kp_spi_read_reg(cs, idx) & bit))
return -ETIMEDOUT;
-   } else {
+   else
return 0;
-   }
}
cpu_relax();
}
@@ -215,9 +214,8 @@ kp_spi_txrx_pio(struct spi_device *spidev, struct 
spi_transfer *transfer)
for (i = 0 ; i < c ; i++) {
char val = *tx++;
 
-   if (kp_spi_wait_for_reg_bit(cs, KP_SPI_REG_STATUS, 
KP_SPI_REG_STATUS_TXS) < 0) {
+   if (kp_spi_wait_for_reg_bit(cs, KP_SPI_REG_STATUS, 
KP_SPI_REG_STATUS_TXS) < 0)
goto out;
-   }
 
kp_spi_write_reg(cs, KP_SPI_REG_TXDATA, val);
processed++;
@@ -229,9 +227,8 @@ kp_spi_txrx_pio(struct spi_device *spidev, struct 
spi_transfer *transfer)
 
kp_spi_write_reg(cs, KP_SPI_REG_TXDATA, 0x00);
 
-   if (kp_spi_wait_for_reg_bit(cs, KP_SPI_REG_STATUS, 
KP_SPI_REG_STATUS_RXS) < 0) {
+   if (kp_spi_wait_for_reg_bit(cs, KP_SPI_REG_STATUS, 
KP_SPI_REG_STATUS_RXS) < 0)
goto out;
-   }
 
test = kp_spi_read_reg(cs, KP_SPI_REG_RXDATA);
*rx++ = test;
@@ -261,9 +258,8 @@ kp_spi_setup(struct spi_device *spidev)
cs = spidev->controller_state;
if (!cs) {
cs = kzalloc(sizeof(*cs), GFP_KERNEL);
-   if (!cs) {
+   if (!cs)
return -ENOMEM;
-   }
cs->base = kpspi->base;
cs->conf_cache = -1;
spidev->controller_state = cs;
@@ -297,9 +293,8 @@ kp_spi_transfer_one_message(struct spi_master *master, 
struct spi_message *m)
cs = spidev->controller_state;
 
/* reject invalid messages and transfers */
-   if (list_empty(&m->transfers)) {
+   if (list_empty(&m->transfers))
return -EINVAL;
-   }
 
/* validate input */
list_for_each_entry(transfer, &m->transfers, transfer_list) {
@@ -353,17 +348,14 @@ kp_spi_transfer_one_message(struct spi_master *master, 
struct spi_message *m)
sc.reg = kp_spi_read_reg(cs, KP_SPI_REG_CONFIG);
 
/* ...direction */
-   if (transfer->tx_buf) {
+   if (transfer->tx_buf)
sc.bitfield.trm = KP_SPI_REG_CONFIG_TRM_TX;
-   }
-   else if (transfer->rx_buf) {
+   else if (transfer->rx_buf)
sc.bitfield.trm = KP_SPI_REG_CONFIG_TRM_RX;
-   }
 
/* ...word length */
-   if (transfer->bits_per_word) {
+   if (transfer->bits_per_word)
word_len = transfer->bits_per_word;
-   }
sc.bitfield.wl = word_len - 1;
 
/* ...chip select */
@@ -382,9 +374,8 @@ kp_spi_transfer_one_message(struct spi_master *master, 
struct spi_message *m)
}
}
 
-   if (transfer->delay_usecs) {
+   if (transfer->delay_usecs)
udelay(transfer->delay_usecs);
-   }
}
 
/* de-assert chip select to end the sequence */
@@ -406,9 +397,8 @@ kp_spi_transfer_one_message(struct spi_master *master, 
struct spi_message *m)
 kp_spi_cleanup(struct spi_device *spidev)
 {
struct kp_spi

Re: [PATCH 01/31] staging: bcm2835-camera: Ensure H264 header bytes get a sensible timestamp

2019-06-27 Thread Nicolas Dufresne
Hi Dave,

Le jeudi 27 juin 2019 à 20:55 +0200, Stefan Wahren a écrit :
> From: Dave Stevenson 
> 
> H264 header come from VC with 0 timestamps, which means they get a
> strange timestamp when processed with VC/kernel start times,
> particularly if used with the inline header option.
> Remember the last frame timestamp and use that if set, or otherwise
> use the kernel start time.

Normally H264 headers are considered to be part of the following frame.
Giving it the timestamp of the previous frame will likely confuse some
userspace and cause an off-by-one in timestamp. I understand this is a
workaround, but am wondering if this can be improved.

> 
> Link: https://github.com/raspberrypi/linux/issues/1836
> Signed-off-by: Dave Stevenson 
> ---
>  .../staging/vc04_services/bcm2835-camera/bcm2835-camera.c  | 14 
> --
>  .../staging/vc04_services/bcm2835-camera/bcm2835-camera.h  |  2 ++
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
> b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> index dce6e6d..0c04815 100644
> --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> @@ -359,7 +359,9 @@ static void buffer_cb(struct vchiq_mmal_instance 
> *instance,
>   }
>   } else {
>   if (dev->capture.frame_count) {
> - if (dev->capture.vc_start_timestamp != -1 && pts) {
> + if (dev->capture.vc_start_timestamp != -1) {
> + buf->vb.vb2_buf.timestamp = ktime_get_ns();
> + } else if (pts) {
>   ktime_t timestamp;
>   s64 runtime_us = pts -
>   dev->capture.vc_start_timestamp;
> @@ -372,8 +374,15 @@ static void buffer_cb(struct vchiq_mmal_instance 
> *instance,
>ktime_to_ns(timestamp));
>   buf->vb.vb2_buf.timestamp = 
> ktime_to_ns(timestamp);
>   } else {
> - buf->vb.vb2_buf.timestamp = ktime_get_ns();
> + if (dev->capture.last_timestamp) {
> + buf->vb.vb2_buf.timestamp =
> + dev->capture.last_timestamp;
> + } else {
> + buf->vb.vb2_buf.timestamp =
> + 
> ktime_to_ns(dev->capture.kernel_start_ts);
> + }
>   }
> + dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;
> 
>   vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
>   vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
> @@ -541,6 +550,7 @@ static int start_streaming(struct vb2_queue *vq, unsigned 
> int count)
>dev->capture.vc_start_timestamp, parameter_size);
> 
>   dev->capture.kernel_start_ts = ktime_get();
> + dev->capture.last_timestamp = 0;
> 
>   /* enable the camera port */
>   dev->capture.port->cb_ctx = dev;
> diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h 
> b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
> index 2b5679e..09273b0 100644
> --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
> +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
> @@ -90,6 +90,8 @@ struct bm2835_mmal_dev {
>   s64 vc_start_timestamp;
>   /* Kernel start timestamp for streaming */
>   ktime_t kernel_start_ts;
> + /* Timestamp of last frame */
> + u64 last_timestamp;
> 
>   struct vchiq_mmal_port  *port; /* port being used for capture */
>   /* camera port being used for capture */
> --
> 2.7.4
> 


signature.asc
Description: This is a digitally signed message part
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 19/31] staging: bcm2835-camera: Ensure timestamps never go backwards.

2019-06-27 Thread Nicolas Dufresne
Le jeudi 27 juin 2019 à 20:56 +0200, Stefan Wahren a écrit :
> From: Dave Stevenson 
> 
> There is an awkward situation with H264 header bytes. Currently
> they are returned with a PTS of 0 because they aren't associated
> with a timestamped frame to encode. These are handled by either
> returning the timestamp of the last buffer to have been received,
> or in the case of the first buffer the timestamp taken at
> start_streaming.
> This results in a race where the current frame may have started
> before we take the start time, which results in the first encoded
> frame having an earlier timestamp than the header bytes.
> 
> Ensure that we never return a negative delta to the user by checking
> against the previous timestamp.
> 
> Signed-off-by: Dave Stevenson 
> ---
>  drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
> b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> index 9967df9..6205793 100644
> --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
> @@ -387,6 +387,11 @@ static void buffer_cb(struct vchiq_mmal_instance 
> *instance,
>ktime_to_ns(dev->capture.kernel_start_ts),
>dev->capture.vc_start_timestamp, pts,
>ktime_to_ns(timestamp));
> + if (timestamp < dev->capture.last_timestamp) {
> + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
> +  "Negative delta - using last time\n");
> + timestamp = dev->capture.last_timestamp;
> + }

Instead of that, maybe you could request a minimum number of buffers,
and not let the header buffer go until you have a proper "following
timestamp" to give it. This way you don't need this hack, and you won't
have an off-by-one in timestamps.

>   buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp);
>   } else {
>   if (dev->capture.last_timestamp) {
> --
> 2.7.4
> 


signature.asc
Description: This is a digitally signed message part
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 31/31] staging: bcm2835-camera: Correct ctrl min/max/step/def to 64bit

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

The V4L2 control API was expanded to take 64 bit values in commit
0ba2aeb6dab (Apr 16 2014), but as this driver wasn't in the mainline
kernel at that point this was overlooked.

Update to use 64 bit values. This also fixes a couple of warnings
in 64 bit builds.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/controls.c | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c 
b/drivers/staging/vc04_services/bcm2835-camera/controls.c
index 848b14a..89786c2 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
@@ -78,10 +78,10 @@ struct bm2835_mmal_v4l2_ctrl {
/* control minimum value or
 * mask for MMAL_CONTROL_TYPE_STD_MENU
 */
-   s32 min;
-   s32 max; /* maximum value of control */
-   s32 def;  /* default value of control */
-   s32 step; /* step size of the control */
+   s64 min;
+   s64 max; /* maximum value of control */
+   s64 def;  /* default value of control */
+   u64 step; /* step size of the control */
const s64 *imenu; /* integer menu array */
u32 mmal_id; /* mmal parameter id */
bm2835_mmal_v4l2_ctrl_cb *setter;
@@ -1250,7 +1250,7 @@ int bm2835_mmal_init_controls(struct bm2835_mmal_dev *dev,

case MMAL_CONTROL_TYPE_STD_MENU:
{
-   int mask = ctrl->min;
+   u64 mask = ctrl->min;

if (ctrl->id == V4L2_CID_SCENE_MODE) {
/* Special handling to work out the mask
@@ -1260,11 +1260,11 @@ int bm2835_mmal_init_controls(struct bm2835_mmal_dev 
*dev,
 */
int i;

-   mask = 1 << V4L2_SCENE_MODE_NONE;
+   mask = BIT(V4L2_SCENE_MODE_NONE);
for (i = 0;
 i < ARRAY_SIZE(scene_configs);
 i++) {
-   mask |= 1 << 
scene_configs[i].v4l2_scene;
+   mask |= 
BIT(scene_configs[i].v4l2_scene);
}
mask = ~mask;
}
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 30/31] staging: bcm2835-camera: Set the field value within ach buffer

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fixes a v4l2-compliance failure
v4l2-test-buffers.cpp(415): g_field() == V4L2_FIELD_ANY

The driver only ever produces progresive frames, so field should
always be set to V4L2_FIELD_NONE.

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 705644c..78d5bca 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -420,6 +420,7 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
}
dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp;
buf->vb.sequence = dev->capture.sequence++;
+   buf->vb.field = V4L2_FIELD_NONE;

vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length);
if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME)
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 28/31] staging: bcm2835-camera: Fix stride on RGB3/BGR3 formats

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

RGB3/BGR3 end up being 3 bytes per pixel, which meant that
the alignment code ended up trying to align using bitmasking
with a mask of 96.
That doesn't work, so switch to an arithmetic alignment for
those formats.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c  | 26 +-
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index bef0052..256667b 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -978,13 +978,27 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void 
*priv,
  1, 0);
f->fmt.pix.bytesperline = f->fmt.pix.width * mfmt->ybbp;
if (!mfmt->remove_padding) {
-   int align_mask = ((32 * mfmt->depth) >> 3) - 1;
-   /* GPU isn't removing padding, so stride is aligned to 32 */
-   f->fmt.pix.bytesperline =
-   (f->fmt.pix.bytesperline + align_mask) & ~align_mask;
+   if (mfmt->depth == 24) {
+   /*
+* 24bpp is a pain as we can't use simple masking.
+* Min stride is width aligned to 16, times 24bpp.
+*/
+   f->fmt.pix.bytesperline =
+   ((f->fmt.pix.width + 15) & ~15) * 3;
+   } else {
+   /*
+* GPU isn't removing padding, so stride is aligned to
+* 32
+*/
+   int align_mask = ((32 * mfmt->depth) >> 3) - 1;
+
+   f->fmt.pix.bytesperline =
+   (f->fmt.pix.bytesperline + align_mask) &
+   ~align_mask;
+   }
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
-"Not removing padding, so bytes/line = %d, (align_mask 
%d)\n",
-f->fmt.pix.bytesperline, align_mask);
+"Not removing padding, so bytes/line = %d\n",
+f->fmt.pix.bytesperline);
}

/* Image buffer has to be padded to allow for alignment, even though
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 29/31] staging: bcm2835-camera: Add sanity checks for queue_setup/CREATE_BUFS

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fixes a v4l2-compliance failure when passed a buffer that is
too small.
queue_setup wasn't handling the case where !(*nplanes), as
used from CREATE_BUFS and requiring the driver to sanity
check the provided buffer parameters. It was assuming that
it was always being used in the REQBUFS case where it provides
the buffer properties.

Signed-off-by: Dave Stevenson 
---
 .../vc04_services/bcm2835-camera/bcm2835-camera.c| 16 
 1 file changed, 16 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c 
b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
index 256667b..705644c 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -236,6 +236,22 @@ static int queue_setup(struct vb2_queue *vq,
return -EINVAL;
}

+   /* Handle CREATE_BUFS situation - *nplanes != 0 */
+   if (*nplanes) {
+   if (*nplanes != 1 ||
+   sizes[0] < dev->capture.port->current_buffer.size) {
+   v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
+"%s: dev:%p Invalid buffer request from 
CREATE_BUFS, size %u < %u, nplanes %u != 1\n",
+__func__, dev, sizes[0],
+dev->capture.port->current_buffer.size,
+*nplanes);
+   return -EINVAL;
+   } else {
+   return 0;
+   }
+   }
+
+   /* Handle REQBUFS situation */
size = dev->capture.port->current_buffer.size;
if (size == 0) {
v4l2_err(&dev->v4l2_dev,
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 27/31] staging: mmal-vchiq: Avoid use of bool in structures

2019-06-27 Thread Stefan Wahren
From: Dave Stevenson 

Fixes up a checkpatch error "Avoid using bool structure members
because of possible alignment issues".

Signed-off-by: Dave Stevenson 
---
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 12 ++--
 drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
index d0f7b67..1c180ea 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
@@ -853,9 +853,9 @@ static int port_info_get(struct vchiq_mmal_instance 
*instance,
goto release_msg;

if (rmsg->u.port_info_get_reply.port.is_enabled == 0)
-   port->enabled = false;
+   port->enabled = 0;
else
-   port->enabled = true;
+   port->enabled = 1;

/* copy the values out of the message */
port->handle = rmsg->u.port_info_get_reply.port_handle;
@@ -1292,7 +1292,7 @@ static int port_disable(struct vchiq_mmal_instance 
*instance,
if (!port->enabled)
return 0;

-   port->enabled = false;
+   port->enabled = 0;

ret = port_action_port(instance, port,
   MMAL_MSG_PORT_ACTION_TYPE_DISABLE);
@@ -1344,7 +1344,7 @@ static int port_enable(struct vchiq_mmal_instance 
*instance,
if (ret)
goto done;

-   port->enabled = true;
+   port->enabled = 1;

if (port->buffer_cb) {
/* send buffer headers to videocore */
@@ -1511,7 +1511,7 @@ int vchiq_mmal_port_connect_tunnel(struct 
vchiq_mmal_instance *instance,
pr_err("failed disconnecting src port\n");
goto release_unlock;
}
-   src->connected->enabled = false;
+   src->connected->enabled = 0;
src->connected = NULL;
}

@@ -1758,7 +1758,7 @@ int vchiq_mmal_component_disable(struct 
vchiq_mmal_instance *instance,

ret = disable_component(instance, component);
if (ret == 0)
-   component->enabled = false;
+   component->enabled = 0;

mutex_unlock(&instance->vchiq_mutex);

diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h 
b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
index 1750ff0..f738e7f 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h
@@ -48,7 +48,7 @@ typedef void (*vchiq_mmal_buffer_cb)(
unsigned long length, u32 mmal_flags, s64 dts, s64 pts);

 struct vchiq_mmal_port {
-   bool enabled;
+   u32 enabled:1;
u32 handle;
u32 type; /* port type, cached to use on port info set */
u32 index; /* port index, cached to use on port info set */
@@ -82,7 +82,7 @@ struct vchiq_mmal_port {
 };

 struct vchiq_mmal_component {
-   bool enabled;
+   u32 enabled:1;
u32 handle;  /* VideoCore handle for component */
u32 inputs;  /* Number of input ports */
u32 outputs; /* Number of output ports */
--
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCHv2] x86/hyperv: Hold cpus_read_lock() on assigning reenlightenment vector

2019-06-27 Thread Thomas Gleixner
On Mon, 17 Jun 2019, Dmitry Safonov wrote:
> @@ -196,7 +196,16 @@ void set_hv_tscchange_cb(void (*cb)(void))
>   /* Make sure callback is registered before we write to MSRs */
>   wmb();
>  
> + /*
> +  * As reenlightenment vector is global, there is no difference which
> +  * CPU will register MSR, though it should be an online CPU.
> +  * hv_cpu_die() callback guarantees that on CPU teardown
> +  * another CPU will re-register MSR back.
> +  */
> + cpus_read_lock();
> + re_ctrl.target_vp = hv_vp_index[raw_smp_processor_id()];
>   wrmsrl(HV_X64_MSR_REENLIGHTENMENT_CONTROL, *((u64 *)&re_ctrl));
> + cpus_read_unlock();

Should work

>   wrmsrl(HV_X64_MSR_TSC_EMULATION_CONTROL, *((u64 *)&emu_ctrl));
>  }
>  EXPORT_SYMBOL_GPL(set_hv_tscchange_cb);
> @@ -239,6 +248,7 @@ static int hv_cpu_die(unsigned int cpu)
>  
>   rdmsrl(HV_X64_MSR_REENLIGHTENMENT_CONTROL, *((u64 *)&re_ctrl));
>   if (re_ctrl.target_vp == hv_vp_index[cpu]) {
> + lockdep_assert_cpus_held();

So you're not trusting the hotplug core code to hold the lock when it
brings a CPU down and invokes that callback? Come on

>   /* Reassign to some other online CPU */
>   new_cpu = cpumask_any_but(cpu_online_mask, cpu);

Thanks,

tglx
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v1] Adjust analogix chip driver location

2019-06-27 Thread Xin Ji
On Thu, Jun 27, 2019 at 07:57:05PM +0800, Laurent Pinchart wrote:
> Hello Xin Ji,
> 
> Thank you for the patch.
> 
> On Thu, Jun 27, 2019 at 11:29:47AM +, Xin Ji wrote:
> > Move analogix chip ANX78XX bridge driver into "analogix" directory.
> > 
> > Signed-off-by: Xin Ji 
> > ---
> >  drivers/gpu/drm/bridge/Kconfig   | 10 --
> >  drivers/gpu/drm/bridge/Makefile  |  3 +--
> >  drivers/gpu/drm/bridge/analogix/Kconfig  | 10 ++
> >  drivers/gpu/drm/bridge/analogix/Makefile |  2 ++
> >  drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c |  0
> >  drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h |  0
> >  6 files changed, 13 insertions(+), 12 deletions(-)
> >  rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c (100%)
> >  rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h (100%)
> > 
> > diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
> > index ee77746..862789b 100644
> > --- a/drivers/gpu/drm/bridge/Kconfig
> > +++ b/drivers/gpu/drm/bridge/Kconfig
> > @@ -16,16 +16,6 @@ config DRM_PANEL_BRIDGE
> >  menu "Display Interface Bridges"
> > depends on DRM && DRM_BRIDGE
> >  
> > -config DRM_ANALOGIX_ANX78XX
> > -   tristate "Analogix ANX78XX bridge"
> > -   select DRM_KMS_HELPER
> > -   select REGMAP_I2C
> > -   ---help---
> > - ANX78XX is an ultra-low Full-HD SlimPort transmitter
> > - designed for portable devices. The ANX78XX transforms
> > - the HDMI output of an application processor to MyDP
> > - or DisplayPort.
> > -
> >  config DRM_CDNS_DSI
> > tristate "Cadence DPI/DSI bridge"
> > select DRM_KMS_HELPER
> > diff --git a/drivers/gpu/drm/bridge/Makefile 
> > b/drivers/gpu/drm/bridge/Makefile
> > index 4934fcf..02cb4cd 100644
> > --- a/drivers/gpu/drm/bridge/Makefile
> > +++ b/drivers/gpu/drm/bridge/Makefile
> > @@ -1,5 +1,4 @@
> >  # SPDX-License-Identifier: GPL-2.0
> > -obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
> >  obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o
> >  obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o
> >  obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o
> > @@ -12,8 +11,8 @@ obj-$(CONFIG_DRM_SII9234) += sii9234.o
> >  obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o
> >  obj-$(CONFIG_DRM_TOSHIBA_TC358764) += tc358764.o
> >  obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o
> > -obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/
> >  obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
> >  obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o
> >  obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o
> >  obj-y += synopsys/
> > +obj-y += analogix/
> 
> Could you place that line just above the synopsys/ directory, to have
> them alphabetically sorted (this could also be done while applying) ?
> Apart from that the patch looks good to me, so
OK, I'll submit new patch, thanks!
> 
> Reviewed-by: Laurent Pinchart 
> 
> > diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig 
> > b/drivers/gpu/drm/bridge/analogix/Kconfig
> > index e930ff9..dfe84f5 100644
> > --- a/drivers/gpu/drm/bridge/analogix/Kconfig
> > +++ b/drivers/gpu/drm/bridge/analogix/Kconfig
> > @@ -1,4 +1,14 @@
> >  # SPDX-License-Identifier: GPL-2.0-only
> > +config DRM_ANALOGIX_ANX78XX
> > +   tristate "Analogix ANX78XX bridge"
> > +   select DRM_KMS_HELPER
> > +   select REGMAP_I2C
> > +   ---help---
> > + ANX78XX is an ultra-low Full-HD SlimPort transmitter
> > + designed for portable devices. The ANX78XX transforms
> > + the HDMI output of an application processor to MyDP
> > + or DisplayPort.
> > +
> >  config DRM_ANALOGIX_DP
> > tristate
> > depends on DRM
> > diff --git a/drivers/gpu/drm/bridge/analogix/Makefile 
> > b/drivers/gpu/drm/bridge/analogix/Makefile
> > index fdbf3fd..d4c54ac 100644
> > --- a/drivers/gpu/drm/bridge/analogix/Makefile
> > +++ b/drivers/gpu/drm/bridge/analogix/Makefile
> > @@ -1,3 +1,5 @@
> >  # SPDX-License-Identifier: GPL-2.0-only
> > +obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
> > +
> >  analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
> >  obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
> > diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c 
> > b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> > similarity index 100%
> > rename from drivers/gpu/drm/bridge/analogix-anx78xx.c
> > rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> > diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.h 
> > b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
> > similarity index 100%
> > rename from drivers/gpu/drm/bridge/analogix-anx78xx.h
> > rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
> 
> -- 
> Regards,
> 
> Laurent Pinchart
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 20/27] staging: rtl8723bs: remove unneeded memset

2019-06-27 Thread Fuqian Huang
rtw_zmalloc already zeroes the memory,
so memset is unneeded.

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8723bs/core/rtw_ap.c   | 2 --
 drivers/staging/rtl8723bs/core/rtw_mlme.c | 2 --
 2 files changed, 4 deletions(-)

diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c 
b/drivers/staging/rtl8723bs/core/rtw_ap.c
index bc0230672457..dc1da5626ce1 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -1504,8 +1504,6 @@ static int rtw_ap_set_key(
goto exit;
}
 
-   memset(psetkeyparm, 0, sizeof(struct setkey_parm));
-
psetkeyparm->keyid = (u8)keyid;
if (is_wep_enc(alg))
padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c 
b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 5f78f1eaa7aa..3586da79af5a 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -2229,7 +2229,6 @@ sint rtw_set_auth(struct adapter *adapter, struct 
security_priv *psecuritypriv)
goto exit;
}
 
-   memset(psetauthparm, 0, sizeof(struct setauth_parm));
psetauthparm->mode = (unsigned char)psecuritypriv->dot11AuthAlgrthm;
 
pcmd->cmdcode = _SetAuth_CMD_;
@@ -2262,7 +2261,6 @@ sint rtw_set_key(struct adapter *adapter, struct 
security_priv *psecuritypriv, s
res = _FAIL;
goto exit;
}
-   memset(psetkeyparm, 0, sizeof(struct setkey_parm));
 
if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) {
psetkeyparm->algorithm = (unsigned 
char)psecuritypriv->dot118021XGrpPrivacy;
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 19/27] staging: rtl8*: use zeroing allocator rather than allocator followed with memset 0

2019-06-27 Thread Fuqian Huang
Use zeroing allocator rather than allocator followed with memset 0.

Signed-off-by: Fuqian Huang 
---
 drivers/staging/rtl8188eu/os_dep/mlme_linux.c |  3 +--
 drivers/staging/rtl8712/rtl871x_io.c  |  4 +---
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c |  8 ++--
 drivers/staging/rtl8723bs/os_dep/ioctl_linux.c| 12 +++-
 4 files changed, 7 insertions(+), 20 deletions(-)

diff --git a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c 
b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
index 9db11b16cb93..250acb01d1a9 100644
--- a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
+++ b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
@@ -98,10 +98,9 @@ void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, 
u8 *sec_ie)
if (authmode == _WPA_IE_ID_) {
RT_TRACE(_module_mlme_osdep_c_, _drv_info_,
 ("rtw_report_sec_ie, authmode=%d\n", authmode));
-   buff = rtw_malloc(IW_CUSTOM_MAX);
+   buff = rtw_zmalloc(IW_CUSTOM_MAX);
if (!buff)
return;
-   memset(buff, 0, IW_CUSTOM_MAX);
p = buff;
p += sprintf(p, "ASSOCINFO(ReqIEs =");
len = sec_ie[1] + 2;
diff --git a/drivers/staging/rtl8712/rtl871x_io.c 
b/drivers/staging/rtl8712/rtl871x_io.c
index 17dafeffd6f4..87024d6a465e 100644
--- a/drivers/staging/rtl8712/rtl871x_io.c
+++ b/drivers/staging/rtl8712/rtl871x_io.c
@@ -107,13 +107,11 @@ uint r8712_alloc_io_queue(struct _adapter *adapter)
INIT_LIST_HEAD(&pio_queue->processing);
INIT_LIST_HEAD(&pio_queue->pending);
spin_lock_init(&pio_queue->lock);
-   pio_queue->pallocated_free_ioreqs_buf = kmalloc(NUM_IOREQ *
+   pio_queue->pallocated_free_ioreqs_buf = kzalloc(NUM_IOREQ *
(sizeof(struct io_req)) + 4,
GFP_ATOMIC);
if ((pio_queue->pallocated_free_ioreqs_buf) == NULL)
goto alloc_io_queue_fail;
-   memset(pio_queue->pallocated_free_ioreqs_buf, 0,
-   (NUM_IOREQ * (sizeof(struct io_req)) + 4));
pio_queue->free_ioreqs_buf = pio_queue->pallocated_free_ioreqs_buf + 4
- ((addr_t)(pio_queue->pallocated_free_ioreqs_buf)
& 3);
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c 
b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index db553f2e4c0b..f8e0723f5d1f 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -1078,12 +1078,10 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, 
struct net_device *ndev,
DBG_871X("pairwise =%d\n", pairwise);
 
param_len = sizeof(struct ieee_param) + params->key_len;
-   param = rtw_malloc(param_len);
+   param = rtw_zmalloc(param_len);
if (param == NULL)
return -1;
 
-   memset(param, 0, param_len);
-
param->cmd = IEEE_CMD_SET_ENCRYPTION;
memset(param->sta_addr, 0xff, ETH_ALEN);
 
@@ -2167,15 +2165,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, 
struct net_device *ndev,
{
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len + FIELD_OFFSET(struct 
ndis_802_11_wep, KeyMaterial);
-   pwep = rtw_malloc(wep_total_len);
+   pwep = rtw_zmalloc(wep_total_len);
if (pwep == NULL) {
DBG_871X(" wpa_set_encryption: pwep allocate 
fail !!!\n");
ret = -ENOMEM;
goto exit;
}
 
-   memset(pwep, 0, wep_total_len);
-
pwep->KeyLength = wep_key_len;
pwep->Length = wep_total_len;
 
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c 
b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
index e3d356952875..1491d420929c 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
@@ -478,14 +478,12 @@ static int wpa_set_encryption(struct net_device *dev, 
struct ieee_param *param,
if (wep_key_len > 0) {
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len + FIELD_OFFSET(struct 
ndis_802_11_wep, KeyMaterial);
-   pwep = rtw_malloc(wep_total_len);
+   pwep = rtw_zmalloc(wep_total_len);
if (pwep == NULL) {
RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, 
(" wpa_set_encryption: pwep allocate fail !!!\n"));
goto exit;
}
 
-   memset(pwep, 0, wep_total_len);
-
pwep->KeyLength = wep_key_len;
 

[PATCH] staging: erofs: don't check special inode layout

2019-06-27 Thread Yue Hu
From: Yue Hu 

Currently, we will check if inode layout is compression or inline if
the inode is special in fill_inode(). Also set ->i_mapping->a_ops for
it. That is pointless since the both modes won't be set for special
inode when creating EROFS filesystem image. So, let's avoid it.

Signed-off-by: Yue Hu 
---
 drivers/staging/erofs/inode.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/erofs/inode.c b/drivers/staging/erofs/inode.c
index 1433f25..2fe0f6d 100644
--- a/drivers/staging/erofs/inode.c
+++ b/drivers/staging/erofs/inode.c
@@ -205,6 +205,7 @@ static int fill_inode(struct inode *inode, int isdir)
S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
inode->i_op = &erofs_generic_iops;
init_special_inode(inode, inode->i_mode, inode->i_rdev);
+   goto out_unlock;
} else {
err = -EIO;
goto out_unlock;
-- 
1.9.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: erofs: don't check special inode layout

2019-06-27 Thread Gao Xiang
Hi Yue,

On 2019/6/28 11:42, Yue Hu wrote:
> From: Yue Hu 
> 
> Currently, we will check if inode layout is compression or inline if
> the inode is special in fill_inode(). Also set ->i_mapping->a_ops for
> it. That is pointless since the both modes won't be set for special
> inode when creating EROFS filesystem image. So, let's avoid it.
> 
> Signed-off-by: Yue Hu 

Have you test this patch with some actual image with legacy mkfs since
new mkfs framework have not supported special inode...

I think that is fine in priciple, however, in case to introduce some potential
issues, I will test this patch later. I will give a Reviewed-by tag after I 
tested
this patch.

Thanks,
Gao Xiang

> ---
>  drivers/staging/erofs/inode.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/staging/erofs/inode.c b/drivers/staging/erofs/inode.c
> index 1433f25..2fe0f6d 100644
> --- a/drivers/staging/erofs/inode.c
> +++ b/drivers/staging/erofs/inode.c
> @@ -205,6 +205,7 @@ static int fill_inode(struct inode *inode, int isdir)
>   S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
>   inode->i_op = &erofs_generic_iops;
>   init_special_inode(inode, inode->i_mode, inode->i_rdev);
> + goto out_unlock;
>   } else {
>   err = -EIO;
>   goto out_unlock;
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: erofs: don't check special inode layout

2019-06-27 Thread Yue Hu
On Fri, 28 Jun 2019 11:50:21 +0800
Gao Xiang  wrote:

> Hi Yue,
> 
> On 2019/6/28 11:42, Yue Hu wrote:
> > From: Yue Hu 
> > 
> > Currently, we will check if inode layout is compression or inline if
> > the inode is special in fill_inode(). Also set ->i_mapping->a_ops for
> > it. That is pointless since the both modes won't be set for special
> > inode when creating EROFS filesystem image. So, let's avoid it.
> > 
> > Signed-off-by: Yue Hu   
> 
> Have you test this patch with some actual image with legacy mkfs since
> new mkfs framework have not supported special inode...

Hi Xiang,

I'm studying the testing :)

However, already check the code handling for special inode in leagcy mkfs as 
below:

```c
break;
case EROFS_FT_BLKDEV:
case EROFS_FT_CHRDEV:
case EROFS_FT_FIFO:
case EROFS_FT_SOCK:
mkfs_rank_inode(d);
break;

default:
erofs_err("inode[%s] file_type error =%d",
  d->i_fullpath,
```

No special inode layout operations, so this change should be fine.

Thx.

> 
> I think that is fine in priciple, however, in case to introduce some potential
> issues, I will test this patch later. I will give a Reviewed-by tag after I 
> tested
> this patch.

Thanks.

> 
> Thanks,
> Gao Xiang
> 
> > ---
> >  drivers/staging/erofs/inode.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/staging/erofs/inode.c b/drivers/staging/erofs/inode.c
> > index 1433f25..2fe0f6d 100644
> > --- a/drivers/staging/erofs/inode.c
> > +++ b/drivers/staging/erofs/inode.c
> > @@ -205,6 +205,7 @@ static int fill_inode(struct inode *inode, int isdir)
> > S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
> > inode->i_op = &erofs_generic_iops;
> > init_special_inode(inode, inode->i_mode, inode->i_rdev);
> > +   goto out_unlock;
> > } else {
> > err = -EIO;
> > goto out_unlock;
> >   

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2] Adjust analogix chip driver location

2019-06-27 Thread Xin Ji
Move analogix chip ANX78XX bridge driver into "analogix" directory.

Signed-off-by: Xin Ji 
---
 drivers/gpu/drm/bridge/Kconfig   | 10 --
 drivers/gpu/drm/bridge/Makefile  |  3 +--
 drivers/gpu/drm/bridge/analogix/Kconfig  | 10 ++
 drivers/gpu/drm/bridge/analogix/Makefile |  2 ++
 drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c |  0
 drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h |  0
 6 files changed, 13 insertions(+), 12 deletions(-)
 rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.c (100%)
 rename drivers/gpu/drm/bridge/{ => analogix}/analogix-anx78xx.h (100%)

diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index ee77746..862789b 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -16,16 +16,6 @@ config DRM_PANEL_BRIDGE
 menu "Display Interface Bridges"
depends on DRM && DRM_BRIDGE
 
-config DRM_ANALOGIX_ANX78XX
-   tristate "Analogix ANX78XX bridge"
-   select DRM_KMS_HELPER
-   select REGMAP_I2C
-   ---help---
- ANX78XX is an ultra-low Full-HD SlimPort transmitter
- designed for portable devices. The ANX78XX transforms
- the HDMI output of an application processor to MyDP
- or DisplayPort.
-
 config DRM_CDNS_DSI
tristate "Cadence DPI/DSI bridge"
select DRM_KMS_HELPER
diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
index 4934fcf..223ca5d 100644
--- a/drivers/gpu/drm/bridge/Makefile
+++ b/drivers/gpu/drm/bridge/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
 obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o
 obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o
 obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o
@@ -12,8 +11,8 @@ obj-$(CONFIG_DRM_SII9234) += sii9234.o
 obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o
 obj-$(CONFIG_DRM_TOSHIBA_TC358764) += tc358764.o
 obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o
-obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/
 obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
 obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o
 obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o
+obj-y += analogix/
 obj-y += synopsys/
diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig 
b/drivers/gpu/drm/bridge/analogix/Kconfig
index e930ff9..dfe84f5 100644
--- a/drivers/gpu/drm/bridge/analogix/Kconfig
+++ b/drivers/gpu/drm/bridge/analogix/Kconfig
@@ -1,4 +1,14 @@
 # SPDX-License-Identifier: GPL-2.0-only
+config DRM_ANALOGIX_ANX78XX
+   tristate "Analogix ANX78XX bridge"
+   select DRM_KMS_HELPER
+   select REGMAP_I2C
+   ---help---
+ ANX78XX is an ultra-low Full-HD SlimPort transmitter
+ designed for portable devices. The ANX78XX transforms
+ the HDMI output of an application processor to MyDP
+ or DisplayPort.
+
 config DRM_ANALOGIX_DP
tristate
depends on DRM
diff --git a/drivers/gpu/drm/bridge/analogix/Makefile 
b/drivers/gpu/drm/bridge/analogix/Makefile
index fdbf3fd..d4c54ac 100644
--- a/drivers/gpu/drm/bridge/analogix/Makefile
+++ b/drivers/gpu/drm/bridge/analogix/Makefile
@@ -1,3 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
+
 analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
 obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.c 
b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
similarity index 100%
rename from drivers/gpu/drm/bridge/analogix-anx78xx.c
rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
diff --git a/drivers/gpu/drm/bridge/analogix-anx78xx.h 
b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
similarity index 100%
rename from drivers/gpu/drm/bridge/analogix-anx78xx.h
rename to drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2 19/27] staging: rtl8*: use zeroing allocator rather than allocator followed with memset 0

2019-06-27 Thread Julia Lawall



On Fri, 28 Jun 2019, Fuqian Huang wrote:

> Use zeroing allocator rather than allocator followed with memset 0.

Maybe it would be better to just change these to the appropriate kmalloc
and kzalloc calls.

You will need to check on whether locks are held to know whether the secon
argument should be GFP_ATOMIC or GFP_KERNEL.  The current code doesn't
address this issue in a correct manner.

You may also want to add some options to your get_maintainer call to not
send patches to everyone who has ever worked on the driver.

julia

>
> Signed-off-by: Fuqian Huang 
> ---
>  drivers/staging/rtl8188eu/os_dep/mlme_linux.c |  3 +--
>  drivers/staging/rtl8712/rtl871x_io.c  |  4 +---
>  drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c |  8 ++--
>  drivers/staging/rtl8723bs/os_dep/ioctl_linux.c| 12 +++-
>  4 files changed, 7 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c 
> b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
> index 9db11b16cb93..250acb01d1a9 100644
> --- a/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
> +++ b/drivers/staging/rtl8188eu/os_dep/mlme_linux.c
> @@ -98,10 +98,9 @@ void rtw_report_sec_ie(struct adapter *adapter, u8 
> authmode, u8 *sec_ie)
>   if (authmode == _WPA_IE_ID_) {
>   RT_TRACE(_module_mlme_osdep_c_, _drv_info_,
>("rtw_report_sec_ie, authmode=%d\n", authmode));
> - buff = rtw_malloc(IW_CUSTOM_MAX);
> + buff = rtw_zmalloc(IW_CUSTOM_MAX);
>   if (!buff)
>   return;
> - memset(buff, 0, IW_CUSTOM_MAX);
>   p = buff;
>   p += sprintf(p, "ASSOCINFO(ReqIEs =");
>   len = sec_ie[1] + 2;
> diff --git a/drivers/staging/rtl8712/rtl871x_io.c 
> b/drivers/staging/rtl8712/rtl871x_io.c
> index 17dafeffd6f4..87024d6a465e 100644
> --- a/drivers/staging/rtl8712/rtl871x_io.c
> +++ b/drivers/staging/rtl8712/rtl871x_io.c
> @@ -107,13 +107,11 @@ uint r8712_alloc_io_queue(struct _adapter *adapter)
>   INIT_LIST_HEAD(&pio_queue->processing);
>   INIT_LIST_HEAD(&pio_queue->pending);
>   spin_lock_init(&pio_queue->lock);
> - pio_queue->pallocated_free_ioreqs_buf = kmalloc(NUM_IOREQ *
> + pio_queue->pallocated_free_ioreqs_buf = kzalloc(NUM_IOREQ *
>   (sizeof(struct io_req)) + 4,
>   GFP_ATOMIC);
>   if ((pio_queue->pallocated_free_ioreqs_buf) == NULL)
>   goto alloc_io_queue_fail;
> - memset(pio_queue->pallocated_free_ioreqs_buf, 0,
> - (NUM_IOREQ * (sizeof(struct io_req)) + 4));
>   pio_queue->free_ioreqs_buf = pio_queue->pallocated_free_ioreqs_buf + 4
>   - ((addr_t)(pio_queue->pallocated_free_ioreqs_buf)
>   & 3);
> diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c 
> b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> index db553f2e4c0b..f8e0723f5d1f 100644
> --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> @@ -1078,12 +1078,10 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, 
> struct net_device *ndev,
>   DBG_871X("pairwise =%d\n", pairwise);
>
>   param_len = sizeof(struct ieee_param) + params->key_len;
> - param = rtw_malloc(param_len);
> + param = rtw_zmalloc(param_len);
>   if (param == NULL)
>   return -1;
>
> - memset(param, 0, param_len);
> -
>   param->cmd = IEEE_CMD_SET_ENCRYPTION;
>   memset(param->sta_addr, 0xff, ETH_ALEN);
>
> @@ -2167,15 +2165,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, 
> struct net_device *ndev,
>   {
>   wep_key_len = wep_key_len <= 5 ? 5 : 13;
>   wep_total_len = wep_key_len + FIELD_OFFSET(struct 
> ndis_802_11_wep, KeyMaterial);
> - pwep = rtw_malloc(wep_total_len);
> + pwep = rtw_zmalloc(wep_total_len);
>   if (pwep == NULL) {
>   DBG_871X(" wpa_set_encryption: pwep allocate 
> fail !!!\n");
>   ret = -ENOMEM;
>   goto exit;
>   }
>
> - memset(pwep, 0, wep_total_len);
> -
>   pwep->KeyLength = wep_key_len;
>   pwep->Length = wep_total_len;
>
> diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c 
> b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
> index e3d356952875..1491d420929c 100644
> --- a/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
> +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
> @@ -478,14 +478,12 @@ static int wpa_set_encryption(struct net_device *dev, 
> struct ieee_param *param,
>   if (wep_key_len > 0) {
>   wep_key_len = wep_key_len <= 5 ? 5 : 13;
>   wep_total_