Re: [PATCH] reset: add reset_control_status helper function

2014-10-09 Thread Dinh Nguyen
Hi Philipp,

On 10/9/14, 3:44 AM, Philipp Zabel wrote:
> Hi Dinh,
> 
> thank you for the patch. Just two small issues below:
> 
> Am Mittwoch, den 08.10.2014, 17:45 -0500 schrieb 
> dingu...@opensource.altera.com:
> [...]
>> @@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
>>  EXPORT_SYMBOL_GPL(reset_control_deassert);
>>  
>>  /**
>> + * reset_control_status - returns a status of a reset bit
>> + * @rstc: reset controller
>> + */
>> +unsigned int reset_control_status(struct reset_control *rstc)
>> +{
>> +if (rstc->rcdev->ops->status)
>> +return rstc->rcdev->ops->status(rstc->rcdev, rstc->id);
>> +
>> +return -ENOSYS;
>> +}
>> +EXPORT_SYMBOL_GPL(reset_control_status);
> 
> Since this function can return negative error numbers, please make the
> return value of reset_control_status int. That also means that drivers
> must not set the MSB when returning status.

Ah yes...Don't why I changed it to unsigned int for the return.

> 
>> +
>> +/**
>>   * of_reset_control_get - Lookup and obtain a reference to a reset 
>> controller.
>>   * @node: device to be reset by the controller
>>   * @id: reset line name
>> diff --git a/include/linux/reset-controller.h 
>> b/include/linux/reset-controller.h
>> index 41a4695..8e659d5 100644
>> --- a/include/linux/reset-controller.h
>> +++ b/include/linux/reset-controller.h
>> @@ -17,6 +17,7 @@ struct reset_control_ops {
>>  int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
>>  int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
>>  int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
>> +unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
>> long id);
>>  };
> 
> Please change the return value of the status callback to int and
> describe it in the kerneldoc comment above. It should probably be
> mentioned that the returned status value must be >= 0 except in error
> cases.
>  
Will do for V2...

Dinh
--
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] reset: add reset_control_status helper function

2014-10-09 Thread Philipp Zabel
Hi Dinh,

thank you for the patch. Just two small issues below:

Am Mittwoch, den 08.10.2014, 17:45 -0500 schrieb dingu...@opensource.altera.com:
[...]
> @@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
>  EXPORT_SYMBOL_GPL(reset_control_deassert);
>  
>  /**
> + * reset_control_status - returns a status of a reset bit
> + * @rstc: reset controller
> + */
> +unsigned int reset_control_status(struct reset_control *rstc)
> +{
> + if (rstc->rcdev->ops->status)
> + return rstc->rcdev->ops->status(rstc->rcdev, rstc->id);
> +
> + return -ENOSYS;
> +}
> +EXPORT_SYMBOL_GPL(reset_control_status);

Since this function can return negative error numbers, please make the
return value of reset_control_status int. That also means that drivers
must not set the MSB when returning status.

> +
> +/**
>   * of_reset_control_get - Lookup and obtain a reference to a reset 
> controller.
>   * @node: device to be reset by the controller
>   * @id: reset line name
> diff --git a/include/linux/reset-controller.h 
> b/include/linux/reset-controller.h
> index 41a4695..8e659d5 100644
> --- a/include/linux/reset-controller.h
> +++ b/include/linux/reset-controller.h
> @@ -17,6 +17,7 @@ struct reset_control_ops {
>   int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
>   int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
>   int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
> + unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
> long id);
>  };

Please change the return value of the status callback to int and
describe it in the kerneldoc comment above. It should probably be
mentioned that the returned status value must be >= 0 except in error
cases.
 
regards
Philipp

--
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] reset: add reset_control_status helper function

2014-10-09 Thread Philipp Zabel
Hi Dinh,

thank you for the patch. Just two small issues below:

Am Mittwoch, den 08.10.2014, 17:45 -0500 schrieb dingu...@opensource.altera.com:
[...]
 @@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
  EXPORT_SYMBOL_GPL(reset_control_deassert);
  
  /**
 + * reset_control_status - returns a status of a reset bit
 + * @rstc: reset controller
 + */
 +unsigned int reset_control_status(struct reset_control *rstc)
 +{
 + if (rstc-rcdev-ops-status)
 + return rstc-rcdev-ops-status(rstc-rcdev, rstc-id);
 +
 + return -ENOSYS;
 +}
 +EXPORT_SYMBOL_GPL(reset_control_status);

