summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/ps2ser.c22
-rw-r--r--drivers/mmc/bfin_sdh.c14
-rw-r--r--drivers/serial/ns16550.c39
-rw-r--r--drivers/spi/bfin_spi.c18
4 files changed, 53 insertions, 40 deletions
diff --git a/drivers/input/ps2ser.c b/drivers/input/ps2ser.c
index 1af3fde..1a5e2d4 100644
--- a/drivers/input/ps2ser.c
+++ b/drivers/input/ps2ser.c
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * (C) Copyright 2004
+ * (C) Copyright 2004-2009
* DENX Software Engineering
* Wolfgang Denk, wd@denx.de
* All rights reserved.
@@ -18,9 +18,11 @@
#include <asm/io.h>
#include <asm/atomic.h>
#include <ps2mult.h>
-#if defined(CONFIG_SYS_NS16550) || defined(CONFIG_MPC85xx)
-#include <ns16550.h>
+/* This is needed for ns16550.h */
+#ifndef CONFIG_SYS_NS16550_REG_SIZE
+#define CONFIG_SYS_NS16550_REG_SIZE 1
#endif
+#include <ns16550.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -128,12 +130,12 @@ int ps2ser_init(void)
NS16550_t com_port = (NS16550_t)COM_BASE;
com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE | LCR_8N1;
+ com_port->lcr = UART_LCR_BKSE | UART_LCR_8N1;
com_port->dll = (CONFIG_SYS_NS16550_CLK / 16 / PS2SER_BAUD) & 0xff;
com_port->dlm = ((CONFIG_SYS_NS16550_CLK / 16 / PS2SER_BAUD) >> 8) & 0xff;
- com_port->lcr = LCR_8N1;
- com_port->mcr = (MCR_DTR | MCR_RTS);
- com_port->fcr = (FCR_FIFO_EN | FCR_RXSR | FCR_TXSR);
+ com_port->lcr = UART_LCR_8N1;
+ com_port->mcr = (UART_MCR_DTR | UART_MCR_RTS);
+ com_port->fcr = (UART_FCR_FIFO_EN | UART_FCR_RXSR | UART_FCR_TXSR);
return (0);
}
@@ -202,7 +204,7 @@ void ps2ser_putc(int chr)
psc->psc_buffer_8 = chr;
#elif defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
defined(CONFIG_MPC8548) || defined(CONFIG_MPC8555)
- while ((com_port->lsr & LSR_THRE) == 0);
+ while ((com_port->lsr & UART_LSR_THRE) == 0);
com_port->thr = chr;
#else
while (!(ps2ser_in(UART_LSR) & UART_LSR_THRE));
@@ -227,7 +229,7 @@ static int ps2ser_getc_hw(void)
}
#elif defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
defined(CONFIG_MPC8548) || defined(CONFIG_MPC8555)
- if (com_port->lsr & LSR_DR) {
+ if (com_port->lsr & UART_LSR_DR) {
res = com_port->rbr;
}
#else
@@ -315,7 +317,7 @@ static void ps2ser_interrupt(void *dev_id)
} while (status & PSC_SR_RXRDY);
#elif defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
defined(CONFIG_MPC8548) || defined(CONFIG_MPC8555)
- } while (status & LSR_DR);
+ } while (status & UART_LSR_DR);
#else
} while (status & UART_IIR_RDI);
#endif
diff --git a/drivers/mmc/bfin_sdh.c b/drivers/mmc/bfin_sdh.c
index 7d6b495..16c9695 100644
--- a/drivers/mmc/bfin_sdh.c
+++ b/drivers/mmc/bfin_sdh.c
@@ -293,7 +293,7 @@ mmc_bwrite(int dev, unsigned long start, lbaint_t blkcnt, const void *buffer)
printf("MMC_CMD_SET_BLOCKLEN failed\n");
goto out;
}
- ret = mmc_cmd(MMC_CMD_WRITE_BLOCK,
+ ret = mmc_cmd(MMC_CMD_WRITE_SINGLE_BLOCK,
start * mmc_blkdev.blksz, resp,
MMC_RSP_R1);
if (ret) {
@@ -462,7 +462,7 @@ static int mmc_init_card(struct mmc_cid *cid, int verbose)
return ret;
}
-int mmc_init(int verbose)
+int mmc_legacy_init(int verbose)
{
__u16 pwr_ctl = 0;
int ret;
@@ -530,16 +530,6 @@ int mmc_init(int verbose)
return 0;
}
-int mmc_read(ulong src, uchar *dst, int size)
-{
- return -ENOSYS;
-}
-
-int mmc_write(uchar *src, ulong dst, int size)
-{
- return -ENOSYS;
-}
-
int mmc2info(ulong addr)
{
return 0;
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 397f5df..657c9da 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -7,9 +7,12 @@
#include <config.h>
#include <ns16550.h>
-#define LCRVAL LCR_8N1 /* 8 data, 1 stop, no parity */
-#define MCRVAL (MCR_DTR | MCR_RTS) /* RTS/DTR */
-#define FCRVAL (FCR_FIFO_EN | FCR_RXSR | FCR_TXSR) /* Clear & enable FIFOs */
+#define UART_LCRVAL UART_LCR_8N1 /* 8 data, 1 stop, no parity */
+#define UART_MCRVAL (UART_MCR_DTR | \
+ UART_MCR_RTS) /* RTS/DTR */
+#define UART_FCRVAL (UART_FCR_FIFO_EN | \
+ UART_FCR_RXSR | \
+ UART_FCR_TXSR) /* Clear & enable FIFOs */
void NS16550_init (NS16550_t com_port, int baud_divisor)
{
@@ -17,16 +20,16 @@ void NS16550_init (NS16550_t com_port, int baud_divisor)
#ifdef CONFIG_OMAP
com_port->mdr1 = 0x7; /* mode select reset TL16C750*/
#endif
- com_port->lcr = LCR_BKSE | LCRVAL;
+ com_port->lcr = UART_LCR_BKSE | UART_LCRVAL;
com_port->dll = 0;
com_port->dlm = 0;
- com_port->lcr = LCRVAL;
- com_port->mcr = MCRVAL;
- com_port->fcr = FCRVAL;
- com_port->lcr = LCR_BKSE | LCRVAL;
+ com_port->lcr = UART_LCRVAL;
+ com_port->mcr = UART_MCRVAL;
+ com_port->fcr = UART_FCRVAL;
+ com_port->lcr = UART_LCR_BKSE | UART_LCRVAL;
com_port->dll = baud_divisor & 0xff;
com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCRVAL;
+ com_port->lcr = UART_LCRVAL;
#if defined(CONFIG_OMAP)
#if defined(CONFIG_APTIX)
com_port->mdr1 = 3; /* /13 mode so Aptix 6MHz can hit 115200 */
@@ -40,29 +43,29 @@ void NS16550_init (NS16550_t com_port, int baud_divisor)
void NS16550_reinit (NS16550_t com_port, int baud_divisor)
{
com_port->ier = 0x00;
- com_port->lcr = LCR_BKSE | LCRVAL;
+ com_port->lcr = UART_LCR_BKSE | UART_LCRVAL;
com_port->dll = 0;
com_port->dlm = 0;
- com_port->lcr = LCRVAL;
- com_port->mcr = MCRVAL;
- com_port->fcr = FCRVAL;
- com_port->lcr = LCR_BKSE;
+ com_port->lcr = UART_LCRVAL;
+ com_port->mcr = UART_MCRVAL;
+ com_port->fcr = UART_FCRVAL;
+ com_port->lcr = UART_LCR_BKSE;
com_port->dll = baud_divisor & 0xff;
com_port->dlm = (baud_divisor >> 8) & 0xff;
- com_port->lcr = LCRVAL;
+ com_port->lcr = UART_LCRVAL;
}
#endif /* CONFIG_NS16550_MIN_FUNCTIONS */
void NS16550_putc (NS16550_t com_port, char c)
{
- while ((com_port->lsr & LSR_THRE) == 0);
+ while ((com_port->lsr & UART_LSR_THRE) == 0);
com_port->thr = c;
}
#ifndef CONFIG_NS16550_MIN_FUNCTIONS
char NS16550_getc (NS16550_t com_port)
{
- while ((com_port->lsr & LSR_DR) == 0) {
+ while ((com_port->lsr & UART_LSR_DR) == 0) {
#ifdef CONFIG_USB_TTY
extern void usbtty_poll(void);
usbtty_poll();
@@ -73,7 +76,7 @@ char NS16550_getc (NS16550_t com_port)
int NS16550_tstc (NS16550_t com_port)
{
- return ((com_port->lsr & LSR_DR) != 0);
+ return ((com_port->lsr & UART_LSR_DR) != 0);
}
#endif /* CONFIG_NS16550_MIN_FUNCTIONS */
diff --git a/drivers/spi/bfin_spi.c b/drivers/spi/bfin_spi.c
index 0472c1a..bc3394a 100644
--- a/drivers/spi/bfin_spi.c
+++ b/drivers/spi/bfin_spi.c
@@ -36,6 +36,11 @@ MAKE_SPI_FUNC(SPI_BAUD, 0x14)
__attribute__((weak))
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
{
+#if defined(__ADSPBF538__) || defined(__ADSPBF539__)
+ /* The SPI1/SPI2 buses are weird ... only 1 CS */
+ if (bus > 0 && cs != 1)
+ return 0;
+#endif
return (cs >= 1 && cs <= 7);
}
@@ -204,6 +209,19 @@ static void spi_portmux(struct spi_slave *slave)
}
bfin_write_PORT_MUX(mux);
bfin_write_PORTF_FER(f_fer);
+#elif defined(__ADSPBF538__) || defined(__ADSPBF539__)
+ u16 fer, pins;
+ if (slave->bus == 1)
+ pins = PD0 | PD1 | PD2 | (slave->cs == 1 ? PD4 : 0);
+ else if (slave->bus == 2)
+ pins = PD5 | PD6 | PD7 | (slave->cs == 1 ? PD9 : 0);
+ else
+ pins = 0;
+ if (pins) {
+ fer = bfin_read_PORTDIO_FER();
+ fer &= ~pins;
+ bfin_write_PORTDIO_FER(fer);
+ }
#elif defined(__ADSPBF54x__)
#define DO_MUX(port, pin) \
mux = ((mux & ~PORT_x_MUX_##pin##_MASK) | PORT_x_MUX_##pin##_FUNC_1); \