Subject: [PATCH v3 2/5] misc: tda8026: Add NXP TDA8026 PHY driver

From: [email-masked] (Satish Patel)
Date: Thu, 29 May 2014 14:07:59 +0530

On 5/29/2014 12:14 AM, Greg KH wrote:
> On Wed, May 28, 2014 at 02:27:14PM +0530, Satish Patel wrote:
>> TDA8026 is a SmartCard PHY from NXP.
>>
>> The PHY interfaces with the main processor over the
>> I2C interface and acts as a slave device.
>>
>> The driver also exposes the phy interface
>> (defined at include/linux/sc_phy.h) for SmartCard controller.
>> Controller uses this interface to communicate with smart card
>> inserted to the phy's slot.
>>
>> Note: gpio irq is not validated as I do not have device with that.
>> I have validated interrupt with dedicated interrupt line on my device.
>>
>> Signed-off-by: Satish Patel <[email-masked]>
>> ---
>>   Documentation/devicetree/bindings/misc/tda8026.txt |   19 +
>>   drivers/misc/Kconfig                               |    7 +
>>   drivers/misc/Makefile                              |    1 +
>>   drivers/misc/tda8026.c                             | 1258 ++++++++++++++++++++
>>   4 files changed, 1285 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/misc/tda8026.txt
>>   create mode 100644 drivers/misc/tda8026.c
>>
>> diff --git a/Documentation/devicetree/bindings/misc/tda8026.txt b/Documentation/devicetree/bindings/misc/tda8026.txt
>> new file mode 100644
>> index 0000000..f115c9c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/misc/tda8026.txt
>> @@ -0,0 +1,19 @@
>> +TDA8026 smart card slot interface
>> +
>> +This is an i2c based smart card interface device forming the electrical
>> +interface between a microcontroller and smart cards. This device supports
>> +asynchronous cards (micro controller-based IC cards) as well as synchronous
>> +cards (mainly memory cards)
>> +
>> +Required properties:
>> +- compatible: "nxp,tda8026"
>> +- shutdown-gpio = GPIO pin mapping for SDWNN pin
>> +- reg = i2c interface address
>> +
>> +
>> +Example:
>> +tda8026: tda8026 at 48 {
>> +		 compatible = "nxp,tda8026";
>> +		 reg = <0x48>;
>> +		 shutdown-gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;/* Bank5, pin19 */
>> +	 };
>> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
>> index 8baff0e..80b21d7 100644
>> --- a/drivers/misc/Kconfig
>> +++ b/drivers/misc/Kconfig
>> @@ -515,6 +515,13 @@ config SRAM
>>   	  the genalloc API. It is supposed to be used for small on-chip SRAM
>>   	  areas found on many SoCs.
>>
>> +config NXP_TDA8026_PHY
>> +        tristate "NXP PHY Driver for Smart Card PHY"
>> +        depends on I2C=y
>> +        help
>> +          If you say yes here you get support for the TDA8026 Smart card PHY
>> +	  with I2C interface.
>> +
>>   source "drivers/misc/c2port/Kconfig"
>>   source "drivers/misc/eeprom/Kconfig"
>>   source "drivers/misc/cb710/Kconfig"
>> diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
>> index 7eb4b69..f262c0b 100644
>> --- a/drivers/misc/Makefile
>> +++ b/drivers/misc/Makefile
>> @@ -55,3 +55,4 @@ obj-$(CONFIG_SRAM)		+= sram.o
>>   obj-y				+= mic/
>>   obj-$(CONFIG_GENWQE)		+= genwqe/
>>   obj-$(CONFIG_ECHO)		+= echo/
>> +obj-$(CONFIG_NXP_TDA8026_PHY)	+= tda8026.o
>> diff --git a/drivers/misc/tda8026.c b/drivers/misc/tda8026.c
>> new file mode 100644
>> index 0000000..38df33e
>> --- /dev/null
>> +++ b/drivers/misc/tda8026.c
>> @@ -0,0 +1,1258 @@
>> +/*
>> + * tda8026.c - TDA8026 PHY driver for NXP Smart card PHY
>> + *
>> + *
>> + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License as
>> + * published by the Free Software Foundation version 2.
>> + *
>> + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
>> + * kind, whether express or implied; without even the implied warranty
>> + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + */
>> +
>> +#include <linux/module.h>
>> +#include <linux/moduleparam.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/init.h>
>> +#include <linux/slab.h>
>> +#include <linux/gpio.h>
>> +#include <linux/i2c.h>
>> +#include <linux/mfd/core.h>
>> +#include <linux/notifier.h>
>> +#include <linux/sc_phy.h>
>> +#include <linux/of_gpio.h>
>> +#include <linux/of_device.h>
>> +#include <linux/delay.h>
>
> I think you just broke the build if this driver is enabled now right?
>
> Not good :(
Before sending, I have applied these patches to "v3.15-rc7" and build 
with both the option ti-usim & tda8026 as module, as well as part of 
kernel. Any specific tree you would like me to rebase these patches against.