Stable Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write
@ 2019-12-02 10:02 Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 02/14] arm: add missing include platform-data/atmel.h Lee Jones
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:02 UTC (permalink / raw)
  To: stable

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit 263eaf8f172d9f44e15d6aca85fe40ec18d2c477 ]

The regmap update bits call was not selecting the proper mask, considering
the bits which was updating.
Update the mask from call to also include OSCBYPASS.
Removed MOSCEN which was not updated.

Fixes: 1bdf02326b71 ("clk: at91: make use of syscon/regmap internally")
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Link: https://lkml.kernel.org/r/1568042692-11784-1-git-send-email-eugen.hristev@microchip.com
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/clk/at91/clk-main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/at91/clk-main.c b/drivers/clk/at91/clk-main.c
index 2f97a843d6d6..b29bc7ec2ef9 100644
--- a/drivers/clk/at91/clk-main.c
+++ b/drivers/clk/at91/clk-main.c
@@ -162,7 +162,7 @@ at91_clk_register_main_osc(struct regmap *regmap,
 	if (bypass)
 		regmap_update_bits(regmap,
 				   AT91_CKGR_MOR, MOR_KEY_MASK |
-				   AT91_PMC_MOSCEN,
+				   AT91_PMC_OSCBYPASS,
 				   AT91_PMC_OSCBYPASS | AT91_PMC_KEY);
 
 	hw = &osc->hw;
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 02/14] arm: add missing include platform-data/atmel.h
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 03/14] watchdog: sama5d4: fix WDD value to be always set to max Lee Jones
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Philippe Mazenauer <philippe.mazenauer@outlook.de>

[ Upstream commit 95701b1c3c8fe36368361394e3950094eece4723 ]

Include corresponding headerfile <linux/platform-data/atmel.h> for
function at91_suspend_entering_slow_clock().

../arch/arm/mach-at91/pm.c:279:5: warning: no previous prototype for ‘at91_suspend_entering_slow_clock’ [-Wmissing-prototypes]
 int at91_suspend_entering_slow_clock(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Philippe Mazenauer <philippe.mazenauer@outlook.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-at91/pm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 849014c01cf4..796182e33361 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -19,6 +19,7 @@
 #include <linux/suspend.h>
 
 #include <linux/clk/at91_pmc.h>
+#include <linux/platform_data/atmel.h>
 
 #include <asm/cacheflush.h>
 #include <asm/fncpy.h>
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 03/14] watchdog: sama5d4: fix WDD value to be always set to max
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 02/14] arm: add missing include platform-data/atmel.h Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 04/14] net: macb: Fix SUBNS increment and increase resolution Lee Jones
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit 8632944841d41a36d77dd1fa88d4201b5291100f ]

