summaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/topic.h
diff options
context:
space:
mode:
authorDaniel Ritz <daniel.ritz@gmx.ch>2005-09-06 15:16:50 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-07 16:57:21 -0700
commitea2f1590aaffbd02f1850c19c3895ff4d092c6e0 (patch)
tree472a30659fc1e32f25730d62d46a9dee481cf245 /drivers/pcmcia/topic.h
parent36d57ac4a818cb4aa3edbdf63ad2ebc31106f925 (diff)
downloadlinux-0-day-ea2f1590aaffbd02f1850c19c3895ff4d092c6e0.tar.gz
linux-0-day-ea2f1590aaffbd02f1850c19c3895ff4d092c6e0.tar.xz
[PATCH] yenta: make ToPIC95 bridges work with 16bit cards
ToPIC95 brides (and maybe some other too) require to use the ExCA registers to power up the socket if a 16bit card is pluged. allow socket drivers to set a flag so that yenta does just that. also clean up yenta_get_status() a bit to use the new yenta_get_power() function. Side note: ToPIC97 bridges (at least in Rev.5 i have) don't require this. Ryan Underwood <nemesis-lists@icequake.net> said: According to the mail that David Hinds received from a Toshiba engineer, ToPIC95 and 97 do require this, and ToPIC100 does not. Maybe you have a later revision. For all chips, 16-bit cards can be enabled through ExCA. So doesn't it make sense just to make this the default behavior for all Toshiba chips, to avoid corner cases showing up later? Daniel responded: I disagree with ryan to change anything for topic97 bridges. they work. and I couldn't find (read google) any report of a topic97 breaking on applying power with the CB registers. I'm having several toshba notebooks at work (and home) with topic95,97,100 bridges. Only the ones with a topic95 didn't work. Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/pcmcia/topic.h')
-rw-r--r--drivers/pcmcia/topic.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/pcmcia/topic.h b/drivers/pcmcia/topic.h
index be420bb291135..edccfa5bb4008 100644
--- a/drivers/pcmcia/topic.h
+++ b/drivers/pcmcia/topic.h
@@ -101,6 +101,8 @@
#define TOPIC97_AVS_AUDIO_CONTROL 0x02
#define TOPIC97_AVS_VIDEO_CONTROL 0x01
+#define TOPIC_EXCA_IF_CONTROL 0x3e /* 8 bit */
+#define TOPIC_EXCA_IFC_33V_ENA 0x01
static void topic97_zoom_video(struct pcmcia_socket *sock, int onoff)
{
@@ -137,4 +139,19 @@ static int topic97_override(struct yenta_socket *socket)
return 0;
}
+
+static int topic95_override(struct yenta_socket *socket)
+{
+ u8 fctrl;
+
+ /* enable 3.3V support for 16bit cards */
+ fctrl = exca_readb(socket, TOPIC_EXCA_IF_CONTROL);
+ exca_writeb(socket, TOPIC_EXCA_IF_CONTROL, fctrl | TOPIC_EXCA_IFC_33V_ENA);
+
+ /* tell yenta to use exca registers to power 16bit cards */
+ socket->flags |= YENTA_16BIT_POWER_EXCA | YENTA_16BIT_POWER_DF;
+
+ return 0;
+}
+
#endif /* _LINUX_TOPIC_H */