04.05.2013, 18:39, "John Crispin" <j...@phrozen.org>:
> Hi
>
> i just pushed a fix that addresses this problem properly ... (i hope)
>


+       of_property_read_string(np, "ralink,uartmux", &uart);
+       if (uart) {
+               mode |= rt_gpio_pinmux.uart_mask << rt_gpio_pinmux.uart_shift;
+               if (ralink_mux_mask(uart, rt_gpio_pinmux.uart, &m)) {
+                       pr_err("pinmux: failed to load uartmux \"%s\"\n", uart);
+               } else {
+                       if (m != rt_gpio_pinmux.uart_mask)
+                               mode &= ~(m << rt_gpio_pinmux.uart_shift);
+                       pr_debug("pinmux: registered uartmux \"%s\"\n", uart);
+               }
+       }

No need to check. This code obviously set inverted modes: 0->7 (uartf->gpio), 
1->6 and so on. I think it should look like:

+       of_property_read_string(np, "ralink,uartmux", &uart);
+       if (uart) {
+               mode |= rt_gpio_pinmux.uart_mask << rt_gpio_pinmux.uart_shift;  
                    /* set default gpio mode*/
+               if (ralink_mux_mask(uart, rt_gpio_pinmux.uart, &m)) {
+                       pr_err("pinmux: failed to load uartmux \"%s\, set 
\"gpio\" mode"\n", uart);
+               } else {
+                       mode &= ~(rt_gpio_pinmux.uart_mask << 
rt_gpio_pinmux.uart_shift);        /* clean gpio mode */
+                       mode |= (m << rt_gpio_pinmux.uart_shift);               
                               /* and set requested mode*/
+                       pr_debug("pinmux: registered uartmux \"%s\"\n", uart);
+               }
+       }

or 

+       of_property_read_string(np, "ralink,uartmux", &uart);
+       if (uart) {
+               if (ralink_mux_mask(uart, rt_gpio_pinmux.uart, &m)) {
+                       mode |= rt_gpio_pinmux.uart_mask << 
rt_gpio_pinmux.uart_shift;             /* set default gpio mode*/
+                       pr_err("pinmux: failed to load uartmux \"%s\, set 
\"gpio\" mode"\n", uart);
+               } else {
+                       mode |= (m << rt_gpio_pinmux.uart_shift);               
                               /* sipmly set requested mode*/
+                       pr_debug("pinmux: registered uartmux \"%s\"\n", uart);
+               }
+       }

Am I right?

---
serge
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to