Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-10 Thread Santosh Shilimkar
On Saturday 08 March 2014 12:09 AM, Arnd Bergmann wrote:
> On Friday 07 March 2014, Santosh Shilimkar wrote:
>> On Friday 07 March 2014 11:55 AM, Rob Herring wrote:
>>
>>> Thinking about this some more, if the arch is always coherent or
>>> always non-coherent, then the default ops are always fine. In that
>>> case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
>>> is a don't care.
>>>
>> Hmmm.. I guess you are right. In that case we can drop the need of
>> config option.
> 
> A compile-time config option clearly would not work here, because it
> breaks multiplatform support when some platforms are different from
> others. I can still see the possible need for a global run-time setting
> though, to give some platform init code the ability to override the
> DT flags when it knows better. That is probably what you want to do
> on keystone without LPAE.
> 
The compile time flag added was keeping in mind to be used per architecture
like ARM, X86 or powerpc on need basis. I understand that it might
be used by machines within the architectures but that was not my
intention. In any case config bit isn't a good idea.

Keystone without LPAE actually I don't need such an option. For
non-LPAE case, I need to modify the memory node and same goes
with dma-ranges info to use aliased address space.

How about we care about such an option when we actually need
it. As Rob pointed out, we are just fine for now with sane
defaults.

Regards,
Santosh

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-10 Thread Santosh Shilimkar
On Saturday 08 March 2014 12:09 AM, Arnd Bergmann wrote:
 On Friday 07 March 2014, Santosh Shilimkar wrote:
 On Friday 07 March 2014 11:55 AM, Rob Herring wrote:

 Thinking about this some more, if the arch is always coherent or
 always non-coherent, then the default ops are always fine. In that
 case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
 is a don't care.

 Hmmm.. I guess you are right. In that case we can drop the need of
 config option.
 
 A compile-time config option clearly would not work here, because it
 breaks multiplatform support when some platforms are different from
 others. I can still see the possible need for a global run-time setting
 though, to give some platform init code the ability to override the
 DT flags when it knows better. That is probably what you want to do
 on keystone without LPAE.
 
The compile time flag added was keeping in mind to be used per architecture
like ARM, X86 or powerpc on need basis. I understand that it might
be used by machines within the architectures but that was not my
intention. In any case config bit isn't a good idea.

Keystone without LPAE actually I don't need such an option. For
non-LPAE case, I need to modify the memory node and same goes
with dma-ranges info to use aliased address space.

How about we care about such an option when we actually need
it. As Rob pointed out, we are just fine for now with sane
defaults.

Regards,
Santosh

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-07 Thread Arnd Bergmann
On Friday 07 March 2014, Santosh Shilimkar wrote:
> On Friday 07 March 2014 11:55 AM, Rob Herring wrote:
>
> > Thinking about this some more, if the arch is always coherent or
> > always non-coherent, then the default ops are always fine. In that
> > case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
> > is a don't care.
> > 
> Hmmm.. I guess you are right. In that case we can drop the need of
> config option.

A compile-time config option clearly would not work here, because it
breaks multiplatform support when some platforms are different from
others. I can still see the possible need for a global run-time setting
though, to give some platform init code the ability to override the
DT flags when it knows better. That is probably what you want to do
on keystone without LPAE.

Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-07 Thread Arnd Bergmann
On Friday 07 March 2014, Santosh Shilimkar wrote:
 On Friday 07 March 2014 11:55 AM, Rob Herring wrote:

  Thinking about this some more, if the arch is always coherent or
  always non-coherent, then the default ops are always fine. In that
  case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
  is a don't care.
  
 Hmmm.. I guess you are right. In that case we can drop the need of
 config option.

A compile-time config option clearly would not work here, because it
breaks multiplatform support when some platforms are different from
others. I can still see the possible need for a global run-time setting
though, to give some platform init code the ability to override the
DT flags when it knows better. That is probably what you want to do
on keystone without LPAE.

Arnd
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
On Friday 07 March 2014 11:55 AM, Rob Herring wrote:
> On Thu, Mar 6, 2014 at 9:44 PM, Santosh Shilimkar
>  wrote:
>> On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
>>> On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
>>>  wrote:
 The of_dma_is_coherent() helper parses the given DT device
 node to see if the "dma-coherent" property is supported and
 returns true or false accordingly.

 For the architectures which are fully dma coherent and don't need per 
 device
 property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
 enables DMA coherent for all devices by default.
