* [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.