Hi Walter,

> enhance module drivers/net/ieee802154/mrf24j40.c to allow designs that use 
> external transmitters/receivers.
> 
> Designs that use Microchip's MRF24J40 with external receivers and 
> transmitters require the chip to
> be specifically programmed for this, by setting the "test mode register" to 
> 0xf.
> 
> In my testing, without this flag, I could only receive over a distance of a 
> few feet. Setting this flag allows
> distances well above 100 feet.
> 
> The patch adds a module parameter module_param(ext_rx_tx, bool, 0). When 
> setting the parameter to true,
> the driver configures the "test mode" register of the mrf24j40 device to work 
> with external tranmitters and receivers.
> 
> patch applies to kernel version:3.16.0-rc4csi-git-dirty, git: commit 
> cd3de83f147601356395b57a8673e9c5ff1e59d1
> 
> (I'm doing a patch submission the first time. If I'm doing this wrong, I 
> would appreciate feedback for how to do this better next time).

comments do not belong in the commit message. And please send patches for IEEE 
802.15.4 drivers to linux-w...@vger.kernel.org mailing list.


> Signed-off-by: Walter J. Mack <wm...@componentsw.com>
> 
> ---
> diff --git a/drivers/net/ieee802154/mrf24j40.c 
> b/drivers/net/ieee802154/mrf24j40.c
> index 4048062..18cff47 100644
> --- a/drivers/net/ieee802154/mrf24j40.c
> +++ b/drivers/net/ieee802154/mrf24j40.c
> @@ -26,6 +26,10 @@
> #include <net/mac802154.h>
> #include <net/ieee802154.h>
> 
> +static bool ext_rx_tx = false ;

please fix the coding style here and not need for variable initialization.

> +module_param(ext_rx_tx, bool, 0);

The last parameter is the mode. You might want to use 0444 here at least.

> +MODULE_PARM_DESC(ext_rx_tx, " turn on statemachine to manage external 
> tx/rx");
> +
> /* MRF24J40 Short Address Registers */
> #define REG_RXMCR    0x00  /* Receive MAC control */
> #define REG_PANIDL   0x01  /* PAN ID (low) */
> @@ -63,6 +67,8 @@
> #define REG_SLPCON1    0x220
> #define REG_WAKETIMEL  0x222  /* Wake-up Time Match Value Low */
> #define REG_WAKETIMEH  0x223  /* Wake-up Time Match Value High */
> +#define REG_TESTMODE   0x22f  /* test mode and state machine control 
> register */
> +
> #define REG_RX_FIFO    0x300  /* Receive FIFO */
> 
> /* Device configuration: Only channels 11-26 on page 0 are supported. */
> @@ -669,6 +675,10 @@ static int mrf24j40_probe(struct spi_device *spi)
>     write_short_reg(devrec, REG_RFCTL, 0x0);
>     udelay(192);
> 
> +    if ( false != ext_rx_tx ){
> +      write_long_reg(devrec, REG_TESTMODE, 0x0f);
> +    }
> +

You need to read the coding style document and follow it.

>     /* Set RX Mode. RXMCR<1:0>: 0x0 normal, 0x1 promisc, 0x2 error */
>     ret = read_short_reg(devrec, REG_RXMCR, &val);
>     if (ret)

Regards

Marcel

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

Reply via email to