All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/9] staging: ks7010: factor out some functions
@ 2018-04-03 15:12 Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 1/9] staging: ks7010: remove unnecessary 'out of memory' message Sergio Paracuellos
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This patch series factors out some functions to improve
a bit readility in ks7010_sdio source file.

v2:
 - PATCH 8: fix a memory leak in extracted factor out function 
   copy_firmware.
 - PATCH 8: error label has been renamed from 'copy_error' to 
   'free_rom_buf'. 
 - some style issues in PATCH 8 has been moved into a new patch 

v3:
 - PATCH 7: no extract new function to check if firmware is running:
   just fix directly error handling in ks7010_upload_firmware function.
 - PATCH 8: review it to apply correctly with new changes in PATCH 7.

Sergio Paracuellos (9):
  staging: ks7010: remove unnecessary 'out of memory' message
  staging: ks7010: factor out irq enable process to
    ks7010_sdio_init_irqs
  staging: ks7010: fix label to jump to in error case
  staging: ks7010: factor out irq setup process to
    ks7010_sdio_setup_irqs
  staging: ks7010: factor out ks_wlan_private init process into
    ks7010_private_init
  staging: ks7010: factor out initial enqueue process into
    ks7010_sme_enqueue_events
  staging: ks7010: fix error handling in ks7010_upload_firmware
  staging: ks7010: ks7010: factor out firmware copy process into
    ks7010_copy_firmware
  staging: ks7010: fix some style issues about long lines

 drivers/staging/ks7010/ks7010_sdio.c | 237 +++++++++++++++++++++--------------
 1 file changed, 144 insertions(+), 93 deletions(-)

-- 
2.7.4

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

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

* [PATCH v3 1/9] staging: ks7010: remove unnecessary 'out of memory' message
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 2/9] staging: ks7010: factor out irq enable process to ks7010_sdio_init_irqs Sergio Paracuellos
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit removes unnecessay out of memory message
fixing the following checkpach.pl warning:
WARNING: Possible unnecessary 'out of memory' message

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 0cc14ac..19dfbb9 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -957,10 +957,8 @@ static int send_stop_request(struct sdio_func *func)
 	card = sdio_get_drvdata(func);
 
 	pp = kzalloc(hif_align_size(sizeof(*pp)), GFP_KERNEL);
-	if (!pp) {
-		netdev_err(card->priv->net_dev, "allocate memory failed..\n");
+	if (!pp)
 		return -ENOMEM;
-	}
 
 	size = sizeof(*pp) - sizeof(pp->header.size);
 	pp->header.size = cpu_to_le16((uint16_t)size);
-- 
2.7.4

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

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

* [PATCH v3 2/9] staging: ks7010: factor out irq enable process to ks7010_sdio_init_irqs
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 1/9] staging: ks7010: remove unnecessary 'out of memory' message Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 3/9] staging: ks7010: fix label to jump to in error case Sergio Paracuellos
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit extracts sdio irq enable process to a new function
ks7010_sdio_init_irqs to improve readability.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 43 ++++++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 16 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 19dfbb9..10374be 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -802,13 +802,38 @@ static void ks7010_init_defaults(struct ks_wlan_private *priv)
 	priv->reg.rate_set.size = 12;
 }
 
+static void ks7010_sdio_init_irqs(struct sdio_func *func,
+				  struct ks_wlan_private *priv)
+{
+	unsigned char byte;
+	int ret;
+
+	/*
+	 * interrupt setting
+	 * clear Interrupt status write
+	 * (ARMtoSD_InterruptPending FN1:00_0024)
+	 */
+	sdio_claim_host(func);
+	ret = ks7010_sdio_writeb(priv, INT_PENDING, 0xff);
+	sdio_release_host(func);
+	if (ret)
+		netdev_err(priv->net_dev, " error : INT_PENDING\n");
+
+	/* enable ks7010sdio interrupt */
+	byte = (INT_GCR_B | INT_READ_STATUS | INT_WRITE_STATUS);
+	sdio_claim_host(func);
+	ret = ks7010_sdio_writeb(priv, INT_ENABLE, byte);
+	sdio_release_host(func);
+	if (ret)
+		netdev_err(priv->net_dev, " err : INT_ENABLE\n");
+}
+
 static int ks7010_sdio_probe(struct sdio_func *func,
 			     const struct sdio_device_id *device)
 {
 	struct ks_wlan_private *priv;
 	struct ks_sdio_card *card;
 	struct net_device *netdev;
-	unsigned char byte;
 	int ret;
 
 	priv = NULL;
@@ -898,21 +923,7 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 		goto err_free_netdev;
 	}
 
