Jump to content

Search the Community

Showing results for tags 'gpio'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Keenetic Community
    • Keenetic Development
    • Keenetic Community Support
    • KeeneticOS Testing
    • Mobile App
    • Keenetic RMM
  • Open Package Support
    • Opkg Help
    • Opkg Cookbook
    • Opkg Cookbook RUS

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Location


Web-site


Interests


Occupation


AOL Account


ICQ Account


WLM


YAHOO


Facebook Account


Twitter Account


Skype Account


Youtube Account


Google+ Account


Keenetic

Found 1 result

  1. Доброго дня. В ядре 3.4 при сбросе внешних радио чипов в процессоре MT7621 используется Read-Modify-Write операция с регистром RALINK_GPIO_DATA0 тут и тут. Суть проблемы в том, что операция выполняется не тат как ожидается, потому что при чтении берутся значения не ранее записанные в этот регистр, а непосредственно с gpio выводов, если gpio в режиме входа (см. руководство по программированию, стр. 67). Для записи без модификации ранее записанных данных правильно использовать регистры DSET и DCLR. Предлагаю следующий патч: diff --git a/arch/mips/rt2880/pci.c b/arch/mips/rt2880/pci.c index a2a007cf6..4a6363e24 100644 --- a/arch/mips/rt2880/pci.c +++ b/arch/mips/rt2880/pci.c @@ -112,7 +112,8 @@ static int pcie_link_status = 0; #define GPIO_PCIE_PORT2 7 // TXD3 (I2S_WS) #endif #define RALINK_GPIO_CTRL0 *(volatile u32 *)(RALINK_PIO_BASE + 0x00) -#define RALINK_GPIO_DATA0 *(volatile u32 *)(RALINK_PIO_BASE + 0x20) +#define RALINK_GPIO_DSET0 *(volatile u32 *)(RALINK_PIO_BASE + 0x30) +#define RALINK_GPIO_DCLR0 *(volatile u32 *)(RALINK_PIO_BASE + 0x40) #endif #define ASSERT_SYSRST_PCIE(val) do { \ @@ -639,7 +640,7 @@ int __init init_ralink_pci(void) mdelay(50); RALINK_GPIO_CTRL0 |= val; // switch PERST_N pin to output mode mdelay(50); - RALINK_GPIO_DATA0 &= ~(val); // fall PERST_N pin (reset peripherals) + RALINK_GPIO_DCLR0 = val; // fall PERST_N pin (reset peripherals) #else /* !defined (GPIO_PERST) */ RALINK_GPIOMODE &= ~(0x3<<PCIE_SHARE_PIN_SW); // fall PERST_N pin (reset peripherals) #endif @@ -687,7 +688,7 @@ int __init init_ralink_pci(void) #if defined (CONFIG_PCIE_PORT2) val |= (0x1<<GPIO_PCIE_PORT2); #endif - RALINK_GPIO_DATA0 |= val; // rise PERST_N pin (complete reset peripherals) + RALINK_GPIO_DSET0 = val; // rise PERST_N pin (complete reset peripherals) #else /* !defined (GPIO_PERST) */ RALINK_PCI_PCICFG_ADDR &= ~(1<<1); // release PCIRST #endif
×
×
  • Create New...