power: regulator: lp873x: Add regulator support
[oweals/u-boot.git] / drivers / power / power_spi.c
index 27488ea5d929b6cd50c27b62b79396f0c8470cc1..1e554461f30706f091d788a1032f56808154c54d 100644 (file)
@@ -7,23 +7,7 @@
  *
  * (C) Copyright 2008-2009 Freescale Semiconductor, Inc.
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 
 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;
@@ -70,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)