Since this function can return negative error numbers, please make the
return value of reset_control_status int. That also means that drivers
must not set the MSB when returning status.

 +
 +/**
   * of_reset_control_get - Lookup and obtain a reference to a reset 
 controller.
   * @node: device to be reset by the controller
   * @id: reset line name
 diff --git a/include/linux/reset-controller.h 
 b/include/linux/reset-controller.h
 index 41a4695..8e659d5 100644
 --- a/include/linux/reset-controller.h
 +++ b/include/linux/reset-controller.h
 @@ -17,6 +17,7 @@ struct reset_control_ops {
   int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
   int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
   int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
 + unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
 long id);
  };

Please change the return value of the status callback to int and
describe it in the kerneldoc comment above. It should probably be
mentioned that the returned status value must be = 0 except in error
cases.
 
regards
Philipp

--
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] reset: add reset_control_status helper function

2014-10-09 Thread Dinh Nguyen
Hi Philipp,

On 10/9/14, 3:44 AM, Philipp Zabel wrote:
 Hi Dinh,
 
 thank you for the patch. Just two small issues below:
 
 Am Mittwoch, den 08.10.2014, 17:45 -0500 schrieb 
 dingu...@opensource.altera.com:
 [...]
 @@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
  EXPORT_SYMBOL_GPL(reset_control_deassert);
  
  /**
 + * reset_control_status - returns a status of a reset bit
 + * @rstc: reset controller
 + */
 +unsigned int reset_control_status(struct reset_control *rstc)
 +{
 +if (rstc-rcdev-ops-status)
 +return rstc-rcdev-ops-status(rstc-rcdev, rstc-id);
 +
 +return -ENOSYS;
 +}
 +EXPORT_SYMBOL_GPL(reset_control_status);
 
 Since this function can return negative error numbers, please make the
 return value of reset_control_status int. That also means that drivers
 must not set the MSB when returning status.

