diff options
author | Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> | 2008-10-30 04:12:58 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-11-19 00:03:54 -0500 |
commit | 9b82f3e61758ed897200f0244b63a77c1791bcba (patch) | |
tree | ed1a41b22151fabf4e096ca6b4bee8f1931599c7 /drivers/ps3 | |
parent | 486936cd93e99c802153b3f2f629c5ce62b8c0d4 (diff) |
powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex
Introduce ps3_gpu_mutex to synchronizes GPU-related operations, like:
- invoking the L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT command using the
lv1_gpu_context_attribute() hypervisor call,
- handling the PS3AV_CID_AVB_PARAM packet in the PS3 A/V Settings driver.
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers/ps3')
-rw-r--r-- | drivers/ps3/ps3av.c | 20 | ||||
-rw-r--r-- | drivers/ps3/ps3av_cmd.c | 4 |
2 files changed, 2 insertions, 22 deletions
diff --git a/drivers/ps3/ps3av.c b/drivers/ps3/ps3av.c index 06848b254d57..5324978b73fb 100644 --- a/drivers/ps3/ps3av.c +++ b/drivers/ps3/ps3av.c | |||
@@ -59,8 +59,6 @@ static struct ps3av { | |||
59 | struct ps3av_reply_hdr reply_hdr; | 59 | struct ps3av_reply_hdr reply_hdr; |
60 | u8 raw[PS3AV_BUF_SIZE]; | 60 | u8 raw[PS3AV_BUF_SIZE]; |
61 | } recv_buf; | 61 | } recv_buf; |
62 | void (*flip_ctl)(int on, void *data); | ||
63 | void *flip_data; | ||
64 | } *ps3av; | 62 | } *ps3av; |
65 | 63 | ||
66 | /* color space */ | 64 | /* color space */ |
@@ -939,24 +937,6 @@ int ps3av_audio_mute(int mute) | |||
939 | 937 | ||
940 | EXPORT_SYMBOL_GPL(ps3av_audio_mute); | 938 | EXPORT_SYMBOL_GPL(ps3av_audio_mute); |
941 | 939 | ||
942 | void ps3av_register_flip_ctl(void (*flip_ctl)(int on, void *data), | ||
943 | void *flip_data) | ||
944 | { | ||
945 | mutex_lock(&ps3av->mutex); | ||
946 | ps3av->flip_ctl = flip_ctl; | ||
947 | ps3av->flip_data = flip_data; | ||
948 | mutex_unlock(&ps3av->mutex); | ||
949 | } | ||
950 | EXPORT_SYMBOL_GPL(ps3av_register_flip_ctl); | ||
951 | |||
952 | void ps3av_flip_ctl(int on) | ||
953 | { | ||
954 | mutex_lock(&ps3av->mutex); | ||
955 | if (ps3av->flip_ctl) | ||
956 | ps3av->flip_ctl(on, ps3av->flip_data); | ||
957 | mutex_unlock(&ps3av->mutex); | ||
958 | } | ||
959 | |||
960 | static int ps3av_probe(struct ps3_system_bus_device *dev) | 940 | static int ps3av_probe(struct ps3_system_bus_device *dev) |
961 | { | 941 | { |
962 | int res; | 942 | int res; |
diff --git a/drivers/ps3/ps3av_cmd.c b/drivers/ps3/ps3av_cmd.c index 11eb50318fec..716596e8e5b0 100644 --- a/drivers/ps3/ps3av_cmd.c +++ b/drivers/ps3/ps3av_cmd.c | |||
@@ -864,7 +864,7 @@ int ps3av_cmd_avb_param(struct ps3av_pkt_avb_param *avb, u32 send_len) | |||
864 | { | 864 | { |
865 | int res; | 865 | int res; |
866 | 866 | ||
867 | ps3av_flip_ctl(0); /* flip off */ | 867 | mutex_lock(&ps3_gpu_mutex); |
868 | 868 | ||
869 | /* avb packet */ | 869 | /* avb packet */ |
870 | res = ps3av_do_pkt(PS3AV_CID_AVB_PARAM, send_len, sizeof(*avb), | 870 | res = ps3av_do_pkt(PS3AV_CID_AVB_PARAM, send_len, sizeof(*avb), |
@@ -878,7 +878,7 @@ int ps3av_cmd_avb_param(struct ps3av_pkt_avb_param *avb, u32 send_len) | |||
878 | res); | 878 | res); |
879 | 879 | ||
880 | out: | 880 | out: |
881 | ps3av_flip_ctl(1); /* flip on */ | 881 | mutex_unlock(&ps3_gpu_mutex); |
882 | return res; | 882 | return res; |
883 | } | 883 | } |
884 | 884 | ||