Re: [PATCH 3/4] extcon: arizona: Update manual headphone detection calculation

2014-05-30 Thread Charles Keepax
On Fri, May 30, 2014 at 10:27:35AM +0900, Chanwoo Choi wrote:
> Hi Charles,
> 
> On 05/30/2014 12:27 AM, Charles Keepax wrote:
> > The higher levels of impedance have a higher minimum value than the
> > first level. As the same value was used for all levels, higher impedances
> > were reported with a very low level of accuracy. This patch applies the
> > approriate lower threshold for each level.
> > 
> > Signed-off-by: Charles Keepax 
> > ---
> >  drivers/extcon/extcon-arizona.c |   13 -
> >  1 files changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/extcon/extcon-arizona.c 
> > b/drivers/extcon/extcon-arizona.c
> > index f2c36b1..c1c8647 100644
> > --- a/drivers/extcon/extcon-arizona.c
> > +++ b/drivers/extcon/extcon-arizona.c
> > @@ -329,12 +329,13 @@ static void arizona_stop_mic(struct 
> > arizona_extcon_info *info)
> >  }
> >  
> >  static struct {
> > +   unsigned int threshold;
> > unsigned int factor_a;
> > unsigned int factor_b;
> >  } arizona_hpdet_b_ranges[] = {
> > -   {  5528,   362464 },
> > -   { 11084,  6186851 },
> > -   { 11065, 65460395 },
> > +   { 100,  5528,   362464 },
> > +   { 169, 11084,  6186851 },
> > +   { 169, 11065, 65460395 },
> 
> If you possible, I want to know the 'unit' of the variable(factor_a, 
> factor_b).

I am not sure there are really especially sensible units to give.

> 
> >  };
> >  
> >  static struct {
> > @@ -391,7 +392,8 @@ static int arizona_hpdet_read(struct 
> > arizona_extcon_info *info)
> >>> ARIZONA_HP_IMPEDANCE_RANGE_SHIFT;
> >  
> > if (range < ARRAY_SIZE(arizona_hpdet_b_ranges) - 1 &&
> > -   (val < 100 || val >= 0x3fb)) {
> > +   (val < arizona_hpdet_b_ranges[range].threshold ||
> > +val >= 0x3fb)) {
> 
> I don't understand the meaning of 0x3fb hex value.
> I prefer to define constant variable for readability.

Thats fine I can add a define as part of this patch.

Thanks,
Charles
--
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/4] extcon: arizona: Update manual headphone detection calculation

2014-05-29 Thread Chanwoo Choi
Hi Charles,

On 05/30/2014 12:27 AM, Charles Keepax wrote:
> The higher levels of impedance have a higher minimum value than the
> first level. As the same value was used for all levels, higher impedances
> were reported with a very low level of accuracy. This patch applies the
> approriate lower threshold for each level.
> 
> Signed-off-by: Charles Keepax 
> ---
>  drivers/extcon/extcon-arizona.c |   13 -
>  1 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
> index f2c36b1..c1c8647 100644
> --- a/drivers/extcon/extcon-arizona.c
> +++ b/drivers/extcon/extcon-arizona.c
> @@ -329,12 +329,13 @@ static void arizona_stop_mic(struct arizona_extcon_info 
> *info)
>  }
>  
>  static struct {
> + unsigned int threshold;
>   unsigned int factor_a;
>   unsigned int factor_b;
>  } arizona_hpdet_b_ranges[] = {
> - {  5528,   362464 },
> - { 11084,  6186851 },
> - { 11065, 65460395 },
> + { 100,  5528,   362464 },
> + { 169, 11084,  6186851 },
> + { 169, 11065, 65460395 },

If you possible, I want to know the 'unit' of the variable(factor_a, factor_b).

>  };
>  
>  static struct {
> @@ -391,7 +392,8 @@ static int arizona_hpdet_read(struct arizona_extcon_info 
> *info)
>  >> ARIZONA_HP_IMPEDANCE_RANGE_SHIFT;
>  
>   if (range < ARRAY_SIZE(arizona_hpdet_b_ranges) - 1 &&
> - (val < 100 || val >= 0x3fb)) {
> + (val < arizona_hpdet_b_ranges[range].threshold ||
> +  val >= 0x3fb)) {

I don't understand the meaning of 0x3fb hex value.
I prefer to define constant variable for readability.

>   range++;
>   dev_dbg(arizona->dev, "Moving to HPDET range %d\n",
>   range);
> @@ -404,7 +406,8 @@ static int arizona_hpdet_read(struct arizona_extcon_info 
> *info)
>   }
>  
>   /* If we go out of range report top of range */
> - if (val < 100 || val >= 0x3fb) {
> + if (val < arizona_hpdet_b_ranges[range].threshold ||
> + val >= 0x3fb) {

ditto.

>   dev_dbg(arizona->dev, "Measurement out of range\n");
>   return ARIZONA_HPDET_MAX;
>   }
> 

Thanks,
Chanwoo Choi

--
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/4] extcon: arizona: Update manual headphone detection calculation

2014-05-29 Thread Charles Keepax
The higher levels of impedance have a higher minimum value than the
first level. As the same value was used for all levels, higher impedances
were reported with a very low level of accuracy. This patch applies the
approriate lower threshold for each level.

Signed-off-by: Charles Keepax 
---
 drivers/extcon/extcon-arizona.c |   13 -
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
index f2c36b1..c1c8647 100644
--- a/drivers/extcon/extcon-arizona.c
+++ b/drivers/extcon/extcon-arizona.c
@@ -329,12 +329,13 @@ static void arizona_stop_mic(struct arizona_extcon_info 
*info)
 }
 
 static struct {
+   unsigned int threshold;
unsigned int factor_a;
unsigned int factor_b;
 } arizona_hpdet_b_ranges[] = {
-   {  5528,   362464 },
-   { 11084,  6186851 },
-   { 11065, 65460395 },
+   { 100,  5528,   362464 },
+   { 169, 11084,  6186851 },
+   { 169, 11065, 65460395 },
 };
 
 static struct {
@@ -391,7 +392,8 @@ static int arizona_hpdet_read(struct arizona_extcon_info 
*info)
   >> ARIZONA_HP_IMPEDANCE_RANGE_SHIFT;
 
if (range < ARRAY_SIZE(arizona_hpdet_b_ranges) - 1 &&
-   (val < 100 || val >= 0x3fb)) {
+   (val < arizona_hpdet_b_ranges[range].threshold ||
+val >= 0x3fb)) {
range++;
dev_dbg(arizona->dev, "Moving to HPDET range %d\n",
range);
@@ -404,7 +406,8 @@ static int arizona_hpdet_read(struct arizona_extcon_info 
*info)
}
 
/* If we go out of range report top of range */
-   if (val < 100 || val >= 0x3fb) {
+   if (val < arizona_hpdet_b_ranges[range].threshold ||
+   val >= 0x3fb) {
dev_dbg(arizona->dev, "Measurement out of range\n");
return ARIZONA_HPDET_MAX;
}
-- 
1.7.2.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/