Ah yes...Don't why I changed it to unsigned int for the return.

 
 +
 +/**
   * of_reset_control_get - Lookup and obtain a reference to a reset 
 controller.
   * @node: device to be reset by the controller
   * @id: reset line name
 diff --git a/include/linux/reset-controller.h 
 b/include/linux/reset-controller.h
 index 41a4695..8e659d5 100644
 --- a/include/linux/reset-controller.h
 +++ b/include/linux/reset-controller.h
 @@ -17,6 +17,7 @@ struct reset_control_ops {
  int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
  int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
  int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
 +unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
 long id);
  };
 
 Please change the return value of the status callback to int and
 describe it in the kerneldoc comment above. It should probably be
 mentioned that the returned status value must be = 0 except in error
 cases.
  
Will do for V2...

Dinh
--
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] reset: add reset_control_status helper function

2014-10-08 Thread dinguyen
From: Dinh Nguyen 

There are cases where a system will want to read a reset status bit before
doing any other toggling. Add a reset_control_status helper function to the
reset controller API.

Signed-off-by: Dinh Nguyen 
---
 drivers/reset/core.c | 13 +
 include/linux/reset-controller.h |  1 +
 include/linux/reset.h|  7 +++
 3 files changed, 21 insertions(+)

diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index baeaf82..06387a4 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
 EXPORT_SYMBOL_GPL(reset_control_deassert);
 
 /**
+ * reset_control_status - returns a status of a reset bit
+ * @rstc: reset controller
+ */
+unsigned int reset_control_status(struct reset_control *rstc)
+{
+   if (rstc->rcdev->ops->status)
+   return rstc->rcdev->ops->status(rstc->rcdev, rstc->id);
+
+   return -ENOSYS;
+}
+EXPORT_SYMBOL_GPL(reset_control_status);
+
+/**
  * of_reset_control_get - Lookup and obtain a reference to a reset controller.
  * @node: device to be reset by the controller
  * @id: reset line name
diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
index 41a4695..8e659d5 100644
--- a/include/linux/reset-controller.h
+++ b/include/linux/reset-controller.h
@@ -17,6 +17,7 @@ struct reset_control_ops {
int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
+   unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
long id);
 };
 
 struct module;
diff --git a/include/linux/reset.h b/include/linux/reset.h
index 349f150..09233ee 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -10,6 +10,7 @@ struct reset_control;
 int reset_control_reset(struct reset_control *rstc);
 int reset_control_assert(struct reset_control *rstc);
 int reset_control_deassert(struct reset_control *rstc);
+unsigned int reset_control_status(struct reset_control *rstc);
 
 struct reset_control *reset_control_get(struct device *dev, const char *id);
 void reset_control_put(struct reset_control *rstc);
@@ -57,6 +58,12 @@ static inline int reset_control_deassert(struct 
reset_control *rstc)
return 0;
 }
 
+static inline unsigned int reset_control_status(struct reset_control *rstc)
+{
+   WARN_ON(1);
+   return 0;
+}
+
 static inline void reset_control_put(struct reset_control *rstc)
 {
WARN_ON(1);
-- 
2.0.3

--
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] reset: add reset_control_status helper function

2014-10-08 Thread dinguyen
From: Dinh Nguyen dingu...@opensource.altera.com

There are cases where a system will want to read a reset status bit before
doing any other toggling. Add a reset_control_status helper function to the
reset controller API.

Signed-off-by: Dinh Nguyen dingu...@opensource.altera.com
---
 drivers/reset/core.c | 13 +
 include/linux/reset-controller.h |  1 +
 include/linux/reset.h|  7 +++
 3 files changed, 21 insertions(+)

diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index baeaf82..06387a4 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -126,6 +126,19 @@ int reset_control_deassert(struct reset_control *rstc)
 EXPORT_SYMBOL_GPL(reset_control_deassert);
 
 /**
+ * reset_control_status - returns a status of a reset bit
+ * @rstc: reset controller
+ */
+unsigned int reset_control_status(struct reset_control *rstc)
+{
+   if (rstc-rcdev-ops-status)
+   return rstc-rcdev-ops-status(rstc-rcdev, rstc-id);
+
+   return -ENOSYS;
+}
+EXPORT_SYMBOL_GPL(reset_control_status);
+
+/**
  * of_reset_control_get - Lookup and obtain a reference to a reset controller.
  * @node: device to be reset by the controller
  * @id: reset line name
diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
index 41a4695..8e659d5 100644
--- a/include/linux/reset-controller.h
+++ b/include/linux/reset-controller.h
@@ -17,6 +17,7 @@ struct reset_control_ops {
int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);
int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);
int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);
+   unsigned int (*status)(struct reset_controller_dev *rcdev, unsigned 
long id);
 };
 
 struct module;
diff --git a/include/linux/reset.h b/include/linux/reset.h
index 349f150..09233ee 100644
--- a/include/linux/reset.h
+++ b/include/linux/reset.h
@@ -10,6 +10,7 @@ struct reset_control;
 int reset_control_reset(struct reset_control *rstc);
 int reset_control_assert(struct reset_control *rstc);
 int reset_control_deassert(struct reset_control *rstc);
+unsigned int reset_control_status(struct reset_control *rstc);
 
 struct reset_control *reset_control_get(struct device *dev, const char *id);
 void reset_control_put(struct reset_control *rstc);
@@ -57,6 +58,12 @@ static inline int reset_control_deassert(struct 
reset_control *rstc)
return 0;
 }
 
+static inline unsigned int reset_control_status(struct reset_control *rstc)
+{
+   WARN_ON(1);
+   return 0;
+}
+
 static inline void reset_control_put(struct reset_control *rstc)
 {
WARN_ON(1);
-- 
2.0.3

--
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/