aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nfc
diff options
context:
space:
mode:
authorMark A. Greer <mgreer@animalcreek.com>2014-03-25 11:54:35 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2014-04-21 18:37:27 -0400
commit12e9ade309db51e7ea26be3b4fd5bc6057ddc175 (patch)
treef9ce9c5fb33baf771ad4776e241fd1a08c5a0391 /drivers/nfc
parenta0822a7e3b7333689b1c8cb92782e299791c2795 (diff)
NFC: trf7970a: Allow different Modulator and SYS_CLK Control register values
Currently the driver writes the same value to the 'Modulator and SYS_CLK Control' register no matter what RF technology is being used. That works for now but new RF technologies (e.g., ISO/IEC 14443-B) will require different values to be written to that register. To support this, add a member to the trf7970a structure which is set by the RF technology handling code and used by the framing code when it writes to that register. Signed-off-by: Mark A. Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc')
-rw-r--r--drivers/nfc/trf7970a.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c
index 90ec2ad35932..352aaab807b6 100644
--- a/drivers/nfc/trf7970a.c
+++ b/drivers/nfc/trf7970a.c
@@ -338,6 +338,7 @@ struct trf7970a {
338 void *cb_arg; 338 void *cb_arg;
339 u8 iso_ctrl; 339 u8 iso_ctrl;
340 u8 iso_ctrl_tech; 340 u8 iso_ctrl_tech;
341 u8 modulator_sys_clk_ctrl;
341 u8 special_fcn_reg1; 342 u8 special_fcn_reg1;
342 int technology; 343 int technology;
343 int framing; 344 int framing;
@@ -887,9 +888,11 @@ static int trf7970a_config_rf_tech(struct trf7970a *trf, int tech)
887 switch (tech) { 888 switch (tech) {
888 case NFC_DIGITAL_RF_TECH_106A: 889 case NFC_DIGITAL_RF_TECH_106A:
889 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106; 890 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_14443A_106;
891 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK;
890 break; 892 break;
891 case NFC_DIGITAL_RF_TECH_ISO15693: 893 case NFC_DIGITAL_RF_TECH_ISO15693:
892 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648; 894 trf->iso_ctrl_tech = TRF7970A_ISO_CTRL_15693_SGL_1OF4_2648;
895 trf->modulator_sys_clk_ctrl = TRF7970A_MODULATOR_DEPTH_OOK;
893 break; 896 break;
894 default: 897 default:
895 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech); 898 dev_dbg(trf->dev, "Unsupported rf technology: %d\n", tech);
@@ -940,7 +943,7 @@ static int trf7970a_config_framing(struct trf7970a *trf, int framing)
940 trf->iso_ctrl = iso_ctrl; 943 trf->iso_ctrl = iso_ctrl;
941 944
942 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL, 945 ret = trf7970a_write(trf, TRF7970A_MODULATOR_SYS_CLK_CTRL,
943 TRF7970A_MODULATOR_DEPTH_OOK); 946 trf->modulator_sys_clk_ctrl);
944 if (ret) 947 if (ret)
945 return ret; 948 return ret;
946 } 949 }