-	/* interrupt setting */
-	/* clear Interrupt status write (ARMtoSD_InterruptPending FN1:00_0024) */
-	sdio_claim_host(func);
-	ret = ks7010_sdio_writeb(priv, INT_PENDING, 0xff);
-	sdio_release_host(func);
-	if (ret)
-		netdev_err(priv->net_dev, " error : INT_PENDING\n");
-
-	/* enable ks7010sdio interrupt */
-	byte = (INT_GCR_B | INT_READ_STATUS | INT_WRITE_STATUS);
-	sdio_claim_host(func);
-	ret = ks7010_sdio_writeb(priv, INT_ENABLE, byte);
-	sdio_release_host(func);
-	if (ret)
-		netdev_err(priv->net_dev, " err : INT_ENABLE\n");
+	ks7010_sdio_init_irqs(func, priv);
 
 	priv->dev_state = DEVICE_STATE_BOOT;
 
-- 
2.7.4

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

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

* [PATCH v3 3/9] staging: ks7010: fix label to jump to in error case
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 1/9] staging: ks7010: remove unnecessary 'out of memory' message Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 2/9] staging: ks7010: factor out irq enable process to ks7010_sdio_init_irqs Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 4/9] staging: ks7010: factor out irq setup process to ks7010_sdio_setup_irqs Sergio Paracuellos
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit fixs the label to jump to when in case
an error occurs disabling interrupts. At this point
of the code sdio_enable_func() function has been
successfully called.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 10374be..a55611f 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -858,7 +858,8 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 	/* interrupt disable */
 	sdio_writeb(func, 0, INT_ENABLE, &ret);
 	if (ret)
-		goto err_free_card;
+		goto err_disable_func;
+
 	sdio_writeb(func, 0xff, INT_PENDING, &ret);
 	if (ret)
 		goto err_disable_func;
-- 
2.7.4

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

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