>>>
>>> This worries me. I killed off arch_is_coherent() for arm. Now we're
>>> adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
>>> which is different, but the names will be confusing. MIPS also has
>>> DMA_NONCOHERENT.
>>>
>> Thanks for comments Rob. I will address them in next version.
>> Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
>> while adding it. But as Arnd mentioned, there is a need to have a way
>> for the arch's which are fully coherent to use coherent ops by default.
>>
>> Am not sure whats the best way to have such support without imposing
>> any special updates on such arches.
> 
> Thinking about this some more, if the arch is always coherent or
> always non-coherent, then the default ops are always fine. In that
> case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
> is a don't care.
> 
Hmmm.. I guess you are right. In that case we can drop the need of
config option.

Regards,
Santosh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Rob Herring
On Thu, Mar 6, 2014 at 9:44 PM, Santosh Shilimkar
 wrote:
> On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
>> On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
>>  wrote:
>>> The of_dma_is_coherent() helper parses the given DT device
>>> node to see if the "dma-coherent" property is supported and
>>> returns true or false accordingly.
>>>
>>> For the architectures which are fully dma coherent and don't need per device
>>> property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
>>> enables DMA coherent for all devices by default.
>>
>> This worries me. I killed off arch_is_coherent() for arm. Now we're
>> adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
>> which is different, but the names will be confusing. MIPS also has
>> DMA_NONCOHERENT.
>>
> Thanks for comments Rob. I will address them in next version.
> Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
> while adding it. But as Arnd mentioned, there is a need to have a way
> for the arch's which are fully coherent to use coherent ops by default.
>
> Am not sure whats the best way to have such support without imposing
> any special updates on such arches.

Thinking about this some more, if the arch is always coherent or
always non-coherent, then the default ops are always fine. In that
case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
is a don't care.

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
> On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
>  wrote:
>> The of_dma_is_coherent() helper parses the given DT device
>> node to see if the "dma-coherent" property is supported and
>> returns true or false accordingly.
>>
>> For the architectures which are fully dma coherent and don't need per device
>> property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
>> enables DMA coherent for all devices by default.
> 
> This worries me. I killed off arch_is_coherent() for arm. Now we're
> adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
> which is different, but the names will be confusing. MIPS also has
> DMA_NONCOHERENT.
> 
Thanks for comments Rob. I will address them in next version.
Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
while adding it. But as Arnd mentioned, there is a need to have a way
for the arch's which are fully coherent to use coherent ops by default.

Am not sure whats the best way to have such support without imposing
any special updates on such arches.

Arnd, Any better alternative here ?

Regards,
Santosh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Rob Herring
On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
 wrote:
> The of_dma_is_coherent() helper parses the given DT device
> node to see if the "dma-coherent" property is supported and
> returns true or false accordingly.
>
> For the architectures which are fully dma coherent and don't need per device
> property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
> enables DMA coherent for all devices by default.

This worries me. I killed off arch_is_coherent() for arm. Now we're
adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
which is different, but the names will be confusing. MIPS also has
DMA_NONCOHERENT.

>
> Cc: Greg Kroah-Hartman 
> Cc: Russell King 
> Cc: Arnd Bergmann 
> Cc: Olof Johansson 
> Cc: Grant Likely 
> Cc: Rob Herring 
> Cc: Catalin Marinas 
> Cc: Linus Walleij 
> Signed-off-by: Santosh Shilimkar 
> ---
>  drivers/of/platform.c   |   31 +++
>  include/linux/of_platform.h |6 ++
>  2 files changed, 37 insertions(+)
>
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index 2265a55..bd080db 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -570,4 +570,35 @@ out:
> return ret;
>  }
>  EXPORT_SYMBOL_GPL(of_dma_get_range);
> +
> +/**
> + * of_dma_is_coherent - Check if device is coherent
> + * @np:device node
> + *
> + * It returns true if "dma-coherent" property was found
> + * for this device in DT.
> + */
> +#ifndef CONFIG_ARCH_IS_DMA_COHERENT
> +bool of_dma_is_coherent(struct device_node *np)
> +{
> +   struct device_node *node = np;
> +
> +   while (node) {

This screams for a for_each_parent_of_node helper.

> +   if (of_property_read_bool(node, "dma-coherent")) {
> +   of_node_put(node);
> +   return true;
> +   }
> +   node = of_get_next_parent(node);
> +   }
> +   return false;
> +}
> +EXPORT_SYMBOL_GPL(of_dma_is_coherent);
> +#else
> +inline bool of_dma_is_coherent(struct device_node *np)

This is in the header and should not be here.