WDD value must be always set to max (0xFFF) otherwise the hardware
block will reset the board on the first ping of the watchdog.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/watchdog/sama5d4_wdt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/watchdog/sama5d4_wdt.c b/drivers/watchdog/sama5d4_wdt.c
index 0ae947c3d7bc..d8cf2039c6a4 100644
--- a/drivers/watchdog/sama5d4_wdt.c
+++ b/drivers/watchdog/sama5d4_wdt.c
@@ -111,9 +111,7 @@ static int sama5d4_wdt_set_timeout(struct watchdog_device *wdd,
 	u32 value = WDT_SEC2TICKS(timeout);
 
 	wdt->mr &= ~AT91_WDT_WDV;
-	wdt->mr &= ~AT91_WDT_WDD;
 	wdt->mr |= AT91_WDT_SET_WDV(value);
-	wdt->mr |= AT91_WDT_SET_WDD(value);
 
 	/*
 	 * WDDIS has to be 0 when updating WDD/WDV. The datasheet states: When
@@ -255,7 +253,7 @@ static int sama5d4_wdt_probe(struct platform_device *pdev)
 
 	timeout = WDT_SEC2TICKS(wdd->timeout);
 
-	wdt->mr |= AT91_WDT_SET_WDD(timeout);
+	wdt->mr |= AT91_WDT_SET_WDD(WDT_SEC2TICKS(MAX_WDT_TIMEOUT));
 	wdt->mr |= AT91_WDT_SET_WDV(timeout);
 
 	ret = sama5d4_wdt_init(wdt);
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 04/14] net: macb: Fix SUBNS increment and increase resolution
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 02/14] arm: add missing include platform-data/atmel.h Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 03/14] watchdog: sama5d4: fix WDD value to be always set to max Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 05/14] media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE Lee Jones
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Harini Katakam <harini.katakam@xilinx.com>

[ Upstream commit 7ad342bc58cc5197cd2f12a3c30b3949528c6d83 ]

The subns increment register has 24 bits as follows:
RegBit[15:0] = Subns[23:8]; RegBit[31:24] = Subns[7:0]

Fix the same in the driver and increase sub ns resolution to the
best capable, 24 bits. This should be the case on all GEM versions
that this PTP driver supports.

Signed-off-by: Harini Katakam <harini.katakam@xilinx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/net/ethernet/cadence/macb.h     | 6 +++++-
 drivers/net/ethernet/cadence/macb_ptp.c | 5 ++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
index c93f3a2dc6c1..4c0bcfd1d250 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -457,7 +457,11 @@
 
 /* Bitfields in TISUBN */
 #define GEM_SUBNSINCR_OFFSET			0
-#define GEM_SUBNSINCR_SIZE			16
+#define GEM_SUBNSINCRL_OFFSET			24
+#define GEM_SUBNSINCRL_SIZE			8
+#define GEM_SUBNSINCRH_OFFSET			0
+#define GEM_SUBNSINCRH_SIZE			16
+#define GEM_SUBNSINCR_SIZE			24
 
 /* Bitfields in TI */
 #define GEM_NSINCR_OFFSET			0
diff --git a/drivers/net/ethernet/cadence/macb_ptp.c b/drivers/net/ethernet/cadence/macb_ptp.c
index 678835136bf8..f1f07e9d53f8 100755
--- a/drivers/net/ethernet/cadence/macb_ptp.c
+++ b/drivers/net/ethernet/cadence/macb_ptp.c
@@ -115,7 +115,10 @@ static int gem_tsu_incr_set(struct macb *bp, struct tsu_incr *incr_spec)
 	 * to take effect.
 	 */
 	spin_lock_irqsave(&bp->tsu_clk_lock, flags);
-	gem_writel(bp, TISUBN, GEM_BF(SUBNSINCR, incr_spec->sub_ns));
+	/* RegBit[15:0] = Subns[23:8]; RegBit[31:24] = Subns[7:0] */
+	gem_writel(bp, TISUBN, GEM_BF(SUBNSINCRL, incr_spec->sub_ns) |
+		   GEM_BF(SUBNSINCRH, (incr_spec->sub_ns >>
+			  GEM_SUBNSINCRL_SIZE)));
 	gem_writel(bp, TI, GEM_BF(NSINCR, incr_spec->ns));
 	spin_unlock_irqrestore(&bp->tsu_clk_lock, flags);
 
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 05/14] media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (2 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 04/14] net: macb: Fix SUBNS increment and increase resolution Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 06/14] net: macb: fix error format in dev_err() Lee Jones
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit a0816e5088baab82aa738d61a55513114a673c8e ]

Control DO_WHITE_BALANCE is a button, with read only and execute-on-write flags.
Adding this control in the proper list in the fill function.

After adding it here, we can see output of v4l2-ctl -L
do_white_balance 0x0098090d (button) : flags=write-only, execute-on-write

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/media/v4l2-core/v4l2-ctrls.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index 1ee072e939e4..34d6ae43fc45 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -1014,6 +1014,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
 	case V4L2_CID_FLASH_STROBE_STOP:
 	case V4L2_CID_AUTO_FOCUS_START:
 	case V4L2_CID_AUTO_FOCUS_STOP:
+	case V4L2_CID_DO_WHITE_BALANCE:
 		*type = V4L2_CTRL_TYPE_BUTTON;
 		*flags |= V4L2_CTRL_FLAG_WRITE_ONLY |
 			  V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 06/14] net: macb: fix error format in dev_err()
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (3 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 05/14] media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 07/14] media: atmel: atmel-isc: fix asd memory allocation Lee Jones
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Luca Ceresoli <luca@lucaceresoli.net>