* [PATCH v3 4/9] staging: ks7010: factor out irq setup process to ks7010_sdio_setup_irqs
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (2 preceding siblings ...)
  2018-04-03 15:12 ` [PATCH v3 3/9] staging: ks7010: fix label to jump to in error case Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 5/9] staging: ks7010: factor out ks_wlan_private init process into ks7010_private_init Sergio Paracuellos
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit extract sdio irq setup process into a new
function ks7010_sdio_setup_irqs to improve readability.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index a55611f..5b3e814 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -802,6 +802,26 @@ static void ks7010_init_defaults(struct ks_wlan_private *priv)
 	priv->reg.rate_set.size = 12;
 }
 
+static int ks7010_sdio_setup_irqs(struct sdio_func *func)
+{
+	int ret;
+
+	/* interrupt disable */
+	sdio_writeb(func, 0, INT_ENABLE, &ret);
+	if (ret)
+		goto irq_error;
+
+	sdio_writeb(func, 0xff, INT_PENDING, &ret);
+	if (ret)
+		goto irq_error;
+
+	/* setup interrupt handler */
+	ret = sdio_claim_irq(func, ks_sdio_interrupt);
+
+irq_error:
+	return ret;
+}
+
 static void ks7010_sdio_init_irqs(struct sdio_func *func,
 				  struct ks_wlan_private *priv)
 {
@@ -855,17 +875,7 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 	if (ret)
 		goto err_free_card;
 
-	/* interrupt disable */
-	sdio_writeb(func, 0, INT_ENABLE, &ret);
-	if (ret)
-		goto err_disable_func;
-
-	sdio_writeb(func, 0xff, INT_PENDING, &ret);
-	if (ret)
-		goto err_disable_func;
-
-	/* setup interrupt handler */
-	ret = sdio_claim_irq(func, ks_sdio_interrupt);
+	ret = ks7010_sdio_setup_irqs(func);
 	if (ret)
 		goto err_disable_func;
 
-- 
2.7.4

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

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

* [PATCH v3 5/9] staging: ks7010: factor out ks_wlan_private init process into ks7010_private_init
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (3 preceding siblings ...)
  2018-04-03 15:12 ` [PATCH v3 4/9] staging: ks7010: factor out irq setup process to ks7010_sdio_setup_irqs Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:12 ` [PATCH v3 6/9] staging: ks7010: factor out initial enqueue process into ks7010_sme_enqueue_events Sergio Paracuellos
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit extract ks_wlan_private initialization process
into a new function ks7010_private_init to improve a bit
readability.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 50 ++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 22 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 5b3e814..c14721e 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -848,6 +848,33 @@ static void ks7010_sdio_init_irqs(struct sdio_func *func,
 		netdev_err(priv->net_dev, " err : INT_ENABLE\n");
 }
 
+static void ks7010_private_init(struct ks_wlan_private *priv,
+				struct ks_sdio_card *card,
+				struct net_device *netdev)
+{
+	/* private memory initialize */
+	priv->ks_sdio_card = card;
+
+	priv->dev_state = DEVICE_STATE_PREBOOT;
+	priv->net_dev = netdev;
+	priv->firmware_version[0] = '\0';
+	priv->version_size = 0;
+	priv->last_doze = jiffies;
+	priv->last_wakeup = jiffies;
+	memset(&priv->nstats, 0, sizeof(priv->nstats));
+	memset(&priv->wstats, 0, sizeof(priv->wstats));
+
+	/* sleep mode */
+	atomic_set(&priv->sleepstatus.doze_request, 0);
+	atomic_set(&priv->sleepstatus.wakeup_request, 0);
+	atomic_set(&priv->sleepstatus.wakeup_request, 0);
+
+	trx_device_init(priv);
+	hostif_init(priv);
+	ks_wlan_net_start(netdev);
+	ks7010_init_defaults(priv);
+}
+
 static int ks7010_sdio_probe(struct sdio_func *func,
 			     const struct sdio_device_id *device)
 {
@@ -903,28 +930,7 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 	card->priv = priv;
 	SET_NETDEV_DEV(netdev, &card->func->dev);	/* for create sysfs symlinks */
 
-	/* private memory initialize */
-	priv->ks_sdio_card = card;
-
-	priv->dev_state = DEVICE_STATE_PREBOOT;
-	priv->net_dev = netdev;
-	priv->firmware_version[0] = '\0';
-	priv->version_size = 0;
-	priv->last_doze = jiffies;
-	priv->last_wakeup = jiffies;
-	memset(&priv->nstats, 0, sizeof(priv->nstats));
-	memset(&priv->wstats, 0, sizeof(priv->wstats));
-
-	/* sleep mode */
-	atomic_set(&priv->sleepstatus.doze_request, 0);
-	atomic_set(&priv->sleepstatus.wakeup_request, 0);
-	atomic_set(&priv->sleepstatus.wakeup_request, 0);
-
-	trx_device_init(priv);
-	hostif_init(priv);
-	ks_wlan_net_start(netdev);
-
-	ks7010_init_defaults(priv);
+	ks7010_private_init(priv, card, netdev);
 
 	ret = ks7010_upload_firmware(card);
 	if (ret) {
-- 
2.7.4

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

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

* [PATCH v3 6/9] staging: ks7010: factor out initial enqueue process into ks7010_sme_enqueue_events
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (4 preceding siblings ...)
  2018-04-03 15:12 ` [PATCH v3 5/9] staging: ks7010: factor out ks_wlan_private init process into ks7010_private_init Sergio Paracuellos
@ 2018-04-03 15:12 ` Sergio Paracuellos
  2018-04-03 15:13 ` [PATCH v3 7/9] staging: ks7010: fix error handling in ks7010_upload_firmware Sergio Paracuellos
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:12 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit extract initial enqueue process into a new
ks7010_sme_enqueue_events function.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index c14721e..5b6c7a7 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -730,21 +730,8 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card)
 	return ret;
 }
 
