Lines 79-108
Link Here
|
79 |
static int |
79 |
static int |
80 |
am335x_pmic_read(device_t dev, uint8_t addr, uint8_t *data, uint8_t size) |
80 |
am335x_pmic_read(device_t dev, uint8_t addr, uint8_t *data, uint8_t size) |
81 |
{ |
81 |
{ |
82 |
struct am335x_pmic_softc *sc = device_get_softc(dev); |
82 |
return (iicdev_readfrom(dev, addr, data, size, IIC_INTRWAIT)); |
83 |
struct iic_msg msg[] = { |
|
|
84 |
{ sc->sc_addr, IIC_M_WR, 1, &addr }, |
85 |
{ sc->sc_addr, IIC_M_RD, size, data }, |
86 |
}; |
87 |
return (iicbus_transfer(dev, msg, 2)); |
88 |
} |
83 |
} |
89 |
|
84 |
|
90 |
static int |
85 |
static int |
91 |
am335x_pmic_write(device_t dev, uint8_t address, uint8_t *data, uint8_t size) |
86 |
am335x_pmic_write(device_t dev, uint8_t address, uint8_t *data, uint8_t size) |
92 |
{ |
87 |
{ |
93 |
uint8_t buffer[MAX_IIC_DATA_SIZE + 1]; |
|
|
94 |
struct am335x_pmic_softc *sc = device_get_softc(dev); |
95 |
struct iic_msg msg[] = { |
96 |
{ sc->sc_addr, IIC_M_WR, size + 1, buffer }, |
97 |
}; |
98 |
|
99 |
if (size > MAX_IIC_DATA_SIZE) |
88 |
if (size > MAX_IIC_DATA_SIZE) |
100 |
return (ENOMEM); |
89 |
return (ENOMEM); |
101 |
|
90 |
|
102 |
buffer[0] = address; |
91 |
return (iicdev_writeto(dev, address, data, size, IIC_INTRWAIT)); |
103 |
memcpy(buffer + 1, data, size); |
|
|
104 |
|
105 |
return (iicbus_transfer(dev, msg, 1)); |
106 |
} |
92 |
} |
107 |
|
93 |
|
108 |
static void |
94 |
static void |