[ Upstream commit f413cbb332a0b5251a790f396d0eb4ebcade5dec ]

Errors are negative numbers. Using %u shows them as very large positive
numbers such as 4294967277 that don't make sense. Use the %d format
instead, and get a much nicer -19.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Fixes: b48e0bab142f ("net: macb: Migrate to devm clock interface")
Fixes: 93b31f48b3ba ("net/macb: unify clock management")
Fixes: 421d9df0628b ("net/macb: merge at91_ether driver into macb driver")
Fixes: aead88bd0e99 ("net: ethernet: macb: Add support for rx_clk")
Fixes: f5473d1d44e4 ("net: macb: Support clock management for tsu_clk")
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/net/ethernet/cadence/macb_main.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 2287749de087..bc9ab227d055 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -2822,7 +2822,7 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
 		if (!err)
 			err = -ENODEV;
 
-		dev_err(&pdev->dev, "failed to get macb_clk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to get macb_clk (%d)\n", err);
 		return err;
 	}
 
@@ -2831,7 +2831,7 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
 		if (!err)
 			err = -ENODEV;
 
-		dev_err(&pdev->dev, "failed to get hclk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to get hclk (%d)\n", err);
 		return err;
 	}
 
@@ -2845,25 +2845,25 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
 
 	err = clk_prepare_enable(*pclk);
 	if (err) {
-		dev_err(&pdev->dev, "failed to enable pclk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to enable pclk (%d)\n", err);
 		return err;
 	}
 
 	err = clk_prepare_enable(*hclk);
 	if (err) {
-		dev_err(&pdev->dev, "failed to enable hclk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to enable hclk (%d)\n", err);
 		goto err_disable_pclk;
 	}
 
 	err = clk_prepare_enable(*tx_clk);
 	if (err) {
-		dev_err(&pdev->dev, "failed to enable tx_clk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to enable tx_clk (%d)\n", err);
 		goto err_disable_hclk;
 	}
 
 	err = clk_prepare_enable(*rx_clk);
 	if (err) {
-		dev_err(&pdev->dev, "failed to enable rx_clk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to enable rx_clk (%d)\n", err);
 		goto err_disable_txclk;
 	}
 
@@ -3298,7 +3298,7 @@ static int at91ether_clk_init(struct platform_device *pdev, struct clk **pclk,
 
 	err = clk_prepare_enable(*pclk);
 	if (err) {
-		dev_err(&pdev->dev, "failed to enable pclk (%u)\n", err);
+		dev_err(&pdev->dev, "failed to enable pclk (%d)\n", err);
 		return err;
 	}
 
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 07/14] media: atmel: atmel-isc: fix asd memory allocation
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (4 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 06/14] net: macb: fix error format in dev_err() Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 08/14] media: atmel: atmel-isc: fix INIT_WORK misplacement Lee Jones
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit 1e4e25c4959c10728fbfcc6a286f9503d32dfe02 ]

The subsystem will free the asd memory on notifier cleanup, if the asd is
added to the notifier.
However the memory is freed using kfree.
Thus, we cannot allocate the asd using devm_*
This can lead to crashes and problems.
To test this issue, just return an error at probe, but cleanup the
notifier beforehand.

Fixes: 106267444f ("[media] atmel-isc: add the Image Sensor Controller code")

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/media/platform/atmel/atmel-isc.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c
index d7103c5f92c3..504d1ca0330e 100644
--- a/drivers/media/platform/atmel/atmel-isc.c
+++ b/drivers/media/platform/atmel/atmel-isc.c
@@ -1722,8 +1722,11 @@ static int isc_parse_dt(struct device *dev, struct isc_device *isc)
 			break;
 		}
 
-		subdev_entity->asd = devm_kzalloc(dev,
-				     sizeof(*subdev_entity->asd), GFP_KERNEL);
+		/* asd will be freed by the subsystem once it's added to the
+		 * notifier list
+		 */
+		subdev_entity->asd = kzalloc(sizeof(*subdev_entity->asd),
+					     GFP_KERNEL);
 		if (subdev_entity->asd == NULL) {
 			of_node_put(rem);
 			ret = -ENOMEM;
@@ -1859,6 +1862,7 @@ static int atmel_isc_probe(struct platform_device *pdev)
 						   &subdev_entity->notifier);
 		if (ret) {
 			dev_err(dev, "fail to register async notifier\n");
+			kfree(subdev_entity->asd);
 			goto cleanup_subdev;
 		}
 
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 08/14] media: atmel: atmel-isc: fix INIT_WORK misplacement
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (5 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 07/14] media: atmel: atmel-isc: fix asd memory allocation Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 09/14] mtd: rawnand: atmel: Fix spelling mistake in error message Lee Jones
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Eugen Hristev <eugen.hristev@microchip.com>

[ Upstream commit 79199002db5c571e335131856b3ff057ffd9f3c0 ]

In case the completion function failes, unbind will be called
which will call cancel_work for awb_work.
This will trigger a WARN message from the workqueue.
To avoid this, move the INIT_WORK call at the start of the completion
function. This way the work is always initialized, which corresponds
to the 'always canceled' unbind code.

Fixes: 93d4a26c3d ("[media] atmel-isc: add the isc pipeline function")

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/media/platform/atmel/atmel-isc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c
index 504d1ca0330e..0dea3cf2cb52 100644
--- a/drivers/media/platform/atmel/atmel-isc.c
+++ b/drivers/media/platform/atmel/atmel-isc.c
@@ -1555,6 +1555,8 @@ static int isc_async_complete(struct v4l2_async_notifier *notifier)
 	struct vb2_queue *q = &isc->vb2_vidq;
 	int ret;
 
+	INIT_WORK(&isc->awb_work, isc_awb_work);
+
 	ret = v4l2_device_register_subdev_nodes(&isc->v4l2_dev);
 	if (ret < 0) {
 		v4l2_err(&isc->v4l2_dev, "Failed to register subdev nodes\n");
@@ -1614,8 +1616,6 @@ static int isc_async_complete(struct v4l2_async_notifier *notifier)
 		return ret;
 	}
 
-	INIT_WORK(&isc->awb_work, isc_awb_work);
-
 	/* Register video device */
 	strlcpy(vdev->name, ATMEL_ISC_NAME, sizeof(vdev->name));
 	vdev->release		= video_device_release_empty;
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 09/14] mtd: rawnand: atmel: Fix spelling mistake in error message
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (6 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 08/14] media: atmel: atmel-isc: fix INIT_WORK misplacement Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 10/14] pwm: Clear chip_data in pwm_put() Lee Jones
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Miquel Raynal <miquel.raynal@bootlin.com>

[ Upstream commit e39bb786816453788836c367caefd72eceea380c ]

Wrong copy/paste from the previous block, the error message should
refer to #size-cells instead of #address-cells.

Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/mtd/nand/atmel/nand-controller.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/atmel/nand-controller.c b/drivers/mtd/nand/atmel/nand-controller.c
index 0b93f152d993..d5a493e8ee08 100644
--- a/drivers/mtd/nand/atmel/nand-controller.c
+++ b/drivers/mtd/nand/atmel/nand-controller.c
@@ -1888,7 +1888,7 @@ static int atmel_nand_controller_add_nands(struct atmel_nand_controller *nc)
 
 	ret = of_property_read_u32(np, "#size-cells", &val);
 	if (ret) {
-		dev_err(dev, "missing #address-cells property\n");
+		dev_err(dev, "missing #size-cells property\n");
 		return ret;
 	}
 
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 10/14] pwm: Clear chip_data in pwm_put()
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (7 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 09/14] mtd: rawnand: atmel: Fix spelling mistake in error message Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 11/14] net: macb driver, check for SKBTX_HW_TSTAMP Lee Jones
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

[ Upstream commit e926b12c611c2095c7976e2ed31753ad6eb5ff1a ]

After a PWM is disposed by its user the per chip data becomes invalid.
Clear the data in common code instead of the device drivers to get
consistent behaviour. Before this patch only three of nine drivers
cleaned up here.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/pwm/core.c        | 1 +
 drivers/pwm/pwm-berlin.c  | 1 -
 drivers/pwm/pwm-pca9685.c | 1 -
 drivers/pwm/pwm-samsung.c | 1 -
 4 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