-static void ks7010_card_init(struct ks_wlan_private *priv)
+static void ks7010_sme_enqueue_events(struct ks_wlan_private *priv)
 {
-	init_completion(&priv->confirm_wait);
-
-	/* get mac address & firmware version */
-	hostif_sme_enqueue(priv, SME_START);
-
-	if (!wait_for_completion_interruptible_timeout
-	    (&priv->confirm_wait, 5 * HZ)) {
-		netdev_dbg(priv->net_dev, "wait time out!! SME_START\n");
-	}
-
-	if (priv->mac_address_valid && priv->version_size != 0)
-		priv->dev_state = DEVICE_STATE_PREINIT;
-
 	hostif_sme_enqueue(priv, SME_GET_EEPROM_CKSUM);
 
 	/* load initial wireless parameter */
@@ -763,6 +750,24 @@ static void ks7010_card_init(struct ks_wlan_private *priv)
 	hostif_sme_enqueue(priv, SME_RSN_ENABLED_REQUEST);
 	hostif_sme_enqueue(priv, SME_MODE_SET_REQUEST);
 	hostif_sme_enqueue(priv, SME_START_REQUEST);
+}
+
+static void ks7010_card_init(struct ks_wlan_private *priv)
+{
+	init_completion(&priv->confirm_wait);
+
+	/* get mac address & firmware version */
+	hostif_sme_enqueue(priv, SME_START);
+
+	if (!wait_for_completion_interruptible_timeout
+	    (&priv->confirm_wait, 5 * HZ)) {
+		netdev_dbg(priv->net_dev, "wait time out!! SME_START\n");
+	}
+
+	if (priv->mac_address_valid && priv->version_size != 0)
+		priv->dev_state = DEVICE_STATE_PREINIT;
+
+	ks7010_sme_enqueue_events(priv);
 
 	if (!wait_for_completion_interruptible_timeout
 	    (&priv->confirm_wait, 5 * HZ)) {
-- 
2.7.4

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

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

* [PATCH v3 7/9] staging: ks7010: fix error handling in ks7010_upload_firmware
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (5 preceding siblings ...)
  2018-04-03 15:12 ` [PATCH v3 6/9] staging: ks7010: factor out initial enqueue process into ks7010_sme_enqueue_events Sergio Paracuellos
@ 2018-04-03 15:13 ` Sergio Paracuellos
  2018-04-03 15:13 ` [PATCH v3 8/9] staging: ks7010: ks7010: factor out firmware copy process into ks7010_copy_firmware Sergio Paracuellos
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:13 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit checks missing error code check when checking
if the firmware is running reading General Communication
Register A (GCR_A).

It also set ret to EBUSY if firmware is running before
copying it.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 5b6c7a7..10e697d 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -657,8 +657,11 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card)
 
 	/* Firmware running ? */
 	ret = ks7010_sdio_readb(priv, GCR_A, &byte);
+	if (ret)
+		goto release_host_and_free;
 	if (byte == GCR_A_RUN) {
 		netdev_dbg(priv->net_dev, "MAC firmware running ...\n");
+		ret = -EBUSY;
 		goto release_host_and_free;
 	}
 
-- 
2.7.4

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

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

* [PATCH v3 8/9] staging: ks7010: ks7010: factor out firmware copy process into ks7010_copy_firmware
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (6 preceding siblings ...)
  2018-04-03 15:13 ` [PATCH v3 7/9] staging: ks7010: fix error handling in ks7010_upload_firmware Sergio Paracuellos
@ 2018-04-03 15:13 ` Sergio Paracuellos
  2018-04-03 15:13 ` [PATCH v3 9/9] staging: ks7010: fix some style issues about long lines Sergio Paracuellos
  2018-04-04 10:04 ` [PATCH v3 0/9] staging: ks7010: factor out some functions Dan Carpenter
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:13 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit extracts firmware copy process into a new function
ks7010_copy_firmware. Because rom_buf is only needed for this
process, memory request for it has been also moved to this new
function so the error handling label release_host_and_free has
been renamed to release_host into ks7010_upload_firmware original
function.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 72 +++++++++++++++++++++---------------
 1 file changed, 43 insertions(+), 29 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 10e697d..2b3552f 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -639,40 +639,22 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address,
 	return ret;
 }
 
-static int ks7010_upload_firmware(struct ks_sdio_card *card)
+static int ks7010_copy_firmware(struct ks_wlan_private *priv,
+				const struct firmware *fw_entry)
 {
-	struct ks_wlan_private *priv = card->priv;
-	unsigned int size, offset, n = 0;
+	unsigned int length;
+	unsigned int size;
+	unsigned int offset;
+	unsigned int n = 0;
 	unsigned char *rom_buf;
-	unsigned char byte = 0;
 	int ret;
-	unsigned int length;
-	const struct firmware *fw_entry = NULL;
 
 	rom_buf = kmalloc(ROM_BUFF_SIZE, GFP_KERNEL);
 	if (!rom_buf)
 		return -ENOMEM;
 
-	sdio_claim_host(card->func);
-
-	/* Firmware running ? */
-	ret = ks7010_sdio_readb(priv, GCR_A, &byte);
-	if (ret)
-		goto release_host_and_free;
-	if (byte == GCR_A_RUN) {
-		netdev_dbg(priv->net_dev, "MAC firmware running ...\n");
-		ret = -EBUSY;
-		goto release_host_and_free;
-	}
-
-	ret = request_firmware(&fw_entry, ROM_FILE,
-			       &priv->ks_sdio_card->func->dev);
-	if (ret)
-		goto release_host_and_free;
-
 	length = fw_entry->size;
 
-	n = 0;
 	do {
 		if (length >= ROM_BUFF_SIZE) {
 			size = ROM_BUFF_SIZE;
@@ -688,21 +670,54 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card)
 		offset = n;
 		ret = ks7010_sdio_update_index(priv, KS7010_IRAM_ADDRESS + offset);
 		if (ret)
-			goto release_firmware;
+			goto free_rom_buf;
 
 		ret = ks7010_sdio_write(priv, DATA_WINDOW, rom_buf, size);
 		if (ret)
-			goto release_firmware;
+			goto free_rom_buf;
 
 		ret = ks7010_sdio_data_compare(priv, DATA_WINDOW, rom_buf, size);
 		if (ret)
-			goto release_firmware;
+			goto free_rom_buf;
 
 		n += size;
 
 	} while (size);
 
 	ret = ks7010_sdio_writeb(priv, GCR_A, GCR_A_REMAP);
+
+free_rom_buf:
+	kfree(rom_buf);
+	return ret;
+}
+
+static int ks7010_upload_firmware(struct ks_sdio_card *card)
+{
+	struct ks_wlan_private *priv = card->priv;
+	unsigned int n;
+	unsigned char byte = 0;
+	int ret;
+	const struct firmware *fw_entry = NULL;
+
+
+	sdio_claim_host(card->func);
+
+	/* Firmware running ? */
+	ret = ks7010_sdio_readb(priv, GCR_A, &byte);
+	if (ret)
+		goto release_host;
+	if (byte == GCR_A_RUN) {
+		netdev_dbg(priv->net_dev, "MAC firmware running ...\n");
+		ret = -EBUSY;
+		goto release_host;
+	}
+
+	ret = request_firmware(&fw_entry, ROM_FILE,
+			       &priv->ks_sdio_card->func->dev);
+	if (ret)
+		goto release_host;
+
+	ret = ks7010_copy_firmware(priv, fw_entry);
 	if (ret)
 		goto release_firmware;
 
@@ -726,9 +741,8 @@ static int ks7010_upload_firmware(struct ks_sdio_card *card)
 
  release_firmware:
 	release_firmware(fw_entry);
- release_host_and_free:
+ release_host:
 	sdio_release_host(card->func);
-	kfree(rom_buf);
 
 	return ret;
 }
-- 
2.7.4

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

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

* [PATCH v3 9/9] staging: ks7010: fix some style issues about long lines
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (7 preceding siblings ...)
  2018-04-03 15:13 ` [PATCH v3 8/9] staging: ks7010: ks7010: factor out firmware copy process into ks7010_copy_firmware Sergio Paracuellos
@ 2018-04-03 15:13 ` Sergio Paracuellos
  2018-04-04 10:04 ` [PATCH v3 0/9] staging: ks7010: factor out some functions Dan Carpenter
  9 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-03 15:13 UTC (permalink / raw)
  To: gregkh; +Cc: driverdev-devel, wsa

This commit just fixes some checkpatch reported issues about
lines longer than 80 characters.

A new blank line has been added also to improve readability.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 2b3552f..737959d 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -665,10 +665,12 @@ static int ks7010_copy_firmware(struct ks_wlan_private *priv,
 		}
 		if (size == 0)
 			break;
+
 		memcpy(rom_buf, fw_entry->data + n, size);
 
 		offset = n;
-		ret = ks7010_sdio_update_index(priv, KS7010_IRAM_ADDRESS + offset);
+		ret = ks7010_sdio_update_index(priv,
+					       KS7010_IRAM_ADDRESS + offset);
 		if (ret)
 			goto free_rom_buf;
 
@@ -676,7 +678,8 @@ static int ks7010_copy_firmware(struct ks_wlan_private *priv,
 		if (ret)
 			goto free_rom_buf;
 
-		ret = ks7010_sdio_data_compare(priv, DATA_WINDOW, rom_buf, size);
+		ret = ks7010_sdio_data_compare(priv,
+					       DATA_WINDOW, rom_buf, size);
 		if (ret)
 			goto free_rom_buf;
 
-- 
2.7.4

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

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

* Re: [PATCH v3 0/9] staging: ks7010: factor out some functions
  2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
                   ` (8 preceding siblings ...)
  2018-04-03 15:13 ` [PATCH v3 9/9] staging: ks7010: fix some style issues about long lines Sergio Paracuellos
@ 2018-04-04 10:04 ` Dan Carpenter
  2018-04-04 15:43   ` Sergio Paracuellos
  9 siblings, 1 reply; 12+ messages in thread
From: Dan Carpenter @ 2018-04-04 10:04 UTC (permalink / raw)
  To: Sergio Paracuellos; +Cc: gregkh, driverdev-devel, wsa

Looks good.  Thanks!

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>

regards,
dan carpenter

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

* Re: [PATCH v3 0/9] staging: ks7010: factor out some functions
  2018-04-04 10:04 ` [PATCH v3 0/9] staging: ks7010: factor out some functions Dan Carpenter
@ 2018-04-04 15:43   ` Sergio Paracuellos
  0 siblings, 0 replies; 12+ messages in thread
From: Sergio Paracuellos @ 2018-04-04 15:43 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: Greg KH, driverdev-devel, wsa

On Wed, Apr 4, 2018 at 12:04 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> Looks good.  Thanks!
>
> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>

Thanks for reviewing, Dan!

>
> regards,
> dan carpenter
>

Best regards,
    Sergio Paracuellos
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

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

end of thread, other threads:[~2018-04-04 15:43 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-03 15:12 [PATCH v3 0/9] staging: ks7010: factor out some functions Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 1/9] staging: ks7010: remove unnecessary 'out of memory' message Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 2/9] staging: ks7010: factor out irq enable process to ks7010_sdio_init_irqs Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 3/9] staging: ks7010: fix label to jump to in error case Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 4/9] staging: ks7010: factor out irq setup process to ks7010_sdio_setup_irqs Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 5/9] staging: ks7010: factor out ks_wlan_private init process into ks7010_private_init Sergio Paracuellos
2018-04-03 15:12 ` [PATCH v3 6/9] staging: ks7010: factor out initial enqueue process into ks7010_sme_enqueue_events Sergio Paracuellos
2018-04-03 15:13 ` [PATCH v3 7/9] staging: ks7010: fix error handling in ks7010_upload_firmware Sergio Paracuellos
2018-04-03 15:13 ` [PATCH v3 8/9] staging: ks7010: ks7010: factor out firmware copy process into ks7010_copy_firmware Sergio Paracuellos
2018-04-03 15:13 ` [PATCH v3 9/9] staging: ks7010: fix some style issues about long lines Sergio Paracuellos
2018-04-04 10:04 ` [PATCH v3 0/9] staging: ks7010: factor out some functions Dan Carpenter
2018-04-04 15:43   ` Sergio Paracuellos

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.