Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
7cd612a0
Commit
7cd612a0
authored
Jun 23, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/gregkh/linux/i2c-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
bbcd7100
ed06d524
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
103 additions
and
61 deletions
+103
-61
drivers/ide/legacy/ide-cs.c
drivers/ide/legacy/ide-cs.c
+1
-1
drivers/pcmcia/ti113x.h
drivers/pcmcia/ti113x.h
+32
-0
drivers/pcmcia/yenta_socket.c
drivers/pcmcia/yenta_socket.c
+16
-9
drivers/serial/8250.c
drivers/serial/8250.c
+2
-2
drivers/serial/8250_cs.c
drivers/serial/8250_cs.c
+48
-46
drivers/serial/Kconfig
drivers/serial/Kconfig
+2
-2
include/linux/pci_ids.h
include/linux/pci_ids.h
+2
-1
No files found.
drivers/ide/legacy/ide-cs.c
View file @
7cd612a0
...
...
@@ -473,7 +473,7 @@ int ide_event(event_t event, int priority,
static
struct
pcmcia_driver
ide_cs_driver
=
{
.
owner
=
THIS_MODULE
,
.
drv
=
{
.
name
=
"ide
_
cs"
,
.
name
=
"ide
-
cs"
,
},
.
attach
=
ide_attach
,
.
detach
=
ide_detach
,
...
...
drivers/pcmcia/ti113x.h
View file @
7cd612a0
...
...
@@ -175,6 +175,27 @@ static int ti_override(struct yenta_socket *socket)
new
=
reg
&
~
I365_INTR_ENA
;
if
(
new
!=
reg
)
exca_writeb
(
socket
,
I365_INTCTL
,
new
);
/*
* If ISA interrupts don't work, then fall back to routing card
* interrupts to the PCI interrupt of the socket.
*/
if
(
!
socket
->
socket
.
irq_mask
)
{
int
irqmux
,
devctl
;
printk
(
KERN_INFO
"ti113x: Routing card interrupts to PCI
\n
"
);
devctl
=
config_readb
(
socket
,
TI113X_DEVICE_CONTROL
);
devctl
&=
~
TI113X_DCR_IMODE_MASK
;
irqmux
=
config_readl
(
socket
,
TI122X_IRQMUX
);
irqmux
=
(
irqmux
&
~
0x0f
)
|
0x02
;
/* route INTA */
irqmux
=
(
irqmux
&
~
0xf0
)
|
0x20
;
/* route INTB */
config_writel
(
socket
,
TI122X_IRQMUX
,
irqmux
);
config_writeb
(
socket
,
TI113X_DEVICE_CONTROL
,
devctl
);
}
socket
->
socket
.
ss_entry
->
init
=
ti_init
;
return
0
;
}
...
...
@@ -241,6 +262,17 @@ static int ti1250_override(struct yenta_socket *socket)
return
0
;
}
static
int
ti12xx_override
(
struct
yenta_socket
*
socket
)
{
/* make sure that memory burst is active */
ti_sysctl
(
socket
)
=
config_readl
(
socket
,
TI113X_SYSTEM_CONTROL
);
ti_sysctl
(
socket
)
|=
TI122X_SCR_MRBURSTUP
;
config_writel
(
socket
,
TI113X_SYSTEM_CONTROL
,
ti_sysctl
(
socket
));
return
ti113x_override
(
socket
);
}
#endif
/* CONFIG_CARDBUS */
#endif
/* _LINUX_TI113X_H */
...
...
drivers/pcmcia/yenta_socket.c
View file @
7cd612a0
...
...
@@ -807,23 +807,30 @@ struct cardbus_override_struct {
unsigned
short
device
;
int
(
*
override
)
(
struct
yenta_socket
*
socket
);
}
cardbus_override
[]
=
{
{
PD
(
TI
,
1130
),
&
ti113x_override
},
{
PD
(
TI
,
1031
),
&
ti_override
},
{
PD
(
TI
,
1131
),
&
ti113x_override
},
{
PD
(
TI
,
1250
),
&
ti1250_override
},
{
PD
(
TI
,
1220
),
&
ti_override
},
{
PD
(
TI
,
1221
),
&
ti_override
},
/* TBD: Check if these TI variants can use more
* advanced overrides instead */
{
PD
(
TI
,
1210
),
&
ti_override
},
{
PD
(
TI
,
1450
),
&
ti_override
},
{
PD
(
TI
,
1225
),
&
ti_override
},
{
PD
(
TI
,
1251
A
),
&
ti_override
},
{
PD
(
TI
,
1211
),
&
ti_override
},
{
PD
(
TI
,
1251
A
),
&
ti_override
},
{
PD
(
TI
,
1251
B
),
&
ti_override
},
{
PD
(
TI
,
1410
),
ti1250_override
},
{
PD
(
TI
,
1420
),
&
ti_override
},
{
PD
(
TI
,
1450
),
&
ti_override
},
{
PD
(
TI
,
4410
),
&
ti_override
},
{
PD
(
TI
,
4451
),
&
ti_override
},
{
PD
(
TI
,
1130
),
&
ti113x_override
},
{
PD
(
TI
,
1131
),
&
ti113x_override
},
{
PD
(
TI
,
1220
),
&
ti12xx_override
},
{
PD
(
TI
,
1221
),
&
ti12xx_override
},
{
PD
(
TI
,
1225
),
&
ti12xx_override
},
{
PD
(
TI
,
1520
),
&
ti12xx_override
},
{
PD
(
TI
,
1250
),
&
ti1250_override
},
{
PD
(
TI
,
1410
),
&
ti1250_override
},
{
PD
(
RICOH
,
RL5C465
),
&
ricoh_override
},
{
PD
(
RICOH
,
RL5C466
),
&
ricoh_override
},
{
PD
(
RICOH
,
RL5C475
),
&
ricoh_override
},
...
...
drivers/serial/8250.c
View file @
7cd612a0
...
...
@@ -122,13 +122,13 @@ struct uart_8250_port {
struct
uart_port
port
;
struct
timer_list
timer
;
/* "no irq" timer */
struct
list_head
list
;
/* ports on this IRQ */
unsigned
short
rev
;
unsigned
char
acr
;
unsigned
char
ier
;
unsigned
char
rev
;
unsigned
char
lcr
;
unsigned
char
mcr_mask
;
/* mask of user bits */
unsigned
char
mcr_force
;
/* mask of forced bits */
unsigned
int
lsr_break_flag
;
unsigned
char
lsr_break_flag
;
/*
* We provide a per-port pm hook.
...
...
drivers/serial/8250_cs.c
View file @
7cd612a0
...
...
@@ -2,7 +2,7 @@
A driver for PCMCIA serial devices
serial_cs.c 1.1
23 2000/08/24 18:46:38
serial_cs.c 1.1
34 2002/05/04 05:48:53
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
...
...
@@ -43,7 +43,6 @@
#include <linux/serial.h>
#include <linux/serial_core.h>
#include <linux/major.h>
#include <linux/workqueue.h>
#include <asm/io.h>
#include <asm/system.h>
...
...
@@ -59,7 +58,7 @@
static
int
pc_debug
=
PCMCIA_DEBUG
;
MODULE_PARM
(
pc_debug
,
"i"
);
#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
static
char
*
version
=
"serial_cs.c 1.1
23 2000/08/24 18:46:38
(David Hinds)"
;
static
char
*
version
=
"serial_cs.c 1.1
34 2002/05/04 05:48:53
(David Hinds)"
;
#else
#define DEBUG(n, args...)
#endif
...
...
@@ -74,10 +73,13 @@ static int irq_list[4] = { -1 };
/* Enable the speaker? */
static
int
do_sound
=
1
;
/* Skip strict UART tests? */
static
int
buggy_uart
;
MODULE_PARM
(
irq_mask
,
"i"
);
MODULE_PARM
(
irq_list
,
"1-4i"
);
MODULE_PARM
(
do_sound
,
"i"
);
MODULE_PARM
(
buggy_uart
,
"i"
);
/*====================================================================*/
...
...
@@ -100,7 +102,7 @@ static struct multi_id multi_id[] = {
};
#define MULTI_COUNT (sizeof(multi_id)/sizeof(struct multi_id))
typedef
struct
serial_info
{
struct
serial_info
{
dev_link_t
link
;
int
ndev
;
int
multi
;
...
...
@@ -108,8 +110,7 @@ typedef struct serial_info {
int
manfid
;
dev_node_t
node
[
4
];
int
line
[
4
];
struct
work_struct
remove
;
}
serial_info_t
;
};
static
void
serial_config
(
dev_link_t
*
link
);
static
int
serial_event
(
event_t
event
,
int
priority
,
...
...
@@ -124,20 +125,19 @@ static dev_link_t *dev_list = NULL;
/*======================================================================
After a card is removed,
do_serial_releas
e() will unregister
After a card is removed,
serial_remov
e() will unregister
the serial device(s), and release the PCMCIA configuration.
======================================================================*/
/*
* This always runs in process context.
*/
static
void
do_serial_release
(
void
*
arg
)
static
void
serial_remove
(
dev_link_t
*
link
)
{
struct
serial_info
*
info
=
arg
;
int
i
;
struct
serial_info
*
info
=
link
->
priv
;
int
i
,
ret
;
DEBUG
(
0
,
"serial_release(0x%p)
\n
"
,
&
info
->
link
);
link
->
state
&=
~
DEV_PRESENT
;
DEBUG
(
0
,
"serial_release(0x%p)
\n
"
,
link
);
/*
* Recheck to see if the device is still configured.
...
...
@@ -158,25 +158,6 @@ static void do_serial_release(void *arg)
}
}
/*
* This may be called from IRQ context.
*/
static
void
serial_remove
(
dev_link_t
*
link
)
{
struct
serial_info
*
info
=
link
->
priv
;
link
->
state
&=
~
DEV_PRESENT
;
/*
* FIXME: Since the card has probably been removed,
* we should call into the serial layer and hang up
* the ports on the card immediately.
*/
if
(
link
->
state
&
DEV_CONFIG
)
schedule_work
(
&
info
->
remove
);
}
/*======================================================================
serial_attach() creates an "instance" of the driver, allocating
...
...
@@ -187,7 +168,7 @@ static void serial_remove(dev_link_t *link)
static
dev_link_t
*
serial_attach
(
void
)
{
s
erial_info_t
*
info
;
s
truct
serial_info
*
info
;
client_reg_t
client_reg
;
dev_link_t
*
link
;
int
i
,
ret
;
...
...
@@ -202,8 +183,6 @@ static dev_link_t *serial_attach(void)
link
=
&
info
->
link
;
link
->
priv
=
info
;
INIT_WORK
(
&
info
->
remove
,
do_serial_release
,
info
);
link
->
io
.
Attributes1
=
IO_DATA_PATH_WIDTH_8
;
link
->
io
.
NumPorts1
=
8
;
link
->
irq
.
Attributes
=
IRQ_TYPE_EXCLUSIVE
;
...
...
@@ -214,7 +193,6 @@ static dev_link_t *serial_attach(void)
for
(
i
=
0
;
i
<
4
;
i
++
)
link
->
irq
.
IRQInfo2
|=
1
<<
irq_list
[
i
];
link
->
conf
.
Attributes
=
CONF_ENABLE_IRQ
;
link
->
conf
.
Vcc
=
50
;
if
(
do_sound
)
{
link
->
conf
.
Attributes
|=
CONF_ENABLE_SPKR
;
link
->
conf
.
Status
=
CCSR_AUDIO_ENA
;
...
...
@@ -254,7 +232,7 @@ static dev_link_t *serial_attach(void)
static
void
serial_detach
(
dev_link_t
*
link
)
{
s
erial_info_t
*
info
=
link
->
priv
;
s
truct
serial_info
*
info
=
link
->
priv
;
dev_link_t
**
linkp
;
int
ret
;
...
...
@@ -275,7 +253,7 @@ static void serial_detach(dev_link_t * link)
/*
* Ensure that the ports have been released.
*/
do_serial_release
(
info
);
serial_remove
(
link
);
if
(
link
->
handle
)
{
ret
=
CardServices
(
DeregisterClient
,
link
->
handle
);
...
...
@@ -290,7 +268,7 @@ static void serial_detach(dev_link_t * link)
/*====================================================================*/
static
int
setup_serial
(
s
erial_info_t
*
info
,
ioaddr_t
port
,
int
irq
)
static
int
setup_serial
(
s
truct
serial_info
*
info
,
ioaddr_t
port
,
int
irq
)
{
struct
serial_struct
serial
;
int
line
;
...
...
@@ -299,11 +277,13 @@ static int setup_serial(serial_info_t * info, ioaddr_t port, int irq)
serial
.
port
=
port
;
serial
.
irq
=
irq
;
serial
.
flags
=
UPF_SKIP_TEST
|
UPF_SHARE_IRQ
;
if
(
buggy_uart
)
serial
.
flags
|=
UPF_BUGGY_UART
;
line
=
register_serial
(
&
serial
);
if
(
line
<
0
)
{
printk
(
KERN_NOTICE
"serial_cs: register_serial() at 0x%04lx,"
" irq %d failed
\n
"
,
(
u_long
)
serial
.
port
,
serial
.
irq
);
return
-
1
;
return
-
EINVAL
;
}
info
->
line
[
info
->
ndev
]
=
line
;
...
...
@@ -341,7 +321,7 @@ static int simple_config(dev_link_t * link)
{
static
ioaddr_t
base
[
5
]
=
{
0x3f8
,
0x2f8
,
0x3e8
,
0x2e8
,
0x0
};
client_handle_t
handle
=
link
->
handle
;
s
erial_info_t
*
info
=
link
->
priv
;
s
truct
serial_info
*
info
=
link
->
priv
;
tuple_t
tuple
;
u_char
buf
[
256
];
cisparse_t
parse
;
...
...
@@ -445,13 +425,21 @@ static int simple_config(dev_link_t * link)
static
int
multi_config
(
dev_link_t
*
link
)
{
client_handle_t
handle
=
link
->
handle
;
s
erial_info_t
*
info
=
link
->
priv
;
s
truct
serial_info
*
info
=
link
->
priv
;
tuple_t
tuple
;
u_char
buf
[
256
];
cisparse_t
parse
;
cistpl_cftable_entry_t
*
cf
=
&
parse
.
cftable_entry
;
config_info_t
config
;
int
i
,
base2
=
0
;
i
=
CardServices
(
GetConfigurationInfo
,
handle
,
&
config
);
if
(
i
!=
CS_SUCCESS
)
{
cs_error
(
handle
,
GetConfiguration
,
i
);
return
-
1
;
}
link
->
conf
.
Vcc
=
config
.
Vcc
;
tuple
.
TupleData
=
(
cisdata_t
*
)
buf
;
tuple
.
TupleOffset
=
0
;
tuple
.
TupleDataMax
=
255
;
...
...
@@ -524,6 +512,19 @@ static int multi_config(dev_link_t * link)
return
-
1
;
}
/* The Oxford Semiconductor OXCF950 cards are in fact single-port:
8 registers are for the UART, the others are extra registers */
if
(
info
->
manfid
==
MANFID_OXSEMI
)
{
if
(
cf
->
index
==
1
||
cf
->
index
==
3
)
{
setup_serial
(
info
,
base2
,
link
->
irq
.
AssignedIRQ
);
outb
(
12
,
link
->
io
.
BasePort1
+
1
);
}
else
{
setup_serial
(
info
,
link
->
io
.
BasePort1
,
link
->
irq
.
AssignedIRQ
);
outb
(
12
,
base2
+
1
);
}
return
0
;
}
setup_serial
(
info
,
link
->
io
.
BasePort1
,
link
->
irq
.
AssignedIRQ
);
/* The Nokia cards are not really multiport cards */
if
(
info
->
manfid
==
MANFID_NOKIA
)
...
...
@@ -548,7 +549,7 @@ while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed
void
serial_config
(
dev_link_t
*
link
)
{
client_handle_t
handle
=
link
->
handle
;
s
erial_info_t
*
info
=
link
->
priv
;
s
truct
serial_info
*
info
=
link
->
priv
;
tuple_t
tuple
;
u_short
buf
[
128
];
cisparse_t
parse
;
...
...
@@ -631,7 +632,8 @@ void serial_config(dev_link_t * link)
cs_failed:
cs_error
(
link
->
handle
,
last_fn
,
last_ret
);
failed:
do_serial_release
(
info
);
serial_remove
(
link
);
link
->
state
&=
~
DEV_CONFIG_PENDING
;
}
/*======================================================================
...
...
@@ -647,7 +649,7 @@ static int
serial_event
(
event_t
event
,
int
priority
,
event_callback_args_t
*
args
)
{
dev_link_t
*
link
=
args
->
client_data
;
s
erial_info_t
*
info
=
link
->
priv
;
s
truct
serial_info
*
info
=
link
->
priv
;
DEBUG
(
1
,
"serial_event(0x%06x)
\n
"
,
event
);
...
...
drivers/serial/Kconfig
View file @
7cd612a0
...
...
@@ -80,14 +80,14 @@ config SERIAL_8250_CS
config SERIAL_8250_ACPI
bool "8250/16550 device discovery via ACPI namespace"
default y if IA64
depends on ACPI_BUS
depends on ACPI_BUS
&& SERIAL_8250
---help---
If you wish to enable serial port discovery via the ACPI
namespace, say Y here. If unsure, say N.
config SERIAL_8250_HCDP
bool "8250/16550 device discovery support via EFI HCDP table"
depends on IA64
depends on IA64
&& SERIAL_8250
---help---
If you wish to make the serial console port described by the EFI
HCDP table available for use as serial console or general
...
...
include/linux/pci_ids.h
View file @
7cd612a0
...
...
@@ -668,7 +668,6 @@
#define PCI_DEVICE_ID_TI_1220 0xac17
#define PCI_DEVICE_ID_TI_1221 0xac19
#define PCI_DEVICE_ID_TI_1210 0xac1a
#define PCI_DEVICE_ID_TI_1410 0xac50
#define PCI_DEVICE_ID_TI_1450 0xac1b
#define PCI_DEVICE_ID_TI_1225 0xac1c
#define PCI_DEVICE_ID_TI_1251A 0xac1d
...
...
@@ -676,7 +675,9 @@
#define PCI_DEVICE_ID_TI_1251B 0xac1f
#define PCI_DEVICE_ID_TI_4410 0xac41
#define PCI_DEVICE_ID_TI_4451 0xac42
#define PCI_DEVICE_ID_TI_1410 0xac50
#define PCI_DEVICE_ID_TI_1420 0xac51
#define PCI_DEVICE_ID_TI_1520 0xac55
#define PCI_VENDOR_ID_SONY 0x104d
#define PCI_DEVICE_ID_SONY_CXD3222 0x8039
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment