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
nexedi
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
Show 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