blob: b00ac0f4560747c440a9beec6fc027736124c7d5 [file] [log] [blame]
Harald Welte605e3e42012-03-06 23:15:42 +01001#include <stdint.h>
2
3#include <spi/spi.h>
4
5#include "idt82v2081.h"
6
7/* Adaption layer between idt82 driver and at91lib SPI driver */
8
9#define B_READ (1 << 5)
10
11/* backend function for core idt82 driver */
12int idt82_reg_read(struct idt82 *idt, uint8_t reg)
13{
14 uint16_t res;
15
16 SPI_Write(idt->priv, idt->cs, (reg & 0x1F) | B_READ);
17 while (!SPI_IsFinished(idt->priv));
18 res = SPI_Read(idt->priv, idt->cs);
19
20 return res >> 8;
21}
22/* backend function for core idt82 driver */
23int idt82_reg_write(struct idt82 *idt, uint8_t reg, uint8_t val)
24{
25 SPI_Write(idt->priv, idt->cs, (reg & 0x1F) | B_READ | (val << 8));
26
27 return 0;
28}
29
30/* initialize the SPI interface to the IDT82 */
31int idt82_at91_init(struct idt82 *idt, void *spi, unsigned int id,
32 uint8_t cs, uint32_t spi_mr, uint32_t csr)
33{
34 idt->priv = spi;
35
36 SPI_Configure(spi, id, spi_mr);
37 SPI_ConfigureNCPS(spi, cs, csr);
38 SPI_Enable(spi);
39}