Re: [serial] Calling platform specific code on driver bind/unbind

From: Andy Shevchenko
Date: Sat Dec 12 2015 - 18:58:21 EST

On Fri, Dec 4, 2015 at 11:37 PM, Piotr Madalinski
<piotr.madalinski@xxxxxxxx> wrote:
> Hi,
> I'm hacking my openwrt router and look for a proper way to make a serial
> driver call a platform-specific function such as this:
> static void ath79_enable_uart(void) {
> if (soc_is_ar933x())
> ath79_gpio_function_enable(AR933X_GPIO_FUNC_UART_EN);
> }
> and
> static void ath79_disable_uart(void) {
> if (soc_is_ar933x())
> ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_EN);
> }
> on driver bind/unbind instead of in platform initialization code, in order
> to be able to
> reuse the pins as gpio, without disabling uart entirely.
> My current solution uses platform_data to pass function pointers,
> and invokes them in driver's request_port and release_port functions
> respectively.
> And, oddly enough, the one in release_port gets invoked on unbind but the
> other one
> isn't called on bind (I had to add a call to it in probe to get it working).
> So I wonder, if the request/release functions are a proper place for such a
> callback,
> or is there some better, more 'canonical' solution.

pinctrl framework / API?

> Also, I could attach my patches but it is my first post here, and they are a
> bit openwrt specific,
> and I don't want to be yelled upon ;-).

With Best Regards,
Andy Shevchenko
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at