Thread (21 messages) 21 messages, 3 authors, 2014-09-01

[PATCH v2 0/3] gpio: syscon: reuse for keystone 2 socs

From: grygorii.strashko@ti.com (Grygorii Strashko)
Date: 2014-08-28 17:32:25
Also in: linux-devicetree, linux-gpio

Hi Alexander, All,

On 08/21/2014 07:51 PM, Alexander Shiyan wrote:
quoted hunk ↗ jump to hunk
Thu, 21 Aug 2014 19:23:20 +0300 ?? Grygorii Strashko [off-list ref]:
quoted
Hi All,

Alexander,

I've updated gpio-syscon as requested in [3].
I still don't like it, but any way I did it :(

Linus,

I'd very appreciated if you can comment on these series.
Personally, I like v1 [3], because this v2 is not elegant and will
require constant code patching in case of adding new SoCs or new SoC's versions.

This series intended to integrate Keystone 2 DSP GPIO controller functionality
into gpio-syscon driver (drivers/gpio/gpio-syscon.c) as requested
by Linus Walleij in [1].

On Keystone SOCs, ARM host can send interrupts to DSP cores using the
DSP GPIO controller IP. Each DSP GPIO controller provides 28 IRQ signals for
each DSP core. This is one of the component used by the IPC mechanism used
on Keystone SOCs.

Keystone 2 DSP GPIO controller has specific features:
- each GPIO can be configured only as output pin;
- setting GPIO value to 1 causes IRQ generation on target DSP core;
- reading pin value returns 0 - if IRQ was handled or 1 - IRQ is still
   pending.

The gpio-syscon driver was need to be updated to satisfy Keystone 2 SoC
requirements:
- special sequence of operations need to be used to assign output GPIO value.
    As result, first patch introduces SoC specific callback .set() to configure
    output GPIO value.

Also, patch 3 was added to illustrate DSP GPIO configuration in DT used by Keystone 2.

Related sicussions:
  [1] https://lkml.org/lkml/2014/7/16/170
  [2] https://lkml.org/lkml/2014/7/23/352
  [3] https://www.mail-archive.com/devicetree at vger.kernel.org/msg37863.html

Grygorii Strashko (3):
   gpio: syscon: add soc specific callback to assign output value
   gpio: syscon: reuse for keystone 2 socs
   ARM: dts: keystone-k2hk: add dsp gpio controllers nodes

  .../bindings/gpio/gpio-mctrl-keystone.txt          |   42 ++++++
  arch/arm/boot/dts/k2hk.dtsi                        |   48 +++++++
  drivers/gpio/gpio-syscon.c                         |  140 ++++++++++++++++++++
  3 files changed, 230 insertions(+)
  create mode 100644 Documentation/devicetree/bindings/gpio/gpio-mctrl-keystone.txt
1. mctrl -> dsp in filenames
2. mctrl -> dsp in documentation.
3. Here is a more elegant solution for first part.
--- gpio-syscon.c.old	2014-08-19 09:46:09.000000000 +0400
+++ gpio-syscon.c	2014-08-21 20:45:49.357529323 +0400
@@ -111,7 +111,7 @@
  				   BIT(offs % SYSCON_REG_BITS));
  	}
  
-	syscon_gpio_set(chip, offset, val);
+	priv->data->set(chip, offset, val);
  
  	return 0;
  }
@@ -159,7 +159,7 @@
  	if (priv->data->flags & GPIO_SYSCON_FEAT_IN)
  		priv->chip.direction_input = syscon_gpio_dir_in;
  	if (priv->data->flags & GPIO_SYSCON_FEAT_OUT) {
-		priv->chip.set = syscon_gpio_set;
+		priv->chip.set = priv->data->set ? : syscon_gpio_set;
  		priv->chip.direction_output = syscon_gpio_dir_out;
  	}
yep. It's better.

Thanks for your comments.
I'll wait few days with hope to get some comments from comunity
(as I'm still thinking v1 is better :) then will update it and re-send.

Regards,
-grygorii
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help