cc2520: fix CC2591 handling
authorVarka Bhadram <varkabhadram@gmail.com>
Fri, 29 May 2015 05:26:55 +0000 (10:56 +0530)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 31 May 2015 11:40:53 +0000 (13:40 +0200)
This patch changes tha way of handling of cc2591-cc2520 combination
by moving amplified variable from platform data to private data.
This will be useful in other sections like tx power support.

Signed-off-by: Varka Bhadram <varkab@cdac.in>
Cc: Brad Campbell <bradjc5@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/cc2520.c
include/linux/spi/cc2520.h

index ea280d437ca18e1727592bfa181cec2baab9d9be..0d93537565982237769d20ae72c030f624befdc8 100644 (file)
@@ -196,6 +196,7 @@ struct cc2520_private {
        u8 *buf;                        /* SPI TX/Rx data buffer */
        struct mutex buffer_mutex;      /* SPI buffer mutex */
        bool is_tx;                     /* Flag for sync b/w Tx and Rx */
+       bool amplified;                 /* Flag for CC2591 */
        int fifo_pin;                   /* FIFO GPIO pin number */
        struct work_struct fifop_irqwork;/* Workqueue for FIFOP */
        spinlock_t lock;                /* Lock for is_tx*/
@@ -738,7 +739,9 @@ static int cc2520_get_platform_data(struct spi_device *spi,
        pdata->vreg = of_get_named_gpio(np, "vreg-gpio", 0);
        pdata->reset = of_get_named_gpio(np, "reset-gpio", 0);
 
-       pdata->amplified = of_property_read_bool(np, "amplified");
+       /* CC2591 front end for CC2520 */
+       if (of_property_read_bool(np, "amplified"))
+               priv->amplified = true;
 
        return 0;
 }
@@ -781,7 +784,7 @@ static int cc2520_hw_init(struct cc2520_private *priv)
         * amplifier. See section 8 page 17 of TI application note AN065.
         * http://www.ti.com/lit/an/swra229a/swra229a.pdf
         */
-       if (pdata.amplified) {
+       if (priv->amplified) {
                ret = cc2520_write_register(priv, CC2520_AGCCTRL1, 0x16);
                if (ret)
                        goto err_ret;
@@ -896,6 +899,9 @@ static int cc2520_probe(struct spi_device *spi)
        spin_lock_init(&priv->lock);
        init_completion(&priv->tx_complete);
 
+       /* Assumption that CC2591 is not connected */
+       priv->amplified = false;
+
        /* Request all the gpio's */
        if (!gpio_is_valid(pdata.fifo)) {
                dev_err(&spi->dev, "fifo gpio is not valid\n");
index e741e8baad928caac8ec941700c5392fbdfa3164..85b8ee67e93795ac88e02a1b7a00a0ed25b6d785 100644 (file)
@@ -21,7 +21,6 @@ struct cc2520_platform_data {
        int sfd;
        int reset;
        int vreg;
-       bool amplified;
 };
 
 #endif