power_spi.c: Rewrite pmic_reg function
PATCH 1/1 power_spi.c: Rewrite pmic_reg function
The pmic_spi_free function isn't ever used, and as the frameworks stand today, cannot be, so remove it. Integrate the probe function into pmic_reg as it's not really a "probe" today. Finally, add an err label for the common failure cases.
--- drivers/power/power_spi.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
drivers/power/power_spi.c +10 -23
@@ -17,27 +17,14 @@static struct spi_slave *slave; -void pmic_spi_free (struct spi_slave *slave) -{ -if (slave) -spi_free_slave (slave); -} - -struct spi_slave *pmic_spi_probe (struct pmic *p) -{ -return spi_setup_slave (p->bus, - p->hw.spi.cs, - p->hw.spi.clk, - p->hw.spi.mode); -} -static u32 pmic_reg (struct pmic *p,u32 reg,u32 *val,u32 write) {u32 pmic_tx, pmic_rx;u32 tmp;if (!slave) { - slave =pmic_spi_probe (p); + slave =spi_setup_slave (p->bus, p->hw.spi.cs, p->hw.spi.clk, + p->hw.spi.mode);if (!slave)return -1 ;
@@ -54,25 +41,25 @@ static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write) tmp =cpu_to_be32 (pmic_tx);if (spi_xfer (slave, pmic_spi_bitlen, &tmp, &pmic_rx, - pmic_spi_flags)) { -spi_release_bus (slave); -return -1 ; - } + pmic_spi_flags)) + goto err;if (write) { pmic_tx = p->hw.spi.prepare_tx (reg, val,0 ); tmp =cpu_to_be32 (pmic_tx);if (spi_xfer (slave, pmic_spi_bitlen, &tmp, &pmic_rx, - pmic_spi_flags)) { -spi_release_bus (slave); -return -1 ; - } + pmic_spi_flags)) + goto err; }spi_release_bus (slave); *val =cpu_to_be32 (pmic_rx);return 0 ; + +err: +spi_release_bus (slave); +return -1 ; }int pmic_reg_write (struct pmic *p,u32 reg,u32 val)
Signature · 1 line
1.7.9.5
PATCH 1/1 power_spi.c: Rewrite pmic_reg function
Hi Tom.
Quoted 2 lines · Tom Rini
The
pmic_spi_freefunction isn't ever used, and as the frameworks stand today, cannot be, so remove it.
That's right - it was originally implemented to have a symmetric interface, but never used.
Quoted 71 lines
Integrate the probe function into
pmic_regas it's not really a "probe" today. Finally, add an err label for the common failure cases.Cc Lukasz Majewski <[email protected]>Cc Przemyslaw Marczak <[email protected]>Cc Stefano Babic <[email protected]>Signed-off-by Tom Rini <[email protected]>--- drivers/power/power_spi.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)drivers/power/power_spi.c +6
-23@@ -17,27 +17,14 @@static struct spi_slave *slave; -void pmic_spi_free (struct spi_slave *slave) -{ -if (slave) -spi_free_slave (slave); -} - -struct spi_slave *pmic_spi_probe (struct pmic *p) -{ -return spi_setup_slave (p->bus, - p->hw.spi.cs, - p->hw.spi.clk, - p->hw.spi.mode); -} -static u32 pmic_reg (struct pmic *p,u32 reg,u32 *val,u32 write) {u32 pmic_tx, pmic_rx;u32 tmp;if (!slave) { - slave =pmic_spi_probe (p); + slave =spi_setup_slave (p->bus, p->hw.spi.cs, p->hw.spi.clk, + p->hw.spi.mode);if (!slave)return -1 ;@@ -54,25 +41,25 @@ static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write) tmp =cpu_to_be32 (pmic_tx);if (spi_xfer (slave, pmic_spi_bitlen, &tmp, &pmic_rx, - pmic_spi_flags)) { -spi_release_bus (slave); -return -1 ; - } + pmic_spi_flags)) + goto err;if (write) { pmic_tx = p->hw.spi.prepare_tx (reg, val,0 ); tmp =cpu_to_be32 (pmic_tx);if (spi_xfer (slave, pmic_spi_bitlen, &tmp, &pmic_rx, - pmic_spi_flags)) { -spi_release_bus (slave); -return -1 ; - } + pmic_spi_flags)) + goto err; }spi_release_bus (slave);
drivers/power/power_spi.c static u32 pmic_reg(struct pmic *p, u32 reg, u32 *val, u32 write) · line 65
Quoted 10 lines
drivers/power/power_spi.c +4
-0*val =cpu_to_be32 (pmic_rx);return 0 ; + +err: +spi_release_bus (slave); +return -1 ; }int pmic_reg_write (struct pmic *p,u32 reg,u32 val)
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
Quoted 10 lines · Tom Rini
The
pmic_spi_freefunction isn't ever used, and as the frameworks stand today, cannot be, so remove it. Integrate the probe function intopmic_regas it's not really a "probe" today. Finally, add an err label for the common failure cases.Cc Lukasz Majewski <[email protected]>Cc Przemyslaw Marczak <[email protected]>Cc Stefano Babic <[email protected]>Signed-off-by Tom Rini <[email protected]>Acked-by Stefano Babic <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20141110/36eec3a0/attachment.pgp>