diff options
author | Mark A. Greer <mgreer@animalcreek.com> | 2014-03-25 11:54:35 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2014-04-21 18:37:27 -0400 |
commit | 12e9ade309db51e7ea26be3b4fd5bc6057ddc175 (patch) | |
tree | f9ce9c5fb33baf771ad4776e241fd1a08c5a0391 /drivers/nfc | |
parent | a0822a7e3b7333689b1c8cb92782e299791c2795 (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.c | 5 |
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 | } |