All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcus Wolf <marcus.wolf@smarthome-wolf.de>
To: "Simon Sandström" <simon@nikanor.nu>, gregkh@linuxfoundation.org
Cc: linux@Wolf-Entwicklungen.de, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 09/11] staging: pi433: Combine all rf69_set_amplifier_x()
Date: Wed, 6 Dec 2017 11:43:30 +0200	[thread overview]
Message-ID: <e49a3dfd-973c-00fb-159a-8ceb13bd0247@smarthome-wolf.de> (raw)
In-Reply-To: <20171205220849.5486-10-simon@nikanor.nu>



Am 06.12.2017 um 00:08 schrieb Simon Sandström:
> Replaces the functions rf69_set_amplifier_1, _2, _3 with two
> functions: rf69_enable_amplifier(dev, amp_mask) and
> rf69_disable_amplifier(dev, amp_mask).
> 
> Signed-off-by: Simon Sandström <simon@nikanor.nu>
> ---
>   drivers/staging/pi433/pi433_if.c |  6 +++---
>   drivers/staging/pi433/rf69.c     | 46 ++++------------------------------------
>   drivers/staging/pi433/rf69.h     |  8 ++-----
>   3 files changed, 9 insertions(+), 51 deletions(-)
> 
> diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c
> index 3b4170b9ba94..688d0cf00782 100644
> --- a/drivers/staging/pi433/pi433_if.c
> +++ b/drivers/staging/pi433/pi433_if.c
> @@ -1126,9 +1126,9 @@ static int pi433_probe(struct spi_device *spi)
>   	/* setup the radio module */
>   	SET_CHECKED(rf69_set_mode		(spi, standby));
>   	SET_CHECKED(rf69_set_data_mode		(spi, DATAMODUL_MODE_PACKET));
> -	SET_CHECKED(rf69_set_amplifier_0	(spi, OPTION_ON));
> -	SET_CHECKED(rf69_set_amplifier_1	(spi, OPTION_OFF));
> -	SET_CHECKED(rf69_set_amplifier_2	(spi, OPTION_OFF));
> +	SET_CHECKED(rf69_enable_amplifier(spi, MASK_PALEVEL_PA0));
> +	SET_CHECKED(rf69_disable_amplifier(spi, MASK_PALEVEL_PA1));
> +	SET_CHECKED(rf69_disable_amplifier(spi, MASK_PALEVEL_PA2));
>   	SET_CHECKED(rf69_set_output_power_level	(spi, 13));
>   	SET_CHECKED(rf69_set_antenna_impedance	(spi, fiftyOhm));
>   
> diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
> index 4c9eb97978ef..c97c65ea8acd 100644
> --- a/drivers/staging/pi433/rf69.c
> +++ b/drivers/staging/pi433/rf69.c
> @@ -262,52 +262,14 @@ int rf69_set_frequency(struct spi_device *spi, u32 frequency)
>   	return 0;
>   }
>   
> -int rf69_set_amplifier_0(struct spi_device *spi,
> -			 enum option_on_off option_on_off)
> +int rf69_enable_amplifier(struct spi_device *spi, u8 amplifier_mask)
>   {
> -	#ifdef DEBUG
> -		dev_dbg(&spi->dev, "set: amp #0");
> -	#endif
> -
> -	switch (option_on_off) {
> -	case OPTION_ON:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  MASK_PALEVEL_PA0));
> -	case OPTION_OFF: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & ~MASK_PALEVEL_PA0));
> -	default:
> -		dev_dbg(&spi->dev, "set: illegal input param");
> -		return -EINVAL;
> -	}
> -}
> -
> -int rf69_set_amplifier_1(struct spi_device *spi,
> -			 enum option_on_off option_on_off)
> -{
> -	#ifdef DEBUG
> -		dev_dbg(&spi->dev, "set: amp #1");
> -	#endif
> -
> -	switch (option_on_off) {
> -	case OPTION_ON:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  MASK_PALEVEL_PA1));
> -	case OPTION_OFF: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & ~MASK_PALEVEL_PA1));
> -	default:
> -		dev_dbg(&spi->dev, "set: illegal input param");
> -		return -EINVAL;
> -	}
> +	return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) | amplifier_mask));
>   }
>   
> -int rf69_set_amplifier_2(struct spi_device *spi,
> -			 enum option_on_off option_on_off)
> +int rf69_disable_amplifier(struct spi_device *spi, u8 amplifier_mask)
>   {
> -	#ifdef DEBUG
> -		dev_dbg(&spi->dev, "set: amp #2");
> -	#endif
> -
> -	switch (option_on_off) {
> -	case OPTION_ON:	 return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  MASK_PALEVEL_PA2));
> -	case OPTION_OFF: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & ~MASK_PALEVEL_PA2));
> -	default:
> -		dev_dbg(&spi->dev, "set: illegal input param");
> -		return -EINVAL;
> -	}
> +	return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & ~amplifier_mask));
>   }
>   
>   int rf69_set_output_power_level(struct spi_device *spi, u8 powerLevel)
> diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
> index 18296b4502f3..ba25ab6aeae7 100644
> --- a/drivers/staging/pi433/rf69.h
> +++ b/drivers/staging/pi433/rf69.h
> @@ -33,12 +33,8 @@ int rf69_set_modulation_shaping(struct spi_device *spi, enum mod_shaping mod_sha
>   int rf69_set_bit_rate(struct spi_device *spi, u16 bitRate);
>   int rf69_set_deviation(struct spi_device *spi, u32 deviation);
>   int rf69_set_frequency(struct spi_device *spi, u32 frequency);
> -int rf69_set_amplifier_0(struct spi_device *spi,
> -			 enum option_on_off option_on_off);
> -int rf69_set_amplifier_1(struct spi_device *spi,
> -			 enum option_on_off option_on_off);
> -int rf69_set_amplifier_2(struct spi_device *spi,
> -			 enum option_on_off option_on_off);
> +int rf69_enable_amplifier(struct spi_device *spi, u8 amplifier_mask);
> +int rf69_disable_amplifier(struct spi_device *spi, u8 amplifier_mask);
>   int rf69_set_output_power_level(struct spi_device *spi, u8 powerLevel);
>   int rf69_set_pa_ramp(struct spi_device *spi, enum paRamp paRamp);
>   int rf69_set_antenna_impedance(struct spi_device *spi, enum antennaImpedance antennaImpedance);
> 

Hi Simon,

I am sorry. I don't like that.

You expand to two functions, to get the luxury of having an enable and a 
disable function.
On the other hand, you colapse from 3 function - one for each amp - to a 
single, taking the amp number as argument.

Although I don't see the big benefit, in programming theory this might 
be a better solution.
But the old implementation reflects the hardware and the datasheet, 
since the chip does not have a register to enable and a register to 
disable, taking the amp number, but the chip has three bits, saying on 
or off.
For someone, not reading the code as a "novel", but work with it, he for 
sure will read the datasheet. Then the new construction will be 
uncomfortable for him.

I tried to reflect the chip in every function I wrote. And the DEFINES 
in rf69.h are (almost) exactly named, as the you'll find the namings in 
the datasheet. That eases working with such a complex chip a lot.

Sorry,

Marcus

  reply	other threads:[~2017-12-06  9:43 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-05 22:08 [PATCH v2 00/11] Fix indentation and CamelCase issue in staging/pi433 Simon Sandström
2017-12-05 22:08 ` [PATCH v2 01/11] staging: pi433: Fix indentation in rf69_enum.h Simon Sandström
2017-12-05 22:08 ` [PATCH v2 02/11] staging: pi433: Capitalize constant definitions Simon Sandström
2017-12-05 22:08 ` [PATCH v2 03/11] staging: pi433: Rename variable in struct pi433_rx_cfg Simon Sandström
2017-12-05 22:08 ` [PATCH v2 04/11] staging: pi433: Rename enum optionOnOff in rf69_enum.h Simon Sandström
2017-12-06  9:46   ` Marcus Wolf
2017-12-06 10:23     ` Dan Carpenter
2017-12-06 10:31       ` Marcus Wolf
2017-12-06 10:44         ` Dan Carpenter
2017-12-06 11:07           ` Marcus Wolf
2017-12-06 19:57           ` Simon Sandström
2017-12-06 22:17             ` Marcus Wolf
2017-12-07  9:41               ` Dan Carpenter
2017-12-05 22:08 ` [PATCH v2 05/11] staging: pi433: Rename enum modShaping " Simon Sandström
2017-12-05 22:08 ` [PATCH v2 06/11] staging: pi433: Split rf69_set_crc_enabled into two functions Simon Sandström
2017-12-06  9:05   ` Marcus Wolf
2017-12-06  9:37     ` Dan Carpenter
2017-12-06 10:07       ` Marcus Wolf
2017-12-06 15:11         ` Greg KH
2017-12-06 10:36       ` Marcus Wolf
2017-12-06 15:16   ` Greg KH
2017-12-06 20:27     ` Simon Sandström
2017-12-05 22:08 ` [PATCH v2 07/11] staging: pi433: Split rf69_set_sync_enabled " Simon Sandström
2017-12-05 22:08 ` [PATCH v2 08/11] staging: pi433: Remove enum data_mode Simon Sandström
2017-12-06  9:11   ` Marcus Wolf
2017-12-06 12:47     ` Dan Carpenter
2017-12-07  9:47       ` staging: pi433: Plans from Smarthome-Wolf Marcus Wolf
2017-12-05 22:08 ` [PATCH v2 09/11] staging: pi433: Combine all rf69_set_amplifier_x() Simon Sandström
2017-12-06  9:43   ` Marcus Wolf [this message]
2017-12-05 22:08 ` [PATCH v2 10/11] staging: pi433: Move enum option_on_off to pi433_if.h Simon Sandström
2017-12-05 22:08 ` [PATCH v2 11/11] staging: pi433: Remove SET_CHECKED usage from pi433_probe Simon Sandström

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e49a3dfd-973c-00fb-159a-8ceb13bd0247@smarthome-wolf.de \
    --to=marcus.wolf@smarthome-wolf.de \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@Wolf-Entwicklungen.de \
    --cc=simon@nikanor.nu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.