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
f7d6ae35
Commit
f7d6ae35
authored
Jun 26, 2003
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] PCI Hotplug: ibmphp: add release() callback and other minor cleanups
parent
3fda6c8f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
74 additions
and
101 deletions
+74
-101
drivers/pci/hotplug/ibmphp.h
drivers/pci/hotplug/ibmphp.h
+1
-2
drivers/pci/hotplug/ibmphp_core.c
drivers/pci/hotplug/ibmphp_core.c
+3
-22
drivers/pci/hotplug/ibmphp_ebda.c
drivers/pci/hotplug/ibmphp_ebda.c
+69
-10
drivers/pci/hotplug/ibmphp_hpc.c
drivers/pci/hotplug/ibmphp_hpc.c
+1
-67
No files found.
drivers/pci/hotplug/ibmphp.h
View file @
f7d6ae35
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Written By: Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation
* Written By: Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation
*
*
* Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001
,2002
IBM Corp.
* Copyright (c) 2001
-2003
IBM Corp.
*
*
* All rights reserved.
* All rights reserved.
*
*
...
@@ -398,7 +398,6 @@ extern int ibmphp_hpc_readslot (struct slot *, u8, u8 *);
...
@@ -398,7 +398,6 @@ extern int ibmphp_hpc_readslot (struct slot *, u8, u8 *);
extern
int
ibmphp_hpc_writeslot
(
struct
slot
*
,
u8
);
extern
int
ibmphp_hpc_writeslot
(
struct
slot
*
,
u8
);
extern
void
ibmphp_lock_operations
(
void
);
extern
void
ibmphp_lock_operations
(
void
);
extern
void
ibmphp_unlock_operations
(
void
);
extern
void
ibmphp_unlock_operations
(
void
);
extern
int
ibmphp_hpc_fillhpslotinfo
(
struct
hotplug_slot
*
);
extern
int
ibmphp_hpc_start_poll_thread
(
void
);
extern
int
ibmphp_hpc_start_poll_thread
(
void
);
extern
void
ibmphp_hpc_stop_poll_thread
(
void
);
extern
void
ibmphp_hpc_stop_poll_thread
(
void
);
...
...
drivers/pci/hotplug/ibmphp_core.c
View file @
f7d6ae35
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
*
*
* Written By: Chuck Cole, Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation
* Written By: Chuck Cole, Jyoti Shah, Tong Yu, Irene Zubarev, IBM Corporation
*
*
* Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001
,2003
Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001
,2002
IBM Corp.
* Copyright (c) 2001
-2003
IBM Corp.
*
*
* All rights reserved.
* All rights reserved.
*
*
...
@@ -739,26 +739,8 @@ static void free_slots (void)
...
@@ -739,26 +739,8 @@ static void free_slots (void)
debug
(
"%s -- enter
\n
"
,
__FUNCTION__
);
debug
(
"%s -- enter
\n
"
,
__FUNCTION__
);
list_for_each_safe
(
tmp
,
next
,
&
ibmphp_slot_head
)
{
list_for_each_safe
(
tmp
,
next
,
&
ibmphp_slot_head
)
{
slot_cur
=
list_entry
(
tmp
,
struct
slot
,
ibm_slot_list
);
slot_cur
=
list_entry
(
tmp
,
struct
slot
,
ibm_slot_list
);
pci_hp_deregister
(
slot_cur
->
hotplug_slot
);
pci_hp_deregister
(
slot_cur
->
hotplug_slot
);
if
(
slot_cur
->
hotplug_slot
)
{
kfree
(
slot_cur
->
hotplug_slot
);
slot_cur
->
hotplug_slot
=
NULL
;
}
if
(
slot_cur
->
ctrl
)
slot_cur
->
ctrl
=
NULL
;
if
(
slot_cur
->
bus_on
)
slot_cur
->
bus_on
=
NULL
;
ibmphp_unconfigure_card
(
&
slot_cur
,
-
1
);
/* we don't want to actually remove the resources, since free_resources will do just that */
kfree
(
slot_cur
);
slot_cur
=
NULL
;
}
}
debug
(
"%s -- exit
\n
"
,
__FUNCTION__
);
debug
(
"%s -- exit
\n
"
,
__FUNCTION__
);
}
}
...
@@ -1221,7 +1203,6 @@ int ibmphp_do_disable_slot (struct slot *slot_cur)
...
@@ -1221,7 +1203,6 @@ int ibmphp_do_disable_slot (struct slot *slot_cur)
{
{
int
rc
;
int
rc
;
u8
flag
;
u8
flag
;
int
parm
=
0
;
debug
(
"DISABLING SLOT...
\n
"
);
debug
(
"DISABLING SLOT...
\n
"
);
...
@@ -1270,7 +1251,7 @@ int ibmphp_do_disable_slot (struct slot *slot_cur)
...
@@ -1270,7 +1251,7 @@ int ibmphp_do_disable_slot (struct slot *slot_cur)
return
0
;
return
0
;
}
}
rc
=
ibmphp_unconfigure_card
(
&
slot_cur
,
parm
);
rc
=
ibmphp_unconfigure_card
(
&
slot_cur
,
0
);
slot_cur
->
func
=
NULL
;
slot_cur
->
func
=
NULL
;
debug
(
"in disable_slot. after unconfigure_card
\n
"
);
debug
(
"in disable_slot. after unconfigure_card
\n
"
);
if
(
rc
)
{
if
(
rc
)
{
...
...
drivers/pci/hotplug/ibmphp_ebda.c
View file @
f7d6ae35
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
*
*
* Written By: Tong Yu, IBM Corporation
* Written By: Tong Yu, IBM Corporation
*
*
* Copyright (c) 2001 Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001
,2003
Greg Kroah-Hartman (greg@kroah.com)
* Copyright (c) 2001
,2002
IBM Corp.
* Copyright (c) 2001
-2003
IBM Corp.
*
*
* All rights reserved.
* All rights reserved.
*
*
...
@@ -727,6 +727,64 @@ static char *create_file_name (struct slot * slot_cur)
...
@@ -727,6 +727,64 @@ static char *create_file_name (struct slot * slot_cur)
return
str
;
return
str
;
}
}
static
int
fillslotinfo
(
struct
hotplug_slot
*
hotplug_slot
)
{
struct
slot
*
slot
;
int
rc
=
0
;
if
(
!
hotplug_slot
||
!
hotplug_slot
->
private
)
return
-
EINVAL
;
slot
=
hotplug_slot
->
private
;
rc
=
ibmphp_hpc_readslot
(
slot
,
READ_ALLSTAT
,
NULL
);
if
(
rc
)
return
rc
;
// power - enabled:1 not:0
hotplug_slot
->
info
->
power_status
=
SLOT_POWER
(
slot
->
status
);
// attention - off:0, on:1, blinking:2
hotplug_slot
->
info
->
attention_status
=
SLOT_ATTN
(
slot
->
status
,
slot
->
ext_status
);
// latch - open:1 closed:0
hotplug_slot
->
info
->
latch_status
=
SLOT_LATCH
(
slot
->
status
);
// pci board - present:1 not:0
if
(
SLOT_PRESENT
(
slot
->
status
))
hotplug_slot
->
info
->
adapter_status
=
1
;
else
hotplug_slot
->
info
->
adapter_status
=
0
;
/*
if (slot->bus_on->supported_bus_mode
&& (slot->bus_on->supported_speed == BUS_SPEED_66))
hotplug_slot->info->max_bus_speed_status = BUS_SPEED_66PCIX;
else
hotplug_slot->info->max_bus_speed_status = slot->bus_on->supported_speed;
*/
return
rc
;
}
static
void
release_slot
(
struct
hotplug_slot
*
hotplug_slot
)
{
struct
slot
*
slot
;
if
(
!
hotplug_slot
||
!
hotplug_slot
->
private
)
return
;
slot
=
hotplug_slot
->
private
;
kfree
(
slot
->
hotplug_slot
->
info
);
kfree
(
slot
->
hotplug_slot
->
name
);
kfree
(
slot
->
hotplug_slot
);
slot
->
ctrl
=
NULL
;
slot
->
bus_on
=
NULL
;
/* we don't want to actually remove the resources, since free_resources will do just that */
ibmphp_unconfigure_card
(
&
slot
,
-
1
);
kfree
(
slot
);
}
static
struct
pci_driver
ibmphp_driver
;
static
struct
pci_driver
ibmphp_driver
;
/*
/*
...
@@ -900,32 +958,32 @@ static int __init ebda_rsrc_controller (void)
...
@@ -900,32 +958,32 @@ static int __init ebda_rsrc_controller (void)
// register slots with hpc core as well as create linked list of ibm slot
// register slots with hpc core as well as create linked list of ibm slot
for
(
index
=
0
;
index
<
hpc_ptr
->
slot_count
;
index
++
)
{
for
(
index
=
0
;
index
<
hpc_ptr
->
slot_count
;
index
++
)
{
hp_slot_ptr
=
(
struct
hotplug_slot
*
)
kmalloc
(
sizeof
(
struct
hotplug_slot
),
GFP_KERNEL
);
hp_slot_ptr
=
kmalloc
(
sizeof
(
*
hp_slot_ptr
),
GFP_KERNEL
);
if
(
!
hp_slot_ptr
)
{
if
(
!
hp_slot_ptr
)
{
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
goto
error_no_hp_slot
;
goto
error_no_hp_slot
;
}
}
memset
(
hp_slot_ptr
,
0
,
sizeof
(
struct
hotplug_slot
));
memset
(
hp_slot_ptr
,
0
,
sizeof
(
*
hp_slot_ptr
));
hp_slot_ptr
->
info
=
(
struct
hotplug_slot_info
*
)
kmalloc
(
sizeof
(
struct
hotplug_slot_info
),
GFP_KERNEL
);
hp_slot_ptr
->
info
=
kmalloc
(
sizeof
(
struct
hotplug_slot_info
),
GFP_KERNEL
);
if
(
!
hp_slot_ptr
->
info
)
{
if
(
!
hp_slot_ptr
->
info
)
{
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
goto
error_no_hp_info
;
goto
error_no_hp_info
;
}
}
memset
(
hp_slot_ptr
->
info
,
0
,
sizeof
(
struct
hotplug_slot_info
));
memset
(
hp_slot_ptr
->
info
,
0
,
sizeof
(
struct
hotplug_slot_info
));
hp_slot_ptr
->
name
=
(
char
*
)
kmalloc
(
30
,
GFP_KERNEL
);
hp_slot_ptr
->
name
=
kmalloc
(
30
,
GFP_KERNEL
);
if
(
!
hp_slot_ptr
->
name
)
{
if
(
!
hp_slot_ptr
->
name
)
{
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
goto
error_no_hp_name
;
goto
error_no_hp_name
;
}
}
tmp_slot
=
kmalloc
(
sizeof
(
struct
slot
),
GFP_KERNEL
);
tmp_slot
=
kmalloc
(
sizeof
(
*
tmp_
slot
),
GFP_KERNEL
);
if
(
!
tmp_slot
)
{
if
(
!
tmp_slot
)
{
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
goto
error_no_slot
;
goto
error_no_slot
;
}
}
memset
(
tmp_slot
,
0
,
sizeof
(
*
tmp_slot
));
memset
(
tmp_slot
,
0
,
sizeof
(
*
tmp_slot
));
tmp_slot
->
flag
=
TRUE
;
tmp_slot
->
flag
=
TRUE
;
...
@@ -959,8 +1017,9 @@ static int __init ebda_rsrc_controller (void)
...
@@ -959,8 +1017,9 @@ static int __init ebda_rsrc_controller (void)
tmp_slot
->
hotplug_slot
=
hp_slot_ptr
;
tmp_slot
->
hotplug_slot
=
hp_slot_ptr
;
hp_slot_ptr
->
private
=
tmp_slot
;
hp_slot_ptr
->
private
=
tmp_slot
;
hp_slot_ptr
->
release
=
release_slot
;
rc
=
ibmphp_hpc_fillhpslotinfo
(
hp_slot_ptr
);
rc
=
fillslotinfo
(
hp_slot_ptr
);
if
(
rc
)
if
(
rc
)
goto
error
;
goto
error
;
...
...
drivers/pci/hotplug/ibmphp_hpc.c
View file @
f7d6ae35
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
*
*
* Written By: Jyoti Shah, IBM Corporation
* Written By: Jyoti Shah, IBM Corporation
*
*
* Copyright (c) 2001-200
2
IBM Corp.
* Copyright (c) 2001-200
3
IBM Corp.
*
*
* All rights reserved.
* All rights reserved.
*
*
...
@@ -114,7 +114,6 @@ static u8 hpc_readcmdtoindex (u8, u8);
...
@@ -114,7 +114,6 @@ static u8 hpc_readcmdtoindex (u8, u8);
static
void
get_hpc_access
(
void
);
static
void
get_hpc_access
(
void
);
static
void
free_hpc_access
(
void
);
static
void
free_hpc_access
(
void
);
static
void
poll_hpc
(
void
);
static
void
poll_hpc
(
void
);
static
int
update_slot
(
struct
slot
*
,
u8
);
static
int
process_changeinstatus
(
struct
slot
*
,
struct
slot
*
);
static
int
process_changeinstatus
(
struct
slot
*
,
struct
slot
*
);
static
int
process_changeinlatch
(
u8
,
u8
,
struct
controller
*
);
static
int
process_changeinlatch
(
u8
,
u8
,
struct
controller
*
);
static
int
hpc_poll_thread
(
void
*
);
static
int
hpc_poll_thread
(
void
*
);
...
@@ -917,71 +916,6 @@ static void poll_hpc (void)
...
@@ -917,71 +916,6 @@ static void poll_hpc (void)
}
}
/* ----------------------------------------------------------------------
* Name: ibmphp_hpc_fillhpslotinfo(hotplug_slot * phpslot)
*
* Action: fill out the hotplug_slot info
*
* Input: pointer to hotplug_slot
*
* Return
* Value: 0 or error codes
*-----------------------------------------------------------------------*/
int
ibmphp_hpc_fillhpslotinfo
(
struct
hotplug_slot
*
phpslot
)
{
int
rc
=
0
;
struct
slot
*
pslot
;
if
(
phpslot
&&
phpslot
->
private
)
{
pslot
=
(
struct
slot
*
)
phpslot
->
private
;
rc
=
update_slot
(
pslot
,
(
u8
)
TRUE
);
if
(
!
rc
)
{
// power - enabled:1 not:0
phpslot
->
info
->
power_status
=
SLOT_POWER
(
pslot
->
status
);
// attention - off:0, on:1, blinking:2
phpslot
->
info
->
attention_status
=
SLOT_ATTN
(
pslot
->
status
,
pslot
->
ext_status
);
// latch - open:1 closed:0
phpslot
->
info
->
latch_status
=
SLOT_LATCH
(
pslot
->
status
);
// pci board - present:1 not:0
if
(
SLOT_PRESENT
(
pslot
->
status
))
phpslot
->
info
->
adapter_status
=
1
;
else
phpslot
->
info
->
adapter_status
=
0
;
/*
if (pslot->bus_on->supported_bus_mode
&& (pslot->bus_on->supported_speed == BUS_SPEED_66))
phpslot->info->max_bus_speed_status = BUS_SPEED_66PCIX;
else
phpslot->info->max_bus_speed_status = pslot->bus_on->supported_speed;
*/
}
else
rc
=
-
EINVAL
;
}
else
rc
=
-
EINVAL
;
return
rc
;
}
/*----------------------------------------------------------------------
* Name: update_slot
*
* Action: fill out slot status and extended status, controller status
*
* Input: pointer to slot struct
*---------------------------------------------------------------------*/
static
int
update_slot
(
struct
slot
*
pslot
,
u8
update
)
{
int
rc
=
0
;
debug
(
"%s - Entry pslot[%p]
\n
"
,
__FUNCTION__
,
pslot
);
rc
=
ibmphp_hpc_readslot
(
pslot
,
READ_ALLSTAT
,
NULL
);
debug
(
"%s - Exit rc[%d]
\n
"
,
__FUNCTION__
,
rc
);
return
rc
;
}
/*----------------------------------------------------------------------
/*----------------------------------------------------------------------
* Name: process_changeinstatus
* Name: process_changeinstatus
*
*
...
...
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