Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 350770
b: refs/heads/master
c: c4a31f4
h: refs/heads/master
v: v3
  • Loading branch information
Gabor Juhos authored and Grant Likely committed Feb 5, 2013
1 parent 8841e18 commit 89eb33f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 95d79419feffb326a3d5cb50e2248129dec06bb0
refs/heads/master: c4a31f43005512b366e8bfc346e7f14c1a7a1ba7
41 changes: 24 additions & 17 deletions trunk/drivers/spi/spi-ath79.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,8 @@ static void ath79_spi_chipselect(struct spi_device *spi, int is_active)

}

static int ath79_spi_setup_cs(struct spi_device *spi)
static void ath79_spi_enable(struct ath79_spi *sp)
{
struct ath79_spi *sp = ath79_spidev_to_sp(spi);
struct ath79_spi_controller_data *cdata;
int status;

cdata = spi->controller_data;
if (spi->chip_select && !cdata)
return -EINVAL;

/* enable GPIO mode */
ath79_spi_wr(sp, AR71XX_SPI_REG_FS, AR71XX_SPI_FS_GPIO);

Expand All @@ -115,6 +107,24 @@ static int ath79_spi_setup_cs(struct spi_device *spi)

/* TODO: setup speed? */
ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, 0x43);
}

static void ath79_spi_disable(struct ath79_spi *sp)
{
/* restore CTRL register */
ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, sp->reg_ctrl);
/* disable GPIO mode */
ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
}

static int ath79_spi_setup_cs(struct spi_device *spi)
{
struct ath79_spi_controller_data *cdata;
int status;

cdata = spi->controller_data;
if (spi->chip_select && !cdata)
return -EINVAL;

status = 0;
if (spi->chip_select) {
Expand All @@ -135,17 +145,10 @@ static int ath79_spi_setup_cs(struct spi_device *spi)

static void ath79_spi_cleanup_cs(struct spi_device *spi)
{
struct ath79_spi *sp = ath79_spidev_to_sp(spi);

if (spi->chip_select) {
struct ath79_spi_controller_data *cdata = spi->controller_data;
gpio_free(cdata->gpio);
}

/* restore CTRL register */
ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, sp->reg_ctrl);
/* disable GPIO mode */
ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
}

static int ath79_spi_setup(struct spi_device *spi)
Expand Down Expand Up @@ -268,12 +271,15 @@ static int ath79_spi_probe(struct platform_device *pdev)
dev_dbg(&pdev->dev, "register read/write delay is %u nsecs\n",
sp->rrw_delay);

ath79_spi_enable(sp);
ret = spi_bitbang_start(&sp->bitbang);
if (ret)
goto err_clk_disable;
goto err_disable;

return 0;

err_disable:
ath79_spi_disable(sp);
err_clk_disable:
clk_disable(sp->clk);
err_clk_put:
Expand All @@ -292,6 +298,7 @@ static int ath79_spi_remove(struct platform_device *pdev)
struct ath79_spi *sp = platform_get_drvdata(pdev);

spi_bitbang_stop(&sp->bitbang);
ath79_spi_disable(sp);
clk_disable(sp->clk);
clk_put(sp->clk);
iounmap(sp->base);
Expand Down

0 comments on commit 89eb33f

Please sign in to comment.