lkml.org 
[lkml]   [2015]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [serial] Calling platform specific code on driver bind/unbind
From
On Fri, Dec 4, 2015 at 11:37 PM, Piotr Madalinski
<piotr.madalinski@yahoo.pl> 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


\
 
 \ /
  Last update: 2015-12-13 01:21    [W:0.065 / U:0.844 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site