aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ps3/ps3av_cmd.c
diff options
context:
space:
mode:
authorGeoff Levand <geoffrey.levand@am.sony.com>2007-06-15 18:05:01 -0400
committerPaul Mackerras <paulus@samba.org>2007-06-28 05:16:42 -0400
commit13a5e30cf7407415387b5592b15ef4b352d28283 (patch)
tree8db7937b82960d0f59f3bbdf4715b347fc7a04d1 /drivers/ps3/ps3av_cmd.c
parent66c63b84b23d39ce191a18833b5a769370114ec9 (diff)
[POWERPC] PS3: Rework AV settings driver
Make the PS3 ps3av driver a loadable module. - Replace static data with kmalloc()'ed. o Allocate struct ps3av dynamically, as it contains data used as vuart receive/transmit buffers o Move static recv_buf from ps3av_do_pkt() to struct ps3av - Move ps3av_vuart_{read,write}() from drivers/ps3/ps3av_cmd.c to drivers/ps3/ps3av.c and make them static as they're used in that file only. - Make device a PS3 system-bus device. - Update copyright formatting. - Make two new routines ps3av_register_flip_ctl() and ps3av_flip_ctl() to support late binding of the frame buffer flip control routine. 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/ps3av_cmd.c')
-rw-r--r--drivers/ps3/ps3av_cmd.c35
1 files changed, 2 insertions, 33 deletions
diff --git a/drivers/ps3/ps3av_cmd.c b/drivers/ps3/ps3av_cmd.c
index 7c4fb264dda2..f72f5ddf18e4 100644
--- a/drivers/ps3/ps3av_cmd.c
+++ b/drivers/ps3/ps3av_cmd.c
@@ -868,7 +868,7 @@ int ps3av_cmd_avb_param(struct ps3av_pkt_avb_param *avb, u32 send_len)
868{ 868{
869 int res; 869 int res;
870 870
871 ps3fb_flip_ctl(0); /* flip off */ 871 ps3av_flip_ctl(0); /* flip off */
872 872
873 /* avb packet */ 873 /* avb packet */
874 res = ps3av_do_pkt(PS3AV_CID_AVB_PARAM, send_len, sizeof(*avb), 874 res = ps3av_do_pkt(PS3AV_CID_AVB_PARAM, send_len, sizeof(*avb),
@@ -882,7 +882,7 @@ int ps3av_cmd_avb_param(struct ps3av_pkt_avb_param *avb, u32 send_len)
882 res); 882 res);
883 883
884 out: 884 out:
885 ps3fb_flip_ctl(1); /* flip on */ 885 ps3av_flip_ctl(1); /* flip on */
886 return res; 886 return res;
887} 887}
888 888
@@ -1003,34 +1003,3 @@ void ps3av_cmd_av_monitor_info_dump(const struct ps3av_pkt_av_get_monitor_info *
1003 | PS3AV_CMD_AV_LAYOUT_176 \ 1003 | PS3AV_CMD_AV_LAYOUT_176 \
1004 | PS3AV_CMD_AV_LAYOUT_192) 1004 | PS3AV_CMD_AV_LAYOUT_192)
1005 1005
1006/************************* vuart ***************************/
1007
1008#define POLLING_INTERVAL 25 /* in msec */
1009
1010int ps3av_vuart_write(struct ps3_vuart_port_device *dev, const void *buf,
1011 unsigned long size)
1012{
1013 int error = ps3_vuart_write(dev, buf, size);
1014 return error ? error : size;
1015}
1016
1017int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf,
1018 unsigned long size, int timeout)
1019{
1020 int error;
1021 int loopcnt = 0;
1022
1023 timeout = (timeout + POLLING_INTERVAL - 1) / POLLING_INTERVAL;
1024 while (loopcnt++ <= timeout) {
1025 error = ps3_vuart_read(dev, buf, size);
1026 if (!error)
1027 return size;
1028 if (error != -EAGAIN) {
1029 printk(KERN_ERR "%s: ps3_vuart_read failed %d\n",
1030 __func__, error);
1031 return error;
1032 }
1033 msleep(POLLING_INTERVAL);
1034 }
1035 return -EWOULDBLOCK;
1036}