[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>
This commit is contained in:

committed by
Paul Mackerras

parent
66c63b84b2
commit
13a5e30cf7
@@ -868,7 +868,7 @@ int ps3av_cmd_avb_param(struct ps3av_pkt_avb_param *avb, u32 send_len)
|
||||
{
|
||||
int res;
|
||||
|
||||
ps3fb_flip_ctl(0); /* flip off */
|
||||
ps3av_flip_ctl(0); /* flip off */
|
||||
|
||||
/* avb packet */
|
||||
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)
|
||||
res);
|
||||
|
||||
out:
|
||||
ps3fb_flip_ctl(1); /* flip on */
|
||||
ps3av_flip_ctl(1); /* flip on */
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -1003,34 +1003,3 @@ void ps3av_cmd_av_monitor_info_dump(const struct ps3av_pkt_av_get_monitor_info *
|
||||
| PS3AV_CMD_AV_LAYOUT_176 \
|
||||
| PS3AV_CMD_AV_LAYOUT_192)
|
||||
|
||||
/************************* vuart ***************************/
|
||||
|
||||
#define POLLING_INTERVAL 25 /* in msec */
|
||||
|
||||
int ps3av_vuart_write(struct ps3_vuart_port_device *dev, const void *buf,
|
||||
unsigned long size)
|
||||
{
|
||||
int error = ps3_vuart_write(dev, buf, size);
|
||||
return error ? error : size;
|
||||
}
|
||||
|
||||
int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf,
|
||||
unsigned long size, int timeout)
|
||||
{
|
||||
int error;
|
||||
int loopcnt = 0;
|
||||
|
||||
timeout = (timeout + POLLING_INTERVAL - 1) / POLLING_INTERVAL;
|
||||
while (loopcnt++ <= timeout) {
|
||||
error = ps3_vuart_read(dev, buf, size);
|
||||
if (!error)
|
||||
return size;
|
||||
if (error != -EAGAIN) {
|
||||
printk(KERN_ERR "%s: ps3_vuart_read failed %d\n",
|
||||
__func__, error);
|
||||
return error;
|
||||
}
|
||||
msleep(POLLING_INTERVAL);
|
||||
}
|
||||
return -EWOULDBLOCK;
|
||||
}
|
||||
|
Reference in New Issue
Block a user