> +{
> +   /* ARCH is fully dma coherent and don't need per device control */
> +   return true;
> +}
> +EXPORT_SYMBOL_GPL(of_dma_is_coherent);
> +#endif
>  #endif /* CONFIG_OF_ADDRESS */
> diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
> index ba7d3dc..48e0748 100644
> --- a/include/linux/of_platform.h
> +++ b/include/linux/of_platform.h
> @@ -74,6 +74,7 @@ extern int of_platform_populate(struct device_node *root,
> struct device *parent);
>  extern int of_dma_get_range(struct device_node *np, dma_addr_t *dma_addr,
> phys_addr_t *paddr, phys_addr_t *size);
> +extern bool of_dma_is_coherent(struct device_node *np);
>  #else
>  static inline int of_platform_populate(struct device_node *root,
> const struct of_device_id *matches,
> @@ -88,6 +89,11 @@ static inline int of_dma_get_range(struct device_node *np, 
> dma_addr_t *dma_addr,
>  {
> return -ENODEV;
>  }
> +
> +static inline bool of_dma_is_coherent(struct device_node *np)
> +{
> +   return false;
> +}
>  #endif

I don't think you have the ifdefs right here.

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
The of_dma_is_coherent() helper parses the given DT device
node to see if the "dma-coherent" property is supported and
returns true or false accordingly.

For the architectures which are fully dma coherent and don't need per device
property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
enables DMA coherent for all devices by default.

Cc: Greg Kroah-Hartman 
Cc: Russell King 
Cc: Arnd Bergmann 
Cc: Olof Johansson 
Cc: Grant Likely 
Cc: Rob Herring 
Cc: Catalin Marinas 
Cc: Linus Walleij 
Signed-off-by: Santosh Shilimkar 
---
 drivers/of/platform.c   |   31 +++
 include/linux/of_platform.h |6 ++
 2 files changed, 37 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 2265a55..bd080db 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -570,4 +570,35 @@ out:
return ret;
 }
 EXPORT_SYMBOL_GPL(of_dma_get_range);
+
+/**
+ * of_dma_is_coherent - Check if device is coherent
+ * @np:device node
+ *
+ * It returns true if "dma-coherent" property was found
+ * for this device in DT.
+ */
+#ifndef CONFIG_ARCH_IS_DMA_COHERENT
+bool of_dma_is_coherent(struct device_node *np)
+{
+   struct device_node *node = np;
+
+   while (node) {
+   if (of_property_read_bool(node, "dma-coherent")) {
+   of_node_put(node);
+   return true;
+   }
+   node = of_get_next_parent(node);
+   }
+   return false;
+}
+EXPORT_SYMBOL_GPL(of_dma_is_coherent);
+#else
+inline bool of_dma_is_coherent(struct device_node *np)
+{
+   /* ARCH is fully dma coherent and don't need per device control */
+   return true;
+}
+EXPORT_SYMBOL_GPL(of_dma_is_coherent);
+#endif
 #endif /* CONFIG_OF_ADDRESS */
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index ba7d3dc..48e0748 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -74,6 +74,7 @@ extern int of_platform_populate(struct device_node *root,
struct device *parent);
 extern int of_dma_get_range(struct device_node *np, dma_addr_t *dma_addr,
phys_addr_t *paddr, phys_addr_t *size);
+extern bool of_dma_is_coherent(struct device_node *np);
 #else
 static inline int of_platform_populate(struct device_node *root,
const struct of_device_id *matches,
@@ -88,6 +89,11 @@ static inline int of_dma_get_range(struct device_node *np, 
dma_addr_t *dma_addr,
 {
return -ENODEV;
 }
+
+static inline bool of_dma_is_coherent(struct device_node *np)
+{
+   return false;
+}
 #endif
 
 #endif /* _LINUX_OF_PLATFORM_H */
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
The of_dma_is_coherent() helper parses the given DT device
node to see if the dma-coherent property is supported and
returns true or false accordingly.

For the architectures which are fully dma coherent and don't need per device
property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
enables DMA coherent for all devices by default.

Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
Cc: Russell King li...@arm.linux.org.uk
Cc: Arnd Bergmann a...@arndb.de
Cc: Olof Johansson o...@lixom.net
Cc: Grant Likely grant.lik...@linaro.org
Cc: Rob Herring robh...@kernel.org
Cc: Catalin Marinas catalin.mari...@arm.com
Cc: Linus Walleij linus.wall...@linaro.org
Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com
---
 drivers/of/platform.c   |   31 +++
 include/linux/of_platform.h |6 ++
 2 files changed, 37 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 2265a55..bd080db 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -570,4 +570,35 @@ out:
return ret;
 }
 EXPORT_SYMBOL_GPL(of_dma_get_range);
+
+/**
+ * of_dma_is_coherent - Check if device is coherent
+ * @np:device node
+ *
+ * It returns true if dma-coherent property was found
+ * for this device in DT.
+ */
+#ifndef CONFIG_ARCH_IS_DMA_COHERENT
+bool of_dma_is_coherent(struct device_node *np)
+{
+   struct device_node *node = np;
+
+   while (node) {
+   if (of_property_read_bool(node, dma-coherent)) {
+   of_node_put(node);
+   return true;
+   }
+   node = of_get_next_parent(node);
+   }
+   return false;
+}
+EXPORT_SYMBOL_GPL(of_dma_is_coherent);
+#else
+inline bool of_dma_is_coherent(struct device_node *np)
+{
+   /* ARCH is fully dma coherent and don't need per device control */
+   return true;
+}
+EXPORT_SYMBOL_GPL(of_dma_is_coherent);
+#endif
 #endif /* CONFIG_OF_ADDRESS */
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index ba7d3dc..48e0748 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -74,6 +74,7 @@ extern int of_platform_populate(struct device_node *root,
struct device *parent);
 extern int of_dma_get_range(struct device_node *np, dma_addr_t *dma_addr,
phys_addr_t *paddr, phys_addr_t *size);
+extern bool of_dma_is_coherent(struct device_node *np);
 #else
 static inline int of_platform_populate(struct device_node *root,
const struct of_device_id *matches,
@@ -88,6 +89,11 @@ static inline int of_dma_get_range(struct device_node *np, 
dma_addr_t *dma_addr,
 {
return -ENODEV;
 }
+
+static inline bool of_dma_is_coherent(struct device_node *np)
+{
+   return false;
+}
 #endif
 
 #endif /* _LINUX_OF_PLATFORM_H */
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Rob Herring
On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
santosh.shilim...@ti.com wrote:
 The of_dma_is_coherent() helper parses the given DT device
 node to see if the dma-coherent property is supported and
 returns true or false accordingly.

 For the architectures which are fully dma coherent and don't need per device
 property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
 enables DMA coherent for all devices by default.

This worries me. I killed off arch_is_coherent() for arm. Now we're
adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
which is different, but the names will be confusing. MIPS also has
DMA_NONCOHERENT.


 Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
 Cc: Russell King li...@arm.linux.org.uk
 Cc: Arnd Bergmann a...@arndb.de
 Cc: Olof Johansson o...@lixom.net
 Cc: Grant Likely grant.lik...@linaro.org
 Cc: Rob Herring robh...@kernel.org
 Cc: Catalin Marinas catalin.mari...@arm.com
 Cc: Linus Walleij linus.wall...@linaro.org
 Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com
 ---
  drivers/of/platform.c   |   31 +++
  include/linux/of_platform.h |6 ++
  2 files changed, 37 insertions(+)

 diff --git a/drivers/of/platform.c b/drivers/of/platform.c
 index 2265a55..bd080db 100644
 --- a/drivers/of/platform.c
 +++ b/drivers/of/platform.c
 @@ -570,4 +570,35 @@ out:
 return ret;
  }
  EXPORT_SYMBOL_GPL(of_dma_get_range);
 +
 +/**
 + * of_dma_is_coherent - Check if device is coherent
 + * @np:device node
 + *
 + * It returns true if dma-coherent property was found
 + * for this device in DT.
 + */
 +#ifndef CONFIG_ARCH_IS_DMA_COHERENT
 +bool of_dma_is_coherent(struct device_node *np)
 +{
 +   struct device_node *node = np;
 +
 +   while (node) {

This screams for a for_each_parent_of_node helper.

 +   if (of_property_read_bool(node, dma-coherent)) {
 +   of_node_put(node);
 +   return true;
 +   }
 +   node = of_get_next_parent(node);
 +   }
 +   return false;
 +}
 +EXPORT_SYMBOL_GPL(of_dma_is_coherent);
 +#else
 +inline bool of_dma_is_coherent(struct device_node *np)

This is in the header and should not be here.

 +{
 +   /* ARCH is fully dma coherent and don't need per device control */
 +   return true;
 +}
 +EXPORT_SYMBOL_GPL(of_dma_is_coherent);
 +#endif
  #endif /* CONFIG_OF_ADDRESS */
 diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
 index ba7d3dc..48e0748 100644
 --- a/include/linux/of_platform.h
 +++ b/include/linux/of_platform.h
 @@ -74,6 +74,7 @@ extern int of_platform_populate(struct device_node *root,
 struct device *parent);
  extern int of_dma_get_range(struct device_node *np, dma_addr_t *dma_addr,
 phys_addr_t *paddr, phys_addr_t *size);
 +extern bool of_dma_is_coherent(struct device_node *np);
  #else
  static inline int of_platform_populate(struct device_node *root,
 const struct of_device_id *matches,
 @@ -88,6 +89,11 @@ static inline int of_dma_get_range(struct device_node *np, 
 dma_addr_t *dma_addr,
  {
 return -ENODEV;
  }
 +
 +static inline bool of_dma_is_coherent(struct device_node *np)
 +{
 +   return false;
 +}
  #endif

I don't think you have the ifdefs right here.

Rob
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
 On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
 santosh.shilim...@ti.com wrote:
 The of_dma_is_coherent() helper parses the given DT device
 node to see if the dma-coherent property is supported and
 returns true or false accordingly.

 For the architectures which are fully dma coherent and don't need per device
 property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
 enables DMA coherent for all devices by default.
 
 This worries me. I killed off arch_is_coherent() for arm. Now we're
 adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
 which is different, but the names will be confusing. MIPS also has
 DMA_NONCOHERENT.
 
Thanks for comments Rob. I will address them in next version.
Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
while adding it. But as Arnd mentioned, there is a need to have a way
for the arch's which are fully coherent to use coherent ops by default.

Am not sure whats the best way to have such support without imposing
any special updates on such arches.

Arnd, Any better alternative here ?

Regards,
Santosh
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Rob Herring
On Thu, Mar 6, 2014 at 9:44 PM, Santosh Shilimkar
santosh.shilim...@ti.com wrote:
 On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
 On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
 santosh.shilim...@ti.com wrote:
 The of_dma_is_coherent() helper parses the given DT device
 node to see if the dma-coherent property is supported and
 returns true or false accordingly.

 For the architectures which are fully dma coherent and don't need per device
 property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
 enables DMA coherent for all devices by default.

 This worries me. I killed off arch_is_coherent() for arm. Now we're
 adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
 which is different, but the names will be confusing. MIPS also has
 DMA_NONCOHERENT.

 Thanks for comments Rob. I will address them in next version.
 Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
 while adding it. But as Arnd mentioned, there is a need to have a way
 for the arch's which are fully coherent to use coherent ops by default.

 Am not sure whats the best way to have such support without imposing
 any special updates on such arches.

Thinking about this some more, if the arch is always coherent or
always non-coherent, then the default ops are always fine. In that
case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
is a don't care.

Rob
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] of: introduce of_dma_is_coherent() helper

2014-03-06 Thread Santosh Shilimkar
On Friday 07 March 2014 11:55 AM, Rob Herring wrote:
 On Thu, Mar 6, 2014 at 9:44 PM, Santosh Shilimkar
 santosh.shilim...@ti.com wrote:
 On Friday 07 March 2014 11:13 AM, Rob Herring wrote:
 On Thu, Mar 6, 2014 at 3:19 AM, Santosh Shilimkar
 santosh.shilim...@ti.com wrote:
 The of_dma_is_coherent() helper parses the given DT device
 node to see if the dma-coherent property is supported and
 returns true or false accordingly.

 For the architectures which are fully dma coherent and don't need per 
 device
 property, it can enable CONFIG_ARCH_IS_DMA_COHERENT config option which
 enables DMA coherent for all devices by default.

 This worries me. I killed off arch_is_coherent() for arm. Now we're
 adding something back. Also, we already have HAVE_GENERIC_DMA_COHERENT
 which is different, but the names will be confusing. MIPS also has
 DMA_NONCOHERENT.

 Thanks for comments Rob. I will address them in next version.
 Specifically about ARCH_IS_DMA_COHERENT, I wasn't very comfortable either
 while adding it. But as Arnd mentioned, there is a need to have a way
 for the arch's which are fully coherent to use coherent ops by default.

 Am not sure whats the best way to have such support without imposing
 any special updates on such arches.
 
 Thinking about this some more, if the arch is always coherent or
 always non-coherent, then the default ops are always fine. In that
 case set_arch_dma_coherent_ops is always a nop and of_dma_is_coherent
 is a don't care.
 
Hmmm.. I guess you are right. In that case we can drop the need of
config option.

Regards,
Santosh
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/