index c45e5719ba17..b1b74cfb1571 100644
--- a/drivers/pwm/core.c
+++ b/drivers/pwm/core.c
@@ -874,6 +874,7 @@ void pwm_put(struct pwm_device *pwm)
 	if (pwm->chip->ops->free)
 		pwm->chip->ops->free(pwm->chip, pwm);
 
+	pwm_set_chip_data(pwm, NULL);
 	pwm->label = NULL;
 
 	module_put(pwm->chip->ops->owner);
diff --git a/drivers/pwm/pwm-berlin.c b/drivers/pwm/pwm-berlin.c
index 771859aca4be..7bb819e3c0c1 100644
--- a/drivers/pwm/pwm-berlin.c
+++ b/drivers/pwm/pwm-berlin.c
@@ -78,7 +78,6 @@ static void berlin_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
 {
 	struct berlin_pwm_channel *channel = pwm_get_chip_data(pwm);
 
-	pwm_set_chip_data(pwm, NULL);
 	kfree(channel);
 }
 
diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c
index a7eaf962a95b..567f5e2771c4 100644
--- a/drivers/pwm/pwm-pca9685.c
+++ b/drivers/pwm/pwm-pca9685.c
@@ -176,7 +176,6 @@ static void pca9685_pwm_gpio_free(struct gpio_chip *gpio, unsigned int offset)
 	pm_runtime_put(pca->chip.dev);
 	mutex_lock(&pca->lock);
 	pwm = &pca->chip.pwms[offset];
-	pwm_set_chip_data(pwm, NULL);
 	mutex_unlock(&pca->lock);
 }
 
diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c
index 062f2cfc45ec..3762432dd6a7 100644
--- a/drivers/pwm/pwm-samsung.c
+++ b/drivers/pwm/pwm-samsung.c
@@ -238,7 +238,6 @@ static int pwm_samsung_request(struct pwm_chip *chip, struct pwm_device *pwm)
 static void pwm_samsung_free(struct pwm_chip *chip, struct pwm_device *pwm)
 {
 	devm_kfree(chip->dev, pwm_get_chip_data(pwm));
-	pwm_set_chip_data(pwm, NULL);
 }
 
 static int pwm_samsung_enable(struct pwm_chip *chip, struct pwm_device *pwm)
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 11/14] net: macb driver, check for SKBTX_HW_TSTAMP
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (8 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 10/14] pwm: Clear chip_data in pwm_put() Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 12/14] mtd: rawnand: atmel: fix possible object reference leak Lee Jones
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Paul Thomas <pthomas8589@gmail.com>

[ Upstream commit a62520473f15750cd1432d36b377a06cd7cff8d2 ]

Make sure SKBTX_HW_TSTAMP (i.e. SOF_TIMESTAMPING_TX_HARDWARE) has been
enabled for this skb. It does fix the issue where normal socks that
aren't expecting a timestamp will not wake up on select, but when a
user does want a SOF_TIMESTAMPING_TX_HARDWARE it does work.

Signed-off-by: Paul Thomas <pthomas8589@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/net/ethernet/cadence/macb_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index bc9ab227d055..5aff1b460151 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -852,7 +852,9 @@ static void macb_tx_interrupt(struct macb_queue *queue)
 
 			/* First, update TX stats if needed */
 			if (skb) {
-				if (gem_ptp_do_txstamp(queue, skb, desc) == 0) {
+				if (unlikely(skb_shinfo(skb)->tx_flags &
+					     SKBTX_HW_TSTAMP) &&
+				    gem_ptp_do_txstamp(queue, skb, desc) == 0) {
 					/* skb now belongs to timestamp buffer
 					 * and will be removed later
 					 */
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 12/14] mtd: rawnand: atmel: fix possible object reference leak
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (9 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 11/14] net: macb driver, check for SKBTX_HW_TSTAMP Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 13/14] mtd: spi-nor: cast to u64 to avoid uint overflows Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 14/14] clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated() Lee Jones
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Wen Yang <yellowriver2010@hotmail.com>

[ Upstream commit a12085d13997ed15f745f33a0e01002541160179 ]

of_find_device_by_node() takes a reference to the struct device
when it finds a match via get_device, there is no need to call
get_device() twice.
We also should make sure to drop the reference to the device
taken by of_find_device_by_node() on driver unbind.

