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
10379a25
Commit
10379a25
authored
Jan 31, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
parents
63b3ced0
3b0e8ead
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
76 additions
and
20 deletions
+76
-20
drivers/char/agp/amd64-agp.c
drivers/char/agp/amd64-agp.c
+24
-0
drivers/char/agp/ati-agp.c
drivers/char/agp/ati-agp.c
+20
-0
drivers/char/agp/frontend.c
drivers/char/agp/frontend.c
+14
-14
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+13
-2
drivers/char/agp/isoch.c
drivers/char/agp/isoch.c
+1
-3
include/linux/agpgart.h
include/linux/agpgart.h
+2
-1
include/linux/pci_ids.h
include/linux/pci_ids.h
+2
-0
No files found.
drivers/char/agp/amd64-agp.c
View file @
10379a25
...
@@ -600,6 +600,26 @@ static void __devexit agp_amd64_remove(struct pci_dev *pdev)
...
@@ -600,6 +600,26 @@ static void __devexit agp_amd64_remove(struct pci_dev *pdev)
agp_put_bridge
(
bridge
);
agp_put_bridge
(
bridge
);
}
}
#ifdef CONFIG_PM
static
int
agp_amd64_suspend
(
struct
pci_dev
*
pdev
,
pm_message_t
state
)
{
pci_save_state
(
pdev
);
pci_set_power_state
(
pdev
,
pci_choose_state
(
pdev
,
state
));
return
0
;
}
static
int
agp_amd64_resume
(
struct
pci_dev
*
pdev
)
{
pci_set_power_state
(
pdev
,
PCI_D0
);
pci_restore_state
(
pdev
);
return
amd_8151_configure
();
}
#endif
/* CONFIG_PM */
static
struct
pci_device_id
agp_amd64_pci_table
[]
=
{
static
struct
pci_device_id
agp_amd64_pci_table
[]
=
{
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
...
@@ -718,6 +738,10 @@ static struct pci_driver agp_amd64_pci_driver = {
...
@@ -718,6 +738,10 @@ static struct pci_driver agp_amd64_pci_driver = {
.
id_table
=
agp_amd64_pci_table
,
.
id_table
=
agp_amd64_pci_table
,
.
probe
=
agp_amd64_probe
,
.
probe
=
agp_amd64_probe
,
.
remove
=
agp_amd64_remove
,
.
remove
=
agp_amd64_remove
,
#ifdef CONFIG_PM
.
suspend
=
agp_amd64_suspend
,
.
resume
=
agp_amd64_resume
,
#endif
};
};
...
...
drivers/char/agp/ati-agp.c
View file @
10379a25
...
@@ -244,6 +244,22 @@ static int ati_configure(void)
...
@@ -244,6 +244,22 @@ static int ati_configure(void)
}
}
#ifdef CONFIG_PM
static
int
agp_ati_resume
(
struct
pci_dev
*
dev
)
{
pci_restore_state
(
dev
);
return
ati_configure
();
}
static
int
agp_ati_suspend
(
struct
pci_dev
*
dev
,
pm_message_t
state
)
{
pci_save_state
(
dev
);
return
0
;
}
#endif
/*
/*
*Since we don't need contigious memory we just try
*Since we don't need contigious memory we just try
* to get the gatt table once
* to get the gatt table once
...
@@ -525,6 +541,10 @@ static struct pci_driver agp_ati_pci_driver = {
...
@@ -525,6 +541,10 @@ static struct pci_driver agp_ati_pci_driver = {
.
id_table
=
agp_ati_pci_table
,
.
id_table
=
agp_ati_pci_table
,
.
probe
=
agp_ati_probe
,
.
probe
=
agp_ati_probe
,
.
remove
=
agp_ati_remove
,
.
remove
=
agp_ati_remove
,
#ifdef CONFIG_PM
.
resume
=
agp_ati_resume
,
.
suspend
=
agp_ati_suspend
,
#endif
};
};
static
int
__init
agp_ati_init
(
void
)
static
int
__init
agp_ati_init
(
void
)
...
...
drivers/char/agp/frontend.c
View file @
10379a25
...
@@ -592,7 +592,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
...
@@ -592,7 +592,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
struct
agp_file_private
*
priv
=
file
->
private_data
;
struct
agp_file_private
*
priv
=
file
->
private_data
;
struct
agp_kern_info
kerninfo
;
struct
agp_kern_info
kerninfo
;
down
(
&
(
agp_fe
.
agp_mutex
));
mutex_lock
(
&
(
agp_fe
.
agp_mutex
));
if
(
agp_fe
.
backend_acquired
!=
TRUE
)
if
(
agp_fe
.
backend_acquired
!=
TRUE
)
goto
out_eperm
;
goto
out_eperm
;
...
@@ -627,7 +627,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
...
@@ -627,7 +627,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
size
,
vma
->
vm_page_prot
))
{
size
,
vma
->
vm_page_prot
))
{
goto
out_again
;
goto
out_again
;
}
}
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
0
;
return
0
;
}
}
...
@@ -643,20 +643,20 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
...
@@ -643,20 +643,20 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)
size
,
vma
->
vm_page_prot
))
{
size
,
vma
->
vm_page_prot
))
{
goto
out_again
;
goto
out_again
;
}
}
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
0
;
return
0
;
}
}
out_eperm:
out_eperm:
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
-
EPERM
;
return
-
EPERM
;
out_inval:
out_inval:
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
-
EINVAL
;
return
-
EINVAL
;
out_again:
out_again:
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
...
@@ -664,7 +664,7 @@ static int agp_release(struct inode *inode, struct file *file)
...
@@ -664,7 +664,7 @@ static int agp_release(struct inode *inode, struct file *file)
{
{
struct
agp_file_private
*
priv
=
file
->
private_data
;
struct
agp_file_private
*
priv
=
file
->
private_data
;
down
(
&
(
agp_fe
.
agp_mutex
));
mutex_lock
(
&
(
agp_fe
.
agp_mutex
));
DBG
(
"priv=%p"
,
priv
);
DBG
(
"priv=%p"
,
priv
);
...
@@ -687,7 +687,7 @@ static int agp_release(struct inode *inode, struct file *file)
...
@@ -687,7 +687,7 @@ static int agp_release(struct inode *inode, struct file *file)
agp_remove_file_private
(
priv
);
agp_remove_file_private
(
priv
);
kfree
(
priv
);
kfree
(
priv
);
file
->
private_data
=
NULL
;
file
->
private_data
=
NULL
;
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
0
;
return
0
;
}
}
...
@@ -698,7 +698,7 @@ static int agp_open(struct inode *inode, struct file *file)
...
@@ -698,7 +698,7 @@ static int agp_open(struct inode *inode, struct file *file)
struct
agp_client
*
client
;
struct
agp_client
*
client
;
int
rc
=
-
ENXIO
;
int
rc
=
-
ENXIO
;
down
(
&
(
agp_fe
.
agp_mutex
));
mutex_lock
(
&
(
agp_fe
.
agp_mutex
));
if
(
minor
!=
AGPGART_MINOR
)
if
(
minor
!=
AGPGART_MINOR
)
goto
err_out
;
goto
err_out
;
...
@@ -723,13 +723,13 @@ static int agp_open(struct inode *inode, struct file *file)
...
@@ -723,13 +723,13 @@ static int agp_open(struct inode *inode, struct file *file)
file
->
private_data
=
(
void
*
)
priv
;
file
->
private_data
=
(
void
*
)
priv
;
agp_insert_file_private
(
priv
);
agp_insert_file_private
(
priv
);
DBG
(
"private=%p, client=%p"
,
priv
,
client
);
DBG
(
"private=%p, client=%p"
,
priv
,
client
);
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
0
;
return
0
;
err_out_nomem:
err_out_nomem:
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
err_out:
err_out:
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
rc
;
return
rc
;
}
}
...
@@ -985,7 +985,7 @@ static int agp_ioctl(struct inode *inode, struct file *file,
...
@@ -985,7 +985,7 @@ static int agp_ioctl(struct inode *inode, struct file *file,
int
ret_val
=
-
ENOTTY
;
int
ret_val
=
-
ENOTTY
;
DBG
(
"priv=%p, cmd=%x"
,
curr_priv
,
cmd
);
DBG
(
"priv=%p, cmd=%x"
,
curr_priv
,
cmd
);
down
(
&
(
agp_fe
.
agp_mutex
));
mutex_lock
(
&
(
agp_fe
.
agp_mutex
));
if
((
agp_fe
.
current_controller
==
NULL
)
&&
if
((
agp_fe
.
current_controller
==
NULL
)
&&
(
cmd
!=
AGPIOC_ACQUIRE
))
{
(
cmd
!=
AGPIOC_ACQUIRE
))
{
...
@@ -1055,7 +1055,7 @@ static int agp_ioctl(struct inode *inode, struct file *file,
...
@@ -1055,7 +1055,7 @@ static int agp_ioctl(struct inode *inode, struct file *file,
ioctl_out:
ioctl_out:
DBG
(
"ioctl returns %d
\n
"
,
ret_val
);
DBG
(
"ioctl returns %d
\n
"
,
ret_val
);
up
(
&
(
agp_fe
.
agp_mutex
));
mutex_unlock
(
&
(
agp_fe
.
agp_mutex
));
return
ret_val
;
return
ret_val
;
}
}
...
@@ -1081,7 +1081,7 @@ static struct miscdevice agp_miscdev =
...
@@ -1081,7 +1081,7 @@ static struct miscdevice agp_miscdev =
int
agp_frontend_initialize
(
void
)
int
agp_frontend_initialize
(
void
)
{
{
memset
(
&
agp_fe
,
0
,
sizeof
(
struct
agp_front_data
));
memset
(
&
agp_fe
,
0
,
sizeof
(
struct
agp_front_data
));
sema_init
(
&
(
agp_fe
.
agp_mutex
),
1
);
mutex_init
(
&
(
agp_fe
.
agp_mutex
)
);
if
(
misc_register
(
&
agp_miscdev
))
{
if
(
misc_register
(
&
agp_miscdev
))
{
printk
(
KERN_ERR
PFX
"unable to get minor: %d
\n
"
,
AGPGART_MINOR
);
printk
(
KERN_ERR
PFX
"unable to get minor: %d
\n
"
,
AGPGART_MINOR
);
...
...
drivers/char/agp/intel-agp.c
View file @
10379a25
...
@@ -422,7 +422,8 @@ static void intel_i830_init_gtt_entries(void)
...
@@ -422,7 +422,8 @@ static void intel_i830_init_gtt_entries(void)
/* Check it's really I915G */
/* Check it's really I915G */
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
)
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945GM_HB
)
gtt_entries
=
MB
(
48
)
-
KB
(
size
);
gtt_entries
=
MB
(
48
)
-
KB
(
size
);
else
else
gtt_entries
=
0
;
gtt_entries
=
0
;
...
@@ -431,7 +432,8 @@ static void intel_i830_init_gtt_entries(void)
...
@@ -431,7 +432,8 @@ static void intel_i830_init_gtt_entries(void)
/* Check it's really I915G */
/* Check it's really I915G */
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
)
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945GM_HB
)
gtt_entries
=
MB
(
64
)
-
KB
(
size
);
gtt_entries
=
MB
(
64
)
-
KB
(
size
);
else
else
gtt_entries
=
0
;
gtt_entries
=
0
;
...
@@ -1681,6 +1683,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
...
@@ -1681,6 +1683,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
}
}
name
=
"945G"
;
name
=
"945G"
;
break
;
break
;
case
PCI_DEVICE_ID_INTEL_82945GM_HB
:
if
(
find_i830
(
PCI_DEVICE_ID_INTEL_82945GM_IG
))
{
bridge
->
driver
=
&
intel_915_driver
;
}
else
{
bridge
->
driver
=
&
intel_845_driver
;
}
name
=
"945GM"
;
break
;
case
PCI_DEVICE_ID_INTEL_7505_0
:
case
PCI_DEVICE_ID_INTEL_7505_0
:
bridge
->
driver
=
&
intel_7505_driver
;
bridge
->
driver
=
&
intel_7505_driver
;
name
=
"E7505"
;
name
=
"E7505"
;
...
@@ -1821,6 +1831,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
...
@@ -1821,6 +1831,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
ID
(
PCI_DEVICE_ID_INTEL_82915G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82915G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82915GM_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82915GM_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82945G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82945G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82945GM_HB
),
{
}
{
}
};
};
...
...
drivers/char/agp/isoch.c
View file @
10379a25
...
@@ -218,10 +218,8 @@ static int agp_3_5_isochronous_node_enable(struct agp_bridge_data *bridge,
...
@@ -218,10 +218,8 @@ static int agp_3_5_isochronous_node_enable(struct agp_bridge_data *bridge,
master
[
cdev
].
rq
*=
(
1
<<
(
master
[
cdev
].
y
-
1
));
master
[
cdev
].
rq
*=
(
1
<<
(
master
[
cdev
].
y
-
1
));
tot_rq
+=
master
[
cdev
].
rq
;
tot_rq
+=
master
[
cdev
].
rq
;
if
(
cdev
==
ndevs
-
1
)
master
[
cdev
].
n
+=
rem
;
}
}
master
[
ndevs
-
1
].
n
+=
rem
;
/* Figure the number of isochronous and asynchronous RQ slots the
/* Figure the number of isochronous and asynchronous RQ slots the
* target is providing. */
* target is providing. */
...
...
include/linux/agpgart.h
View file @
10379a25
...
@@ -111,6 +111,7 @@ typedef struct _agp_unbind {
...
@@ -111,6 +111,7 @@ typedef struct _agp_unbind {
}
agp_unbind
;
}
agp_unbind
;
#else
/* __KERNEL__ */
#else
/* __KERNEL__ */
#include <linux/mutex.h>
#define AGPGART_MINOR 175
#define AGPGART_MINOR 175
...
@@ -201,7 +202,7 @@ struct agp_file_private {
...
@@ -201,7 +202,7 @@ struct agp_file_private {
};
};
struct
agp_front_data
{
struct
agp_front_data
{
struct
semaphore
agp_mutex
;
struct
mutex
agp_mutex
;
struct
agp_controller
*
current_controller
;
struct
agp_controller
*
current_controller
;
struct
agp_controller
*
controllers
;
struct
agp_controller
*
controllers
;
struct
agp_file_private
*
file_priv_list
;
struct
agp_file_private
*
file_priv_list
;
...
...
include/linux/pci_ids.h
View file @
10379a25
...
@@ -2085,6 +2085,8 @@
...
@@ -2085,6 +2085,8 @@
#define PCI_DEVICE_ID_INTEL_82915GM_IG 0x2592
#define PCI_DEVICE_ID_INTEL_82915GM_IG 0x2592
#define PCI_DEVICE_ID_INTEL_82945G_HB 0x2770
#define PCI_DEVICE_ID_INTEL_82945G_HB 0x2770
#define PCI_DEVICE_ID_INTEL_82945G_IG 0x2772
#define PCI_DEVICE_ID_INTEL_82945G_IG 0x2772
#define PCI_DEVICE_ID_INTEL_82945GM_HB 0x27A0
#define PCI_DEVICE_ID_INTEL_82945GM_IG 0x27A2
#define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640
#define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640
#define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641
#define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641
#define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642
#define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642
...
...
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