From: Juergen Beisert on
Hi,

most SmartCard readers are external devices, connected via USB or serial
lines. So, they do not need special in-kernel drivers.

My SmartCard interface is part of a SoC (i.MX25 CPU). So, I need an in-kernel
driver. Where would be the best place in the kernel tree, to add a driver for
this kind of device? Maybe "drivers/char"?
To exchange data with the plugged in SmartCard, only a couple of IOCTLs are
required (detecting if a card is plugged in, socket power on/off, send reset
to the card, configuring the communication parameters). Data exchange with
the SmartCard can be done with simple read/write.

Any idea?

Regards,
Juergen
--
Pengutronix e.K. | Juergen Beisert |
Linux Solutions for Science and Industry | Phone: +49-8766-939 228 |
Vertretung Sued/Muenchen, Germany | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de/ |
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Alan Cox on
On Fri, 7 May 2010 15:18:50 +0200
Juergen Beisert <jbe(a)pengutronix.de> wrote:

> Hi,
>
> most SmartCard readers are external devices, connected via USB or
> serial lines. So, they do not need special in-kernel drivers.
>
> My SmartCard interface is part of a SoC (i.MX25 CPU). So, I need an
> in-kernel driver. Where would be the best place in the kernel tree,
> to add a driver for this kind of device? Maybe "drivers/char"?
> To exchange data with the plugged in SmartCard, only a couple of
> IOCTLs are required (detecting if a card is plugged in, socket power
> on/off, send reset to the card, configuring the communication
> parameters). Data exchange with the SmartCard can be done with simple
> read/write.

I'd say drivers/char if its a generic char device, but if its MX25
specific code entirely then drivers/platform or arch/.../platform.

The other question is one of API - it's going to best if the API isn't
MX25 specific but could reasonably be expected to work with other
future devices. A fake tty interface is probably overkill for that but
it would be good to get general review of any API.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Juergen Beisert on
Hi Alan,

Alan Cox wrote:
> On Fri, 7 May 2010 15:18:50 +0200
> Juergen Beisert <jbe(a)pengutronix.de> wrote:
> > most SmartCard readers are external devices, connected via USB or
> > serial lines. So, they do not need special in-kernel drivers.
> >
> > My SmartCard interface is part of a SoC (i.MX25 CPU). So, I need an
> > in-kernel driver. Where would be the best place in the kernel tree,
> > to add a driver for this kind of device? Maybe "drivers/char"?
> > To exchange data with the plugged in SmartCard, only a couple of
> > IOCTLs are required (detecting if a card is plugged in, socket power
> > on/off, send reset to the card, configuring the communication
> > parameters). Data exchange with the SmartCard can be done with simple
> > read/write.
>
> I'd say drivers/char if its a generic char device, but if its MX25
> specific code entirely then drivers/platform or arch/.../platform.

This driver covers a SmartCard core built into this kind of CPU. Its not like
an interrupt controller which is specific to the CPU. Its a component like
the USB and LCD controller, also built into this CPU. Maybe other CPUs will
follow that are also using this SmartCard core (I don't know, only the
manufacture knows).

> The other question is one of API - it's going to best if the API isn't
> MX25 specific but could reasonably be expected to work with other
> future devices. A fake tty interface is probably overkill for that but
> it would be good to get general review of any API.

"faky tty"?

Regards,
Juergen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Alan Cox on
> > I'd say drivers/char if its a generic char device, but if its MX25
> > specific code entirely then drivers/platform or arch/.../platform.
>
> This driver covers a SmartCard core built into this kind of CPU. Its
> not like an interrupt controller which is specific to the CPU. Its a
> component like the USB and LCD controller, also built into this CPU.
> Maybe other CPUs will follow that are also using this SmartCard core
> (I don't know, only the manufacture knows).

The question is really about the interface as seen from userspace - is
that generic or could it be generic so you could write other card
drivers for different hardware to the same user space interface ?

> > The other question is one of API - it's going to best if the API
> > isn't MX25 specific but could reasonably be expected to work with
> > other future devices. A fake tty interface is probably overkill for
> > that but it would be good to get general review of any API.
>
> "faky tty"?

Some systems have before now implemented onchip smart card interfaces
with drivers that pretend to be a serial port talking a serial link to
the smartcard.

Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Juergen Beisert on
Hi Alan,

Alan Cox wrote:
> > > I'd say drivers/char if its a generic char device, but if its MX25
> > > specific code entirely then drivers/platform or arch/.../platform.
> >
> > This driver covers a SmartCard core built into this kind of CPU. Its
> > not like an interrupt controller which is specific to the CPU. Its a
> > component like the USB and LCD controller, also built into this CPU.
> > Maybe other CPUs will follow that are also using this SmartCard core
> > (I don't know, only the manufacture knows).
>
> The question is really about the interface as seen from userspace - is
> that generic or could it be generic so you could write other card
> drivers for different hardware to the same user space interface ?

Yes, the interface can be generic. As the main feature of these cards is the
communication itself, there are only a few additional requirements to make it
work. But these additional requirements are shared by all SmartCards. Where
would be the best place/mail list to discuss this API?

> > > The other question is one of API - it's going to best if the API
> > > isn't MX25 specific but could reasonably be expected to work with
> > > other future devices. A fake tty interface is probably overkill for
> > > that but it would be good to get general review of any API.
> >
> > "faky tty"?
>
> Some systems have before now implemented onchip smart card interfaces
> with drivers that pretend to be a serial port talking a serial link to
> the smartcard.

Do you mean to emulate an external serial device in the kernel driver?
To make it understand the same data sequences these kind of external device
understand? Would be possible, but its more complex than to run the
communication via read()/write() and a few additional IOCTLs for the special
SmartCard handling.

Regards,
Juergen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/