Fixes: f88fc122cc34 ("mtd: nand: Cleanup/rework the atmel_nand driver")
Signed-off-by: Wen Yang <yellowriver2010@hotmail.com>
Suggested-by: Boris Brezillon <bbrezillon@kernel.org>
Reviewed-by: Boris Brezillon <bbrezillon@kernel.org>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: Boris Brezillon <bbrezillon@kernel.org>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Brian Norris <computersforpeace@gmail.com>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
Cc: linux-mtd@lists.infradead.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/mtd/nand/atmel/pmecc.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/drivers/mtd/nand/atmel/pmecc.c b/drivers/mtd/nand/atmel/pmecc.c
index 4124bf91bee6..8cd153974e8d 100644
--- a/drivers/mtd/nand/atmel/pmecc.c
+++ b/drivers/mtd/nand/atmel/pmecc.c
@@ -875,23 +875,32 @@ static struct atmel_pmecc *atmel_pmecc_get_by_node(struct device *userdev,
 {
 	struct platform_device *pdev;
 	struct atmel_pmecc *pmecc, **ptr;
+	int ret;
 
 	pdev = of_find_device_by_node(np);
-	if (!pdev || !platform_get_drvdata(pdev))
+	if (!pdev)
 		return ERR_PTR(-EPROBE_DEFER);
+	pmecc = platform_get_drvdata(pdev);
+	if (!pmecc) {
+		ret = -EPROBE_DEFER;
+		goto err_put_device;
+	}
 
 	ptr = devres_alloc(devm_atmel_pmecc_put, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return ERR_PTR(-ENOMEM);
-
-	get_device(&pdev->dev);
-	pmecc = platform_get_drvdata(pdev);
+	if (!ptr) {
+		ret = -ENOMEM;
+		goto err_put_device;
+	}
 
 	*ptr = pmecc;
 
 	devres_add(userdev, ptr);
 
 	return pmecc;
+
+err_put_device:
+	put_device(&pdev->dev);
+	return ERR_PTR(ret);
 }
 
 static const int atmel_pmecc_strengths[] = { 2, 4, 8, 12, 24, 32 };
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 13/14] mtd: spi-nor: cast to u64 to avoid uint overflows
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (10 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 12/14] mtd: rawnand: atmel: fix possible object reference leak Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  2019-12-02 10:03 ` [PATCH 4.14 14/14] clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated() Lee Jones
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: "huijin.park" <huijin.park@samsung.com>

[ Upstream commit 84a1c2109d23df3543d96231c4fee1757299bb1a ]

The "params->size" is defined as "u64".
And "info->sector_size" and "info->n_sectors" are defined as
unsigned int and u16.
Thus, u64 data might have strange data(loss data) if the result
overflows an unsigned int.
This patch casts "info->sector_size" to an u64.

Signed-off-by: huijin.park <huijin.park@samsung.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/mtd/spi-nor/spi-nor.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 6c013341ef09..d550148177a0 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2382,7 +2382,7 @@ static int spi_nor_init_params(struct spi_nor *nor,
 	memset(params, 0, sizeof(*params));
 
 	/* Set SPI NOR sizes. */
-	params->size = info->sector_size * info->n_sectors;
+	params->size = (u64)info->sector_size * info->n_sectors;
 	params->page_size = info->page_size;
 
 	/* (Fast) Read settings. */
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4.14 14/14] clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated()
  2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
                   ` (11 preceding siblings ...)
  2019-12-02 10:03 ` [PATCH 4.14 13/14] mtd: spi-nor: cast to u64 to avoid uint overflows Lee Jones
@ 2019-12-02 10:03 ` Lee Jones
  12 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2019-12-02 10:03 UTC (permalink / raw)
  To: stable

From: Alexandre Belloni <alexandre.belloni@bootlin.com>

[ Upstream commit c1e4580a1d0ff510d56268c1fc7fcfeec366fe70 ]

Set gck->audio_pll_allowed in at91_clk_register_generated. This makes it
easier to do it from code that is not parsing device tree.

Also, this fixes an issue where the resulting clk_hw can be dereferenced
before being tested for error.

Fixes: 1a1a36d72e3d ("clk: at91: clk-generated: make gclk determine audio_pll rate")
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/clk/at91/clk-generated.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/drivers/clk/at91/clk-generated.c b/drivers/clk/at91/clk-generated.c
index 113152425a95..ea23002be4de 100644
--- a/drivers/clk/at91/clk-generated.c
+++ b/drivers/clk/at91/clk-generated.c
@@ -284,7 +284,7 @@ static void clk_generated_startup(struct clk_generated *gck)
 static struct clk_hw * __init
 at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
 			    const char *name, const char **parent_names,
-			    u8 num_parents, u8 id,
+			    u8 num_parents, u8 id, bool pll_audio,
 			    const struct clk_range *range)
 {
 	struct clk_generated *gck;
@@ -308,6 +308,7 @@ at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
 	gck->regmap = regmap;
 	gck->lock = lock;
 	gck->range = *range;
+	gck->audio_pll_allowed = pll_audio;
 
 	clk_generated_startup(gck);
 	hw = &gck->hw;
@@ -333,7 +334,6 @@ static void __init of_sama5d2_clk_generated_setup(struct device_node *np)
 	struct device_node *gcknp;
 	struct clk_range range = CLK_RANGE(0, 0);
 	struct regmap *regmap;
-	struct clk_generated *gck;
 
 	num_parents = of_clk_get_parent_count(np);
 	if (num_parents == 0 || num_parents > GENERATED_SOURCE_MAX)
@@ -350,6 +350,8 @@ static void __init of_sama5d2_clk_generated_setup(struct device_node *np)
 		return;
 
 	for_each_child_of_node(np, gcknp) {
+		bool pll_audio = false;
+
 		if (of_property_read_u32(gcknp, "reg", &id))
 			continue;
 
@@ -362,24 +364,14 @@ static void __init of_sama5d2_clk_generated_setup(struct device_node *np)
 		of_at91_get_clk_range(gcknp, "atmel,clk-output-range",
 				      &range);
 
+		if (of_device_is_compatible(np, "atmel,sama5d2-clk-generated") &&
+		    (id == GCK_ID_I2S0 || id == GCK_ID_I2S1 ||
+		     id == GCK_ID_CLASSD))
+			pll_audio = true;
+
 		hw = at91_clk_register_generated(regmap, &pmc_pcr_lock, name,
 						  parent_names, num_parents,
-						  id, &range);
-
-		gck = to_clk_generated(hw);
-
-		if (of_device_is_compatible(np,
-					    "atmel,sama5d2-clk-generated")) {
-			if (gck->id == GCK_ID_SSC0 || gck->id == GCK_ID_SSC1 ||
-			    gck->id == GCK_ID_I2S0 || gck->id == GCK_ID_I2S1 ||
-			    gck->id == GCK_ID_CLASSD)
-				gck->audio_pll_allowed = true;
-			else
-				gck->audio_pll_allowed = false;
-		} else {
-			gck->audio_pll_allowed = false;
-		}
-
+						  id, pll_audio, &range);
 		if (IS_ERR(hw))
 			continue;
 
-- 
2.24.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, back to index

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-02 10:02 [PATCH 4.14 01/14] clk: at91: fix update bit maps on CFG_MOR write Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 02/14] arm: add missing include platform-data/atmel.h Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 03/14] watchdog: sama5d4: fix WDD value to be always set to max Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 04/14] net: macb: Fix SUBNS increment and increase resolution Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 05/14] media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 06/14] net: macb: fix error format in dev_err() Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 07/14] media: atmel: atmel-isc: fix asd memory allocation Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 08/14] media: atmel: atmel-isc: fix INIT_WORK misplacement Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 09/14] mtd: rawnand: atmel: Fix spelling mistake in error message Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 10/14] pwm: Clear chip_data in pwm_put() Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 11/14] net: macb driver, check for SKBTX_HW_TSTAMP Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 12/14] mtd: rawnand: atmel: fix possible object reference leak Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 13/14] mtd: spi-nor: cast to u64 to avoid uint overflows Lee Jones
2019-12-02 10:03 ` [PATCH 4.14 14/14] clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated() Lee Jones

Stable Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://lore.kernel.org/stable \
		stable@vger.kernel.org
	public-inbox-index stable

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git