.\" PS3 video mode utility.
.\"
.\" Copyright (C) 2008 Sony Computer Entertainment Inc.
.\" Copyright 2008 Sony Corp.
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; version 2 of the License.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; if not, write to the Free Software
.\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
.\"
.\" Maintainer's Notes:
.\"  * For syntax help see the man pages for 'mdoc' and 'mdoc.samples'.
.\"  * To check syntax use this:
.\"    'groff -C -mtty-char -Tutf8 -man ps3-video-mode.8'.
.\"  * To check format use this: 'less ps3-video-mode.8'.
.\"
.Dd ""
.Dt ps3-video-mode 8
.Os
.\"
.Sh NAME
.\" ====
.Nm ps3-video-mode
.Nd PS3 video mode utility
.\"
.Sh SYNOPSIS
.\" ========
.Nm
.Op Fl m, -mode Ar mode-id
.Op Fl r, -rgb
.Op Fl f, -full-screen
.Op Fl g, -full-range
.Op Fl d, -dither
.Op Fl h, -help
.Op Fl V, -version
.\"
.Sh DESCRIPTION
.\" ===========
The ps3-video-mode utility is used to display or change the video mode
of the PS3 game console.  The default behavior is to display the current
video mode ID.
.\"
.Sh OPTIONS
.\" =======
.Bl -tag -width indent
.\"
.It Fl m, -mode Ar mode-id
Set the system video mode to 
.Ar mode-id .
See the 
.Ar NOTES
section below for more information on the
.Ar mode-id
value.
.\"
.It Fl r, -rgb
Use RGB color space mode.
.\"
.It Fl f, -full-screen
Use full screen mode.
.\"
.It Fl g, -full-range
Use full range mode.
.\"
.It Fl d, -dither
Use dither mode.
.\"
.It Fl h, -help
Print a help message.
.\"
.It Fl V, -version
Display the program version number.
.El
.\"
.Sh NOTES
.\" =====
.\"
.Ss Video Mode IDs and Mode Names
.\" -----------------------------
The supported video
.Ar mode-id
values, coresponding
.Ar mode-name
values, and screen resolutions are as follows:
.Pp
.Bd -literal -offset indent
AUTO Detect Mode:
       0: auto (480i/576i if not HDMI)

60 Hz Broadcast Modes:
       1: 480i    (576 x 384)
       2: 480p    (576 x 384)
       3: 720p   (1124 x 644)
       4: 1080i  (1688 x 964)
       5: 1080p  (1688 x 964)

50 Hz Broadcast Modes:
       6: 576i    (576 x 460)
       7: 576p    (576 x 460)
       8: 720p   (1124 x 644)
       9: 1080i  (1688 x 964)
      10: 1080p  (1688 x 964)

VESA Modes:
      11: wxga   (1280 x 768)
      12: sxga   (1280 x 1024)
      13: wuxga  (1920 x 1200)

60 Hz Full Screen Broadcast Modes:
     129: 480if   (720 x 480)
     130: 480pf   (720 x 480)
     131: 720pf  (1280 x 720)
     132: 1080if (1920 x 1080)
     133: 1080pf (1920 x 1080)

50 Hz Full Screen Broadcast Modes:
     134: 576if   (720 x 576)
     135: 576pf   (720 x 576)
     136: 720pf  (1280 x 720)
     137: 1080if (1920 x 1080)
     138: 1080pf (1920 x 1080)
.Ed
.Pp
Note that VESA modes are only valid for the HDMI port.
.Pp
The mode options
.Sy --rgb, --full-screen, --full-range
and
.Sy --dither
can be specified via the
.Ar mode-id
as follows:
.Bd -literal -offset indent
RGB color space:  <video mode ID> + 32
Full screen mode: <video mode ID> + 128
Full range mode:  <video mode ID> + 1536
Dither mode:      <video mode ID> + 2048
.Ed
.\"
.Ss RGB Color Space Mode
.\" --------------------
The RGB color space mode
.Sy --rgb
is only valid for the analog port.  The default is to use the YUV color space.
.\"
.Ss Full Screen Mode
.\" ----------------
Originally 480/576i, 480/576p, 720p, 1080i, and 1080p were analog broadcast
resolutions that included overscan.  The full screen mode option
.Sy --full-screen
causes the overscan region of the broadcast modes to be used for
pixel display.  Not all displays can support full screen mode.
.\"
.Ss RGB Full Range Mode
.\" -------------------
The full range mode
.Sy --full-range
adjusts the dynamic range of the video output RGB values.
.Pp
This setting affects the video output signal on both the analog and HDMI
ports, but is only useful with some HDMI displays.
When this option is not enabled the video output signal will have an
RGB dynamic range of 16 to 235, and when enabled will have an RGB
dynamic range of 0 to 255.
This option must be specified by the user because the HDMI information
received from the attached display does not specify whether the display
supports RGB full range mode or not.
.\"
.Ss Dither Mode
.\" -----------
The dither mode option
.Sy --dither
suppresses the Mach Band Effect.  See http://en.wikipedia.org/wiki/Mach_bands.
.\"
.Ss Other Notes
.\" -----------
Do not change the display resolution while sound is playing.
.Pp
Do not change the display resolution from X.  If you do, you
will need to restart the X server.  This is because the X frame buffer
driver assumes a frame buffer has a fixed line length.
.Pp
If you would like to boot Linux into a specific video mode you may pass
a video mode option on the kernel the command line.  Two formats are available.
One uses a video mode name as
.Sy video= Ns Ar mode-name ,
and the other uses a video
.Ar mode-id
as
.Sy video=ps3fb:mode: Ns Ar mode-id .
See the
.Ar EXAMPLES
section below for more information.
.\"
.Sh EXAMPLES
.\" ========
Examples (1) and (2) are equivelent, and both set the video mode to
60Hz 720p full screen:
.Bd -literal -offset indent
ps3-video-mode --mode=3 --full-screen    (1)
ps3-video-mode --mode=131                (2)
.Ed
.Pp
Example (3) uses the kernel command line to set the video mode to VESA WUXGA:
.Bd -literal -offset indent
vmlinux video=wuxga ...                  (3)
.Ed
.Pp
Examples (4) and (5) are equivelent, and both set the video mode to
50Hz 1080p:
.Bd -literal -offset indent
vmlinux video=1080p@50 ...               (4)
vmlinux video=ps3fb:mode:10 ...          (5)
.Ed
.\"
.Sh SEE ALSO
.\" ========
.Xr fbset 8
.\"
.Sh AUTHOR
.\" ======
Written by Masashi Kimoto and Geoff Levand.
.\"
.Sh REPORTING BUGS
.\" ==============
Send bug reports to @PACKAGE_BUGREPORT@.
