The core st21nca module is useless without the I2C access module.
So hide NFC_ST21NFCA and select it automatically if either
NFC_ST21NFCA_I2C is selected.
This avoids presenting NFC_ST21NFCA when NFC_ST21NFCA_I2C can't be
selected.
Cc: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
The core st-nci module is useless without either the I2C or the
SPI access module. So hide NFC_ST_NCI and select it automatically
if either NFC_ST_NCI_I2C or NFC_ST_NCI_SPI is selected.
This avoids presenting NFC_ST_NCI when neither NFC_ST_NCI_I2C nor
NFC_ST_NCI_SPI can be selected.
Cc: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Add support for acpi probing.
SMO2101 is used for st21nfcb
SMO2102 is used for st21nfcc
It has been tested with the following acpi node on Minnowboard:
Note: Remove uicc-present or ese-present Package if one them is not
supported.
Device (NFC1)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "SMO2101") // _HID: Hardware ID
Name (_CID, "SMO2101") // _CID: Compatible ID
Name (_DDN, "SMO NFC") // _DDN: DOS Device Name
Name (_UID, One) // _UID: Unique ID
Name (_DSD, Package (0x02)
{
/* Device Properties for _DSD */
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x02)
{
Package (0x02) { "uicc-present", 1 },
Package (0x02) { "ese-present", 1 }
}
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBus (0x0008, ControllerInitiated, 400000,
AddressingMode7Bit, "\\_SB.I2C7",
0x00, ResourceConsumer, ,)
GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
"\\_SB.GPO2", 0x00, ResourceConsumer, ,)
{ // Pin list
0x0001
}
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO2", 0x00, ResourceConsumer, ,)
{ // Pin list
0x0002,
}
})
Return (SBUF) /* \_SB_.I2C7.NFC1._CRS.SBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F)
}
}
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Group device table at the same place in order to make the code
easier to read and parse.
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Group device table at the same place in order to make the code
easier to read and parse.
Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This fixes a build error on the mn10300 architecture:
drivers/nfc/st95hf/core.c:765:20: error: conflicting types for 'irq_handler'
static irqreturn_t irq_handler(int irq, void *st95hfcontext)
^
In file included from arch/mn10300/include/asm/reset-regs.h:16:0,
from arch/mn10300/include/asm/irq.h:18,
from include/linux/irq.h:26,
from arch/mn10300/include/asm/hardirq.h:16,
from include/linux/hardirq.h:8,
from include/linux/interrupt.h:12,
from drivers/nfc/st95hf/core.c:23:
arch/mn10300/include/asm/exceptions.h:107:24: note: previous declaration of 'irq_handler' was here
extern asmlinkage void irq_handler(void);
Signed-off-by: Shikha Singh <shikha.singh@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
The s3fwrn5_phy_ops structure is never modified, so declare it as const.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Function nxp_nci_i2c_write currently assumes in case of
I2C bus NACK that the NFC device is in stand-by mode and
will retry the I2C transaction after a pause. This assumes
that the first failed I2C transaction will wake-up the device.
This is done by checking on EREMOTEIO, which is wrong. According
to Documentation/i2c/fault-codes ENXIO shall be used. Unfortunately
the NOACK return code is currently inconsistent across various I2C
host controller drivers. So only check for the generic error case
instead.
This is a temporary fix. As soon as all I2C bus master drivers are
fixed to consistently return 'ENXIO', then we can do the specific
error check again.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>