Message ID | 1481841044-4314-1-git-send-email-glansberry@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Samuel Ortiz |
Headers | show |
Hi Geoff. On Thu, Dec 15, 2016 at 05:30:42PM -0500, Geoff Lansberry wrote: > From: Geoff Lansberry <geoff@kuvee.com> Please add an informative commit description to all of your commits. No matter how trivial this patch may seem to you now, it may not be to others (or to you in a few years). > diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c > index 26c9dbb..2d2a077 100644 > --- a/drivers/nfc/trf7970a.c > +++ b/drivers/nfc/trf7970a.c > @@ -1181,27 +1180,37 @@ static int trf7970a_in_config_rf_tech(struct trf7970a *trf, int tech) > switch (tech) { > case NFC_DIGITAL_RF_TECH_106A: > trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; > - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; > + trf->modulator_sys_clk_ctrl = > + (trf->modulator_sys_clk_ctrl & 0xF8) | nit: s/0xF8/0xf8/ please (for consistency with the rest of the file.). Otherwise, it looks good. Thanks, Mark
On Thu, Dec 15, 2016 at 05:30:42PM -0500, Geoff Lansberry wrote: > From: Geoff Lansberry <geoff@kuvee.com> > > --- > .../devicetree/bindings/net/nfc/trf7970a.txt | 3 ++ > drivers/nfc/trf7970a.c | 42 ++++++++++++++++------ > 2 files changed, 34 insertions(+), 11 deletions(-) > > diff --git a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt > index 32b35a0..9dda879 100644 > --- a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt > +++ b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt > @@ -21,6 +21,8 @@ Optional SoC Specific Properties: > - t5t-rmb-extra-byte-quirk: Specify that the trf7970a has the erratum > where an extra byte is returned by Read Multiple Block commands issued > to Type 5 tags. > +- crystal_27mhz: Set to specify that the input frequency to the trf7970a is 27.12MHz > + Can't you use 'clock-frequency = "27000000";'? > > Example (for ARM-based BeagleBone with TRF7970A on SPI1): > > @@ -43,6 +45,7 @@ Example (for ARM-based BeagleBone with TRF7970A on SPI1): > irq-status-read-quirk; > en2-rf-quirk; > t5t-rmb-extra-byte-quirk; > + crystal_27mhz; > status = "okay"; > }; > };
I can make that change, however, I worry that it may be a bit misleading, since there are only two supported clock frequencies, but a number like that to me implies that it could be set to any number you want. I'm new at this, and so I'll go ahead and change it as you request, but I'd like to hear your thoughts on my concern. Thanks Geoff Geoff Lansberry Engineering Guy Kuvée, Inc 125 Kingston St., 3rd Floor Boston, MA 02111 1-617-290-1118 (m) geoff.lansberry (skype) http://www.kuvee.com On Mon, Dec 19, 2016 at 5:31 PM, Rob Herring <robh@kernel.org> wrote: > On Thu, Dec 15, 2016 at 05:30:42PM -0500, Geoff Lansberry wrote: >> From: Geoff Lansberry <geoff@kuvee.com> >> >> --- >> .../devicetree/bindings/net/nfc/trf7970a.txt | 3 ++ >> drivers/nfc/trf7970a.c | 42 ++++++++++++++++------ >> 2 files changed, 34 insertions(+), 11 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt >> index 32b35a0..9dda879 100644 >> --- a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt >> +++ b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt >> @@ -21,6 +21,8 @@ Optional SoC Specific Properties: >> - t5t-rmb-extra-byte-quirk: Specify that the trf7970a has the erratum >> where an extra byte is returned by Read Multiple Block commands issued >> to Type 5 tags. >> +- crystal_27mhz: Set to specify that the input frequency to the trf7970a is 27.12MHz >> + > > Can't you use 'clock-frequency = "27000000";'? > >> >> Example (for ARM-based BeagleBone with TRF7970A on SPI1): >> >> @@ -43,6 +45,7 @@ Example (for ARM-based BeagleBone with TRF7970A on SPI1): >> irq-status-read-quirk; >> en2-rf-quirk; >> t5t-rmb-extra-byte-quirk; >> + crystal_27mhz; >> status = "okay"; >> }; >> };
On Mon, Dec 19, 2016 at 5:23 PM, Geoff Lansberry <geoff@kuvee.com> wrote: > I can make that change, however, I worry that it may be a bit > misleading, since there are only two supported clock frequencies, but > a number like that to me implies that it could be set to any number > you want. I'm new at this, and so I'll go ahead and change it as you > request, but I'd like to hear your thoughts on my concern. Then the binding doc just needs to state what are the 2 valid frequencies. Rob
diff --git a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt index 32b35a0..9dda879 100644 --- a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt +++ b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt @@ -21,6 +21,8 @@ Optional SoC Specific Properties: - t5t-rmb-extra-byte-quirk: Specify that the trf7970a has the erratum where an extra byte is returned by Read Multiple Block commands issued to Type 5 tags. +- crystal_27mhz: Set to specify that the input frequency to the trf7970a is 27.12MHz + Example (for ARM-based BeagleBone with TRF7970A on SPI1): @@ -43,6 +45,7 @@ Example (for ARM-based BeagleBone with TRF7970A on SPI1): irq-status-read-quirk; en2-rf-quirk; t5t-rmb-extra-byte-quirk; + crystal_27mhz; status = "okay"; }; }; diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 26c9dbb..2d2a077 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -1056,12 +1056,11 @@ static int trf7970a_init(struct trf7970a *trf) trf->chip_status_ctrl &= ~TRF7970A_CHIP_STATUS_RF_ON; - ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 0); + ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, + trf->modulator_sys_clk_ctrl); if (ret) goto err_out; - trf->modulator_sys_clk_ctrl = 0; - ret = trf7970a_write(trf, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS, TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLH_96 | TRF7970A_ADJUTABLE_FIFO_IRQ_LEVELS_WLL_32); @@ -1181,27 +1180,37 @@ static int trf7970a_in_config_rf_tech(struct trf7970a *trf, int tech) switch (tech) { case NFC_DIGITAL_RF_TECH_106A: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_OOK; trf->guard_time = TRF7970A_GUARD_TIME_NFCA; break; case NFC_DIGITAL_RF_TECH_106B: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443B_106; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_ASK10; trf->guard_time = TRF7970A_GUARD_TIME_NFCB; break; case NFC_DIGITAL_RF_TECH_212F: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_212; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_ASK10; trf->guard_time = TRF7970A_GUARD_TIME_NFCF; break; case NFC_DIGITAL_RF_TECH_424F: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_FELICA_424; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_ASK10; trf->guard_time = TRF7970A_GUARD_TIME_NFCF; break; case NFC_DIGITAL_RF_TECH_ISO15693: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_OOK; trf->guard_time = TRF7970A_GUARD_TIME_15693; break; default: @@ -1571,17 +1580,23 @@ static int trf7970a_tg_config_rf_tech(struct trf7970a *trf, int tech) trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | TRF7970A_ISO_CTRL_NFC_CE | TRF7970A_ISO_CTRL_NFC_CE_14443A; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_OOK; break; case NFC_DIGITAL_RF_TECH_212F: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | TRF7970A_ISO_CTRL_NFC_NFCF_212; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_ASK10; break; case NFC_DIGITAL_RF_TECH_424F: trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_NFC_NFC_CE_MODE | TRF7970A_ISO_CTRL_NFC_NFCF_424; - trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_ASK10; + trf->modulator_sys_clk_ctrl = + (trf->modulator_sys_clk_ctrl & 0xF8) | + TRF7970A_MODULATOR_DEPTH_ASK10; break; default: dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); @@ -2043,6 +2058,11 @@ static int trf7970a_probe(struct spi_device *spi) return ret; } + if (of_property_read_bool(np, "crystal_27mhz")) { + trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_27MHZ; + dev_dbg(trf->dev, "trf7970a configure crystal_27mhz\n"); + } + if (of_property_read_bool(np, "en2-rf-quirk")) trf->quirks |= TRF7970A_QUIRK_EN2_MUST_STAY_LOW;
From: Geoff Lansberry <geoff@kuvee.com> --- .../devicetree/bindings/net/nfc/trf7970a.txt | 3 ++ drivers/nfc/trf7970a.c | 42 ++++++++++++++++------ 2 files changed, 34 insertions(+), 11 deletions(-)