diff options
| author | Ćukasz Majewski <l.majewski@samsung.com> | 2012-11-13 03:22:13 +0000 | 
|---|---|---|
| committer | Anatolij Gustschin <agust@denx.de> | 2012-11-14 11:21:12 +0100 | 
| commit | 316a51beba19f1e0004be27329462ce6616a945c (patch) | |
| tree | 97b8ac71ec3e65a54368d5e91748ff863e143f6a /drivers/power/power_spi.c | |
| parent | 7d19629f8ee62c594629cd998ba7d89a4fc8ec18 (diff) | |
| download | olio-uboot-2014.01-316a51beba19f1e0004be27329462ce6616a945c.tar.xz olio-uboot-2014.01-316a51beba19f1e0004be27329462ce6616a945c.zip | |
power:pmic: Rename ./drivers/power/pmic_* to ./drivers/power/power_* files
Rename pmic/power related files at ./drivers/power directory
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Stefano Babic <sbabic@denx.de>
Diffstat (limited to 'drivers/power/power_spi.c')
| -rw-r--r-- | drivers/power/power_spi.c | 108 | 
1 files changed, 108 insertions, 0 deletions
| diff --git a/drivers/power/power_spi.c b/drivers/power/power_spi.c new file mode 100644 index 000000000..27488ea5d --- /dev/null +++ b/drivers/power/power_spi.c @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2011 Samsung Electronics + * Lukasz Majewski <l.majewski@samsung.com> + * + * (C) Copyright 2010 + * Stefano Babic, DENX Software Engineering, sbabic@denx.de + * + * (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 + */ + +#include <common.h> +#include <linux/types.h> +#include <power/pmic.h> +#include <spi.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); + +		if (!slave) +			return -1; +	} + +	if (check_reg(p, reg)) +		return -1; + +	if (spi_claim_bus(slave)) +		return -1; + +	pmic_tx = p->hw.spi.prepare_tx(reg, val, 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; +	} + +	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; +		} +	} + +	spi_release_bus(slave); +	*val = cpu_to_be32(pmic_rx); + +	return 0; +} + +int pmic_reg_write(struct pmic *p, u32 reg, u32 val) +{ +	if (pmic_reg(p, reg, &val, 1)) +		return -1; + +	return 0; +} + +int pmic_reg_read(struct pmic *p, u32 reg, u32 *val) +{ +	if (pmic_reg(p, reg, val, 0)) +		return -1; + +	return 0; +} |