Discussion:
[CFT][PATCH v2] net/8390: apne.c - read out and log PCMCIA cftable entries
(too old to reply)
Michael Schmitz
2021-08-22 03:20:01 UTC
Permalink
Read the card's CISTPL_CFTABLE_ENTRY tuple, and log to the
kernel log buffer. This tuple ought to hold information
about the IO width of the card memory window that can be used
in autoprobing to detect 16 bit datapath cards.

CC: Debian/m68k <debian-***@lists.debian.org>
Signed-off-by: Michael Schmitz <***@gmail.com>
---
drivers/net/ethernet/8390/apne.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/drivers/net/ethernet/8390/apne.c b/drivers/net/ethernet/8390/apne.c
index fe6c834..dd71b10 100644
--- a/drivers/net/ethernet/8390/apne.c
+++ b/drivers/net/ethernet/8390/apne.c
@@ -127,6 +127,8 @@ struct net_device * __init apne_probe(int unit)

#ifndef MANUAL_CONFIG
char tuple[8];
+ char cftuple[258];
+ int len_cftuple = 0;
#endif
int err;

@@ -168,6 +170,20 @@ struct net_device * __init apne_probe(int unit)
free_netdev(dev);
return ERR_PTR(-ENODEV);
}
+
+ if ((len_cftuple = pcmcia_copy_tuple(CISTPL_CFTABLE_ENTRY, cftuple, 256)) < 3) {
+ pr_cont("no cftable entry for card\n");
+ /* XXX: shouldn't we re-enable irq here? */
+ } else {
+ int i;
+
+ pr_info("CFTABLE_ENTRY tuple:\n");
+ for (i=0; i<len_cftuple; i++) {
+ pr_cont("%hhx ", cftuple[i]);
+ if (i > 0 && !(i % 10)) pr_cont("\n");
+ }
+ pr_cont("\n");
+ }
#endif

pr_cont("ethernet PCMCIA card inserted\n");
--
2.7.4
Geert Uytterhoeven
2021-08-23 07:40:02 UTC
Permalink
Hi Michael,
Post by Michael Schmitz
Read the card's CISTPL_CFTABLE_ENTRY tuple, and log to the
kernel log buffer. This tuple ought to hold information
about the IO width of the card memory window that can be used
in autoprobing to detect 16 bit datapath cards.
--- a/drivers/net/ethernet/8390/apne.c
+++ b/drivers/net/ethernet/8390/apne.c
@@ -127,6 +127,8 @@ struct net_device * __init apne_probe(int unit)
#ifndef MANUAL_CONFIG
char tuple[8];
+ char cftuple[258];
+ int len_cftuple = 0;
#endif
int err;
@@ -168,6 +170,20 @@ struct net_device * __init apne_probe(int unit)
free_netdev(dev);
return ERR_PTR(-ENODEV);
}
+
+ if ((len_cftuple = pcmcia_copy_tuple(CISTPL_CFTABLE_ENTRY, cftuple, 256)) < 3) {
+ pr_cont("no cftable entry for card\n");
+ /* XXX: shouldn't we re-enable irq here? */
+ } else {
+ int i;
+
+ pr_info("CFTABLE_ENTRY tuple:\n");
+ for (i=0; i<len_cftuple; i++) {
+ pr_cont("%hhx ", cftuple[i]);
+ if (i > 0 && !(i % 10)) pr_cont("\n");
+ }
+ pr_cont("\n");
print_hex_dump()?
Post by Michael Schmitz
+ }
#endif
pr_cont("ethernet PCMCIA card inserted\n");
Gr{oetje,eeting}s,

Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ***@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Michael Schmitz
2021-08-23 21:50:02 UTC
Permalink
Hi Geert,
Post by Geert Uytterhoeven
Post by Michael Schmitz
+
+ if ((len_cftuple = pcmcia_copy_tuple(CISTPL_CFTABLE_ENTRY, cftuple, 256)) < 3) {
+ pr_cont("no cftable entry for card\n");
+ /* XXX: shouldn't we re-enable irq here? */
+ } else {
+ int i;
+
+ pr_info("CFTABLE_ENTRY tuple:\n");
+ for (i=0; i<len_cftuple; i++) {
+ pr_cont("%hhx ", cftuple[i]);
+ if (i > 0 && !(i % 10)) pr_cont("\n");
+ }
+ pr_cont("\n");
print_hex_dump()?
Too true - I'll use that in the next iteration.

Cheers,

Michael

Loading...