mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-09-05 20:49:19 +03:00
[adm5120] use a shadow value for the write-only GPIO_CONF2 register
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9715 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
444d504487
commit
f2a4b6b5a6
@ -74,6 +74,8 @@ static struct led_desc led_table[15] = {
|
|||||||
|
|
||||||
static struct adm5120_gpio_line adm5120_gpio_map[ADM5120_GPIO_COUNT];
|
static struct adm5120_gpio_line adm5120_gpio_map[ADM5120_GPIO_COUNT];
|
||||||
|
|
||||||
|
static u32 gpio_conf2;
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static inline int gpio_is_invalid(unsigned gpio)
|
static inline int gpio_is_invalid(unsigned gpio)
|
||||||
@ -340,11 +342,8 @@ EXPORT_SYMBOL(adm5120_irq_to_gpio);
|
|||||||
|
|
||||||
void __init adm5120_gpio_csx0_enable(void)
|
void __init adm5120_gpio_csx0_enable(void)
|
||||||
{
|
{
|
||||||
u32 t;
|
gpio_conf2 |= GPIO_CONF2_CSX0;
|
||||||
|
SW_WRITE_REG(GPIO_CONF2, gpio_conf2);
|
||||||
t = SW_READ_REG(GPIO_CONF2);
|
|
||||||
t |= GPIO_CONF2_CSX0;
|
|
||||||
SW_WRITE_REG(GPIO_CONF2, t);
|
|
||||||
|
|
||||||
adm5120_gpio_map[ADM5120_GPIO_PIN1].flags &= ~GPIO_FLAG_VALID;
|
adm5120_gpio_map[ADM5120_GPIO_PIN1].flags &= ~GPIO_FLAG_VALID;
|
||||||
adm5120_gpio_map[ADM5120_GPIO_PIN2].irq = ADM5120_IRQ_GPIO2;
|
adm5120_gpio_map[ADM5120_GPIO_PIN2].irq = ADM5120_IRQ_GPIO2;
|
||||||
@ -352,11 +351,8 @@ void __init adm5120_gpio_csx0_enable(void)
|
|||||||
|
|
||||||
void __init adm5120_gpio_csx1_enable(void)
|
void __init adm5120_gpio_csx1_enable(void)
|
||||||
{
|
{
|
||||||
u32 t;
|
gpio_conf2 |= GPIO_CONF2_CSX1;
|
||||||
|
SW_WRITE_REG(GPIO_CONF2, gpio_conf2);
|
||||||
t = SW_READ_REG(GPIO_CONF2);
|
|
||||||
t |= GPIO_CONF2_CSX1;
|
|
||||||
SW_WRITE_REG(GPIO_CONF2, t);
|
|
||||||
|
|
||||||
adm5120_gpio_map[ADM5120_GPIO_PIN3].flags &= ~GPIO_FLAG_VALID;
|
adm5120_gpio_map[ADM5120_GPIO_PIN3].flags &= ~GPIO_FLAG_VALID;
|
||||||
if (adm5120_package_bga())
|
if (adm5120_package_bga())
|
||||||
@ -365,11 +361,8 @@ void __init adm5120_gpio_csx1_enable(void)
|
|||||||
|
|
||||||
void __init adm5120_gpio_ew_enable(void)
|
void __init adm5120_gpio_ew_enable(void)
|
||||||
{
|
{
|
||||||
u32 t;
|
gpio_conf2 |= GPIO_CONF2_EW;
|
||||||
|
SW_WRITE_REG(GPIO_CONF2, gpio_conf2);
|
||||||
t = SW_READ_REG(GPIO_CONF2);
|
|
||||||
t |= GPIO_CONF2_EW;
|
|
||||||
SW_WRITE_REG(GPIO_CONF2, t);
|
|
||||||
|
|
||||||
adm5120_gpio_map[ADM5120_GPIO_PIN0].flags &= ~GPIO_FLAG_VALID;
|
adm5120_gpio_map[ADM5120_GPIO_PIN0].flags &= ~GPIO_FLAG_VALID;
|
||||||
}
|
}
|
||||||
@ -378,7 +371,8 @@ void __init adm5120_gpio_init(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
SW_WRITE_REG(GPIO_CONF2, 0);
|
gpio_conf2 = 0;
|
||||||
|
SW_WRITE_REG(GPIO_CONF2, gpio_conf2);
|
||||||
|
|
||||||
for (i = 0; i < ADM5120_GPIO_COUNT; i++)
|
for (i = 0; i < ADM5120_GPIO_COUNT; i++)
|
||||||
adm5120_gpio_map[i].flags = GPIO_FLAG_VALID;
|
adm5120_gpio_map[i].flags = GPIO_FLAG_VALID;
|
||||||
|
Loading…
Reference in New Issue
Block a user