Skip to content
Snippets Groups Projects
Commit c87757e4 authored by Gianfranco Mariotti's avatar Gianfranco Mariotti
Browse files

[DRIVER] gpio expander PCAL6416: add dts properties to enable pull-ups

parent 2e3b2436
No related branches found
No related tags found
No related merge requests found
......@@ -34,6 +34,7 @@
#define PCA953X_OUTPUT 1
#define PCA953X_INVERT 2
#define PCA953X_DIRECTION 3
#define PCA953X_PULLUP 0x23
#define PCA_GPIO_MASK 0x00FF
#define PCA_INT 0x0100
......@@ -276,9 +277,10 @@ static int pca953x_probe(struct udevice *dev)
char name[32], label[8], *str;
int addr;
ulong driver_data;
int ret;
int ret, i;
int size;
const u8 *tmp;
char pull_buffer[50];
u8 val[MAX_BANK];
addr = dev_read_addr(dev);
......@@ -315,6 +317,28 @@ static int pca953x_probe(struct udevice *dev)
return ret;
}
/* Setting up pull-up */
memset(val, 0, MAX_BANK);
for ( i=0; i<16; i++ ) {
sprintf(pull_buffer, "pullup-%d", i);
if(dev_read_prop(dev, pull_buffer, &size) && i<8 )
val[0] |= (1<<i);
if(dev_read_prop(dev, pull_buffer, &size) && i>7 )
val[1] |= (1<<(i-8));
/* Debug gpio expander pull-up */
//if(dev_read_prop(dev, pull_buffer, &size))
// printf("dev_read_prop(dev, %s, &size) = 1\n",pull_buffer);
}
/* Enable internal pull-up */
ret = pca953x_write_regs(dev, PCA953X_PULLUP, val);
if (ret) {
dev_err(dev, "Error writing pull-up pull-down register\n");
return ret;
}
tmp = dev_read_prop(dev, "label", &size);
if (tmp) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment