
11 Jun
2012
11 Jun
'12
4:58 p.m.
Hi Fabio,
On 6/10/2012 8:08 PM, Fabio Estevam wrote:
On Sun, Jun 10, 2012 at 10:03 AM, Vikram Narayananvikram186@gmail.com wrote:
/* drop PHY power and assert reset (low) */
val = readl(&gpio4->gpio_dr)& ~((1<< 7) | (1<< 9));
writel(val,&gpio4->gpio_dr);
val = readl(&gpio4->gpio_dir) | (1<< 7) | (1<< 9);
writel(val,&gpio4->gpio_dir);
gpio_direction_output(GPIO_FEC_RESET_B, 0);
gpio_direction_output(GPIO_FEC_ENABLE_B, 0);
gpio_direction_output(GPIO_FEC_RESET_B, 1);
gpio_direction_output(GPIO_FEC_ENABLE_B, 1);
gpio_direction_output should be set only once for each GPIO.
After you set the direction (input or output) you should use 'gpio_set_value' for setting the GPIO to 0 or 1.
That was my understanding too. But some board file used it in the above way. Hope I got a wrong example. I'll fix this.
Also, please remove the:
gpio_direction_output(GPIO_FEC_RESET_B, 1);
gpio_direction_output(GPIO_FEC_ENABLE_B, 1);
lines, as the setting to 1 should be after the delay (via gpio_set_value).
Any idea about the delay value?
Thanks, Vikram