* [patch 00/11] ps3av/3fb patches for 2.6.25
@ 2008-01-25 15:06 Geert Uytterhoeven
2008-01-25 15:06 ` [patch 01/11] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused Geert Uytterhoeven
` (11 more replies)
0 siblings, 12 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1562 bytes --]
Hi Tony, Andrew,
Hare are the ps3av/fb patches for 2.6.25:
[1] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused
[2] ps3: Use symbolic names for video modes
[3] ps3fb: Kill PS3FB_FULL_MODE_BIT
[4] ps3fb: Inline macros that are used only once
[5] ps3fb: Kill ps3fb_res[]
[6] ps3fb: Make frame buffer offsets unsigned int
[7] ps3fb: Add support for configurable black borders
[8] ps3fb: Reorganize modedb handling
[9] ps3fb: Round up video modes
[10] ps3fb: Cleanup sweep
[11] ps3fb: Fix modedb typos
Patches 1-9 have been sent for review on Mon, 26 Nov 2007. They haven't
changed in the mean time, except for rebasing and minor editing of patch
descriptions.
Patches 10-11 are new, but not very complex, and tested in ps3-linux.git since
a while.
Please apply for 2.6.25. Thanks a lot!
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 01/11] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 02/11] ps3: Use symbolic names for video modes Geert Uytterhoeven
` (10 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3av-remove-unused.diff --]
[-- Type: text/plain, Size: 4491 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused, so remove
them
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/ps3/ps3av.c | 58 +++++++++-----------------------------------
include/asm-powerpc/ps3av.h | 2 -
2 files changed, 13 insertions(+), 47 deletions(-)
--- a/drivers/ps3/ps3av.c
+++ b/drivers/ps3/ps3av.c
@@ -78,23 +78,21 @@ static const struct avset_video_mode {
u32 aspect;
u32 x;
u32 y;
- u32 interlace;
- u32 freq;
} video_mode_table[] = {
{ 0, }, /* auto */
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_480I, A_N, 720, 480, 1, 60},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_480P, A_N, 720, 480, 0, 60},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_720P_60HZ, A_N, 1280, 720, 0, 60},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080I_60HZ, A_W, 1920, 1080, 1, 60},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080P_60HZ, A_W, 1920, 1080, 0, 60},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_576I, A_N, 720, 576, 1, 50},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_576P, A_N, 720, 576, 0, 50},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_720P_50HZ, A_N, 1280, 720, 0, 50},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080I_50HZ, A_W, 1920, 1080, 1, 50},
- {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080P_50HZ, A_W, 1920, 1080, 0, 50},
- { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_WXGA, A_W, 1280, 768, 0, 60},
- { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_SXGA, A_N, 1280, 1024, 0, 60},
- { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_WUXGA, A_W, 1920, 1200, 0, 60},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_480I, A_N, 720, 480},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_480P, A_N, 720, 480},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_720P_60HZ, A_N, 1280, 720},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080I_60HZ, A_W, 1920, 1080},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080P_60HZ, A_W, 1920, 1080},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_576I, A_N, 720, 576},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_576P, A_N, 720, 576},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_720P_50HZ, A_N, 1280, 720},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080I_50HZ, A_W, 1920, 1080},
+ {YUV444, XRGB, PS3AV_CMD_VIDEO_VID_1080P_50HZ, A_W, 1920, 1080},
+ { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_WXGA, A_W, 1280, 768},
+ { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_SXGA, A_N, 1280, 1024},
+ { RGB8, XRGB, PS3AV_CMD_VIDEO_VID_WUXGA, A_W, 1920, 1200},
};
/* supported CIDs */
@@ -889,36 +887,6 @@ int ps3av_get_mode(void)
EXPORT_SYMBOL_GPL(ps3av_get_mode);
-int ps3av_get_scanmode(int id)
-{
- int size;
-
- id = id & PS3AV_MODE_MASK;
- size = ARRAY_SIZE(video_mode_table);
- if (id > size - 1 || id < 0) {
- printk(KERN_ERR "%s: invalid mode %d\n", __func__, id);
- return -EINVAL;
- }
- return video_mode_table[id].interlace;
-}
-
-EXPORT_SYMBOL_GPL(ps3av_get_scanmode);
-
-int ps3av_get_refresh_rate(int id)
-{
- int size;
-
- id = id & PS3AV_MODE_MASK;
- size = ARRAY_SIZE(video_mode_table);
- if (id > size - 1 || id < 0) {
- printk(KERN_ERR "%s: invalid mode %d\n", __func__, id);
- return -EINVAL;
- }
- return video_mode_table[id].freq;
-}
-
-EXPORT_SYMBOL_GPL(ps3av_get_refresh_rate);
-
/* get resolution by video_mode */
int ps3av_video_mode2res(u32 id, u32 *xres, u32 *yres)
{
--- a/include/asm-powerpc/ps3av.h
+++ b/include/asm-powerpc/ps3av.h
@@ -713,8 +713,6 @@ extern int ps3av_set_video_mode(u32);
extern int ps3av_set_audio_mode(u32, u32, u32, u32, u32);
extern int ps3av_get_auto_mode(void);
extern int ps3av_get_mode(void);
-extern int ps3av_get_scanmode(int);
-extern int ps3av_get_refresh_rate(int);
extern int ps3av_video_mode2res(u32, u32 *, u32 *);
extern int ps3av_video_mute(int);
extern int ps3av_audio_mute(int);
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 02/11] ps3: Use symbolic names for video modes
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
2008-01-25 15:06 ` [patch 01/11] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 03/11] ps3fb: Kill PS3FB_FULL_MODE_BIT Geert Uytterhoeven
` (9 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3av-mode-defines.diff --]
[-- Type: text/plain, Size: 8149 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3: Use symbolic names for video modes
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/ps3/ps3av.c | 39 ++++++++++++++++++++-------------------
drivers/video/ps3fb.c | 17 ++++++++++-------
include/asm-powerpc/ps3av.h | 41 ++++++++++++++++++++++++++++++-----------
3 files changed, 60 insertions(+), 37 deletions(-)
--- a/drivers/ps3/ps3av.c
+++ b/drivers/ps3/ps3av.c
@@ -542,7 +542,7 @@ static void ps3av_set_videomode_packet(u
static void ps3av_set_videomode_cont(u32 id, u32 old_id)
{
- static int vesa = 0;
+ static int vesa;
int res;
/* video signal off */
@@ -552,9 +552,9 @@ static void ps3av_set_videomode_cont(u32
* AV backend needs non-VESA mode setting at least one time
* when VESA mode is used.
*/
- if (vesa == 0 && (id & PS3AV_MODE_MASK) >= 11) {
+ if (vesa == 0 && (id & PS3AV_MODE_MASK) >= PS3AV_MODE_WXGA) {
/* vesa mode */
- ps3av_set_videomode_packet(2); /* 480P */
+ ps3av_set_videomode_packet(PS3AV_MODE_480P);
}
vesa = 1;
@@ -594,20 +594,21 @@ static const struct {
unsigned mask : 19;
unsigned id : 4;
} ps3av_preferred_modes[] = {
- { .mask = PS3AV_RESBIT_WUXGA << SHIFT_VESA, .id = 13 },
- { .mask = PS3AV_RESBIT_1920x1080P << SHIFT_60, .id = 5 },
- { .mask = PS3AV_RESBIT_1920x1080P << SHIFT_50, .id = 10 },
- { .mask = PS3AV_RESBIT_1920x1080I << SHIFT_60, .id = 4 },
- { .mask = PS3AV_RESBIT_1920x1080I << SHIFT_50, .id = 9 },
- { .mask = PS3AV_RESBIT_SXGA << SHIFT_VESA, .id = 12 },
- { .mask = PS3AV_RESBIT_WXGA << SHIFT_VESA, .id = 11 },
- { .mask = PS3AV_RESBIT_1280x720P << SHIFT_60, .id = 3 },
- { .mask = PS3AV_RESBIT_1280x720P << SHIFT_50, .id = 8 },
- { .mask = PS3AV_RESBIT_720x480P << SHIFT_60, .id = 2 },
- { .mask = PS3AV_RESBIT_720x576P << SHIFT_50, .id = 7 },
+ { PS3AV_RESBIT_WUXGA << SHIFT_VESA, PS3AV_MODE_WUXGA },
+ { PS3AV_RESBIT_1920x1080P << SHIFT_60, PS3AV_MODE_1080P60 },
+ { PS3AV_RESBIT_1920x1080P << SHIFT_50, PS3AV_MODE_1080P50 },
+ { PS3AV_RESBIT_1920x1080I << SHIFT_60, PS3AV_MODE_1080I60 },
+ { PS3AV_RESBIT_1920x1080I << SHIFT_50, PS3AV_MODE_1080I50 },
+ { PS3AV_RESBIT_SXGA << SHIFT_VESA, PS3AV_MODE_SXGA },
+ { PS3AV_RESBIT_WXGA << SHIFT_VESA, PS3AV_MODE_WXGA },
+ { PS3AV_RESBIT_1280x720P << SHIFT_60, PS3AV_MODE_720P60 },
+ { PS3AV_RESBIT_1280x720P << SHIFT_50, PS3AV_MODE_720P50 },
+ { PS3AV_RESBIT_720x480P << SHIFT_60, PS3AV_MODE_480P },
+ { PS3AV_RESBIT_720x576P << SHIFT_50, PS3AV_MODE_576P },
};
-static int ps3av_resbit2id(u32 res_50, u32 res_60, u32 res_vesa)
+static enum ps3av_mode_num ps3av_resbit2id(u32 res_50, u32 res_60,
+ u32 res_vesa)
{
unsigned int i;
u32 res_all;
@@ -636,9 +637,9 @@ static int ps3av_resbit2id(u32 res_50, u
return 0;
}
-static int ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
+static enum ps3av_mode_num ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
{
- int id;
+ enum ps3av_mode_num id;
if (safe_mode)
return PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;
@@ -852,7 +853,7 @@ int ps3av_set_video_mode(u32 id)
/* auto mode */
option = id & ~PS3AV_MODE_MASK;
- if ((id & PS3AV_MODE_MASK) == 0) {
+ if ((id & PS3AV_MODE_MASK) == PS3AV_MODE_AUTO) {
id = ps3av_auto_videomode(&ps3av->av_hw_conf);
if (id < 1) {
printk(KERN_ERR "%s: invalid id :%d\n", __func__, id);
@@ -958,7 +959,7 @@ static int ps3av_probe(struct ps3_system
return -ENOMEM;
mutex_init(&ps3av->mutex);
- ps3av->ps3av_mode = 0;
+ ps3av->ps3av_mode = PS3AV_MODE_AUTO;
ps3av->dev = dev;
INIT_WORK(&ps3av->work, ps3avd);
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -338,7 +338,7 @@ static int ps3fb_get_res_table(u32 xres,
static unsigned int ps3fb_find_mode(const struct fb_var_screeninfo *var,
u32 *ddr_line_length, u32 *xdr_line_length)
{
- unsigned int i, mode;
+ unsigned int i, fi, mode;
for (i = 0; i < ARRAY_SIZE(ps3fb_modedb); i++)
if (var->xres == ps3fb_modedb[i].xres &&
@@ -359,7 +359,8 @@ static unsigned int ps3fb_find_mode(cons
found:
/* Cropped broadcast modes use the full line length */
- *ddr_line_length = ps3fb_modedb[i < 10 ? i + 13 : i].xres * BPP;
+ fi = i < PS3AV_MODE_1080P50 ? i + PS3AV_MODE_WUXGA : i;
+ *ddr_line_length = ps3fb_modedb[fi].xres * BPP;
if (ps3_compare_firmware_version(1, 9, 0) >= 0) {
*xdr_line_length = GPU_ALIGN_UP(max(var->xres,
@@ -370,7 +371,9 @@ found:
*xdr_line_length = *ddr_line_length;
/* Full broadcast modes have the full mode bit set */
- mode = i > 12 ? (i - 12) | PS3FB_FULL_MODE_BIT : i + 1;
+ mode = i+1;
+ if (mode > PS3AV_MODE_WUXGA)
+ mode = (mode - PS3AV_MODE_WUXGA) | PS3FB_FULL_MODE_BIT;
pr_debug("ps3fb_find_mode: mode %u\n", mode);
@@ -382,14 +385,14 @@ static const struct fb_videomode *ps3fb_
u32 mode = id & PS3AV_MODE_MASK;
u32 flags;
- if (mode < 1 || mode > 13)
+ if (mode < PS3AV_MODE_480I || mode > PS3AV_MODE_WUXGA)
return NULL;
flags = id & ~PS3AV_MODE_MASK;
- if (mode <= 10 && flags & PS3FB_FULL_MODE_BIT) {
+ if (mode <= PS3AV_MODE_1080P50 && flags & PS3FB_FULL_MODE_BIT) {
/* Full broadcast mode */
- return &ps3fb_modedb[mode + 12];
+ return &ps3fb_modedb[mode + PS3AV_MODE_WUXGA - 1];
}
return &ps3fb_modedb[mode - 1];
@@ -1080,7 +1083,7 @@ static int __devinit ps3fb_probe(struct
if (!ps3fb_mode)
ps3fb_mode = ps3av_get_mode();
- dev_dbg(&dev->core, "ps3av_mode:%d\n", ps3fb_mode);
+ dev_dbg(&dev->core, "ps3fb_mode: %d\n", ps3fb_mode);
if (ps3fb_mode > 0 &&
!ps3av_video_mode2res(ps3fb_mode, &xres, &yres)) {
--- a/include/asm-powerpc/ps3av.h
+++ b/include/asm-powerpc/ps3av.h
@@ -310,19 +310,25 @@
#define PS3AV_MONITOR_TYPE_HDMI 1 /* HDMI */
#define PS3AV_MONITOR_TYPE_DVI 2 /* DVI */
-#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_60 2 /* 480p */
-#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60 1 /* 480i */
-#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_50 7 /* 576p */
-#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50 6 /* 576i */
-
-#define PS3AV_REGION_60 0x01
-#define PS3AV_REGION_50 0x02
-#define PS3AV_REGION_RGB 0x10
-
-#define get_status(buf) (((__u32 *)buf)[2])
-#define PS3AV_HDR_SIZE 4 /* version + size */
/* for video mode */
+enum ps3av_mode_num {
+ PS3AV_MODE_AUTO = 0,
+ PS3AV_MODE_480I = 1,
+ PS3AV_MODE_480P = 2,
+ PS3AV_MODE_720P60 = 3,
+ PS3AV_MODE_1080I60 = 4,
+ PS3AV_MODE_1080P60 = 5,
+ PS3AV_MODE_576I = 6,
+ PS3AV_MODE_576P = 7,
+ PS3AV_MODE_720P50 = 8,
+ PS3AV_MODE_1080I50 = 9,
+ PS3AV_MODE_1080P50 = 10,
+ PS3AV_MODE_WXGA = 11,
+ PS3AV_MODE_SXGA = 12,
+ PS3AV_MODE_WUXGA = 13,
+};
+
#define PS3AV_MODE_MASK 0x000F
#define PS3AV_MODE_HDCP_OFF 0x1000 /* Retail PS3 product doesn't support this */
#define PS3AV_MODE_DITHER 0x0800
@@ -333,6 +339,19 @@
#define PS3AV_MODE_RGB 0x0020
+#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_60 PS3AV_MODE_480P
+#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60 PS3AV_MODE_480I
+#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_50 PS3AV_MODE_576P
+#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50 PS3AV_MODE_576I
+
+#define PS3AV_REGION_60 0x01
+#define PS3AV_REGION_50 0x02
+#define PS3AV_REGION_RGB 0x10
+
+#define get_status(buf) (((__u32 *)buf)[2])
+#define PS3AV_HDR_SIZE 4 /* version + size */
+
+
/** command packet structure **/
struct ps3av_send_hdr {
u16 version;
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 03/11] ps3fb: Kill PS3FB_FULL_MODE_BIT
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
2008-01-25 15:06 ` [patch 01/11] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused Geert Uytterhoeven
2008-01-25 15:06 ` [patch 02/11] ps3: Use symbolic names for video modes Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 04/11] ps3fb: Inline macros that are used only once Geert Uytterhoeven
` (8 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-kill-PS3FB_FULL_MODE_BIT.diff --]
[-- Type: text/plain, Size: 2300 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: Kill PS3FB_FULL_MODE_BIT, use PS3AV_MODE_FULL instead
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -57,8 +57,6 @@
#define GPU_ALIGN_UP(x) _ALIGN_UP((x), 64)
#define GPU_MAX_LINE_LENGTH (65536 - 64)
-#define PS3FB_FULL_MODE_BIT 0x80
-
#define GPU_INTR_STATUS_VSYNC_0 0 /* vsync on head A */
#define GPU_INTR_STATUS_VSYNC_1 1 /* vsync on head B */
#define GPU_INTR_STATUS_FLIP_0 3 /* flip head A */
@@ -310,7 +308,7 @@ static int ps3fb_get_res_table(u32 xres,
unsigned int i;
u32 x, y, f;
- full_mode = (mode & PS3FB_FULL_MODE_BIT) ? PS3FB_RES_FULL : 0;
+ full_mode = (mode & PS3AV_MODE_FULL) ? PS3FB_RES_FULL : 0;
for (i = 0;; i++) {
x = ps3fb_res[i].xres;
y = ps3fb_res[i].yres;
@@ -373,7 +371,7 @@ found:
/* Full broadcast modes have the full mode bit set */
mode = i+1;
if (mode > PS3AV_MODE_WUXGA)
- mode = (mode - PS3AV_MODE_WUXGA) | PS3FB_FULL_MODE_BIT;
+ mode = (mode - PS3AV_MODE_WUXGA) | PS3AV_MODE_FULL;
pr_debug("ps3fb_find_mode: mode %u\n", mode);
@@ -390,7 +388,7 @@ static const struct fb_videomode *ps3fb_
flags = id & ~PS3AV_MODE_MASK;
- if (mode <= PS3AV_MODE_1080P50 && flags & PS3FB_FULL_MODE_BIT) {
+ if (mode <= PS3AV_MODE_1080P50 && flags & PS3AV_MODE_FULL) {
/* Full broadcast mode */
return &ps3fb_modedb[mode + PS3AV_MODE_WUXGA - 1];
}
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 04/11] ps3fb: Inline macros that are used only once
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (2 preceding siblings ...)
2008-01-25 15:06 ` [patch 03/11] ps3fb: Kill PS3FB_FULL_MODE_BIT Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-27 6:01 ` Andrew Morton
2008-01-25 15:06 ` [patch 05/11] ps3fb: Kill ps3fb_res Geert Uytterhoeven
` (7 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-inline-macros.diff --]
[-- Type: text/plain, Size: 2158 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: inline the X_OFF(), Y_OFF(), WIDTH(), HEIGHT(), and VP_OFF() macros,
as they're used in one place only
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -287,15 +287,8 @@ static const struct fb_videomode ps3fb_m
#define HEAD_A
#define HEAD_B
-#define X_OFF(i) (ps3fb_res[i].xoff) /* left/right margin (pixel) */
-#define Y_OFF(i) (ps3fb_res[i].yoff) /* top/bottom margin (pixel) */
-#define WIDTH(i) (ps3fb_res[i].xres) /* width of FB */
-#define HEIGHT(i) (ps3fb_res[i].yres) /* height of FB */
#define BPP 4 /* number of bytes per pixel */
-/* Start of the virtual frame buffer (relative to fullscreen ) */
-#define VP_OFF(i) ((WIDTH(i) * Y_OFF(i) + X_OFF(i)) * BPP)
-
static int ps3fb_mode;
module_param(ps3fb_mode, int, 0);
@@ -611,7 +604,10 @@ static int ps3fb_set_par(struct fb_info
par->width = info->var.xres;
par->height = info->var.yres;
- offset = VP_OFF(i);
+
+ /* Start of the virtual frame buffer (relative to fullscreen) */
+ offset = ps3fb_res[i].yoff * ddr_line_length + ps3fb_res[i].xoff * BPP;
+
par->fb_offset = GPU_ALIGN_UP(offset);
par->full_offset = par->fb_offset - offset;
par->pan_offset = info->var.yoffset * xdr_line_length +
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 05/11] ps3fb: Kill ps3fb_res
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (3 preceding siblings ...)
2008-01-25 15:06 ` [patch 04/11] ps3fb: Inline macros that are used only once Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 06/11] ps3fb: Make frame buffer offsets unsigned int Geert Uytterhoeven
` (6 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-kill-ps3fb_res.diff --]
[-- Type: text/plain, Size: 8005 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: kill ps3fb_res[], as all information it contains can be obtained in
some other way.
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 108 ++++++++++----------------------------------------
1 file changed, 22 insertions(+), 86 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -134,42 +134,17 @@ static struct ps3fb_priv ps3fb;
struct ps3fb_par {
u32 pseudo_palette[16];
int mode_id, new_mode_id;
- int res_index;
unsigned int num_frames; /* num of frame buffers */
unsigned int width;
unsigned int height;
+ unsigned int ddr_line_length;
+ unsigned int ddr_frame_size;
+ unsigned int xdr_frame_size;
unsigned long full_offset; /* start of fullscreen DDR fb */
unsigned long fb_offset; /* start of actual DDR fb */
unsigned long pan_offset;
};
-struct ps3fb_res_table {
- u32 xres;
- u32 yres;
- u32 xoff;
- u32 yoff;
- u32 type;
-};
-#define PS3FB_RES_FULL 1
-static const struct ps3fb_res_table ps3fb_res[] = {
- /* res_x,y margin_x,y full */
- { 720, 480, 72, 48 , 0},
- { 720, 576, 72, 58 , 0},
- { 1280, 720, 78, 38 , 0},
- { 1920, 1080, 116, 58 , 0},
- /* full mode */
- { 720, 480, 0, 0 , PS3FB_RES_FULL},
- { 720, 576, 0, 0 , PS3FB_RES_FULL},
- { 1280, 720, 0, 0 , PS3FB_RES_FULL},
- { 1920, 1080, 0, 0 , PS3FB_RES_FULL},
- /* vesa: normally full mode */
- { 1280, 768, 0, 0 , 0},
- { 1280, 1024, 0, 0 , 0},
- { 1920, 1200, 0, 0 , 0},
- { 0, 0, 0, 0 , 0} };
-
-/* default resolution */
-#define GPU_RES_INDEX 0 /* 720 x 480 */
static const struct fb_videomode ps3fb_modedb[] = {
/* 60 Hz broadcast modes (modes "1" to "5") */
@@ -295,37 +270,6 @@ module_param(ps3fb_mode, int, 0);
static char *mode_option __devinitdata;
-static int ps3fb_get_res_table(u32 xres, u32 yres, int mode)
-{
- int full_mode;
- unsigned int i;
- u32 x, y, f;
-
- full_mode = (mode & PS3AV_MODE_FULL) ? PS3FB_RES_FULL : 0;
- for (i = 0;; i++) {
- x = ps3fb_res[i].xres;
- y = ps3fb_res[i].yres;
- f = ps3fb_res[i].type;
-
- if (!x) {
- pr_debug("ERROR: ps3fb_get_res_table()\n");
- return -1;
- }
-
- if (full_mode == PS3FB_RES_FULL && f != PS3FB_RES_FULL)
- continue;
-
- if (x == xres && (yres == 0 || y == yres))
- break;
-
- x = x - 2 * ps3fb_res[i].xoff;
- y = y - 2 * ps3fb_res[i].yoff;
- if (x == xres && (yres == 0 || y == yres))
- break;
- }
- return i;
-}
-
static unsigned int ps3fb_find_mode(const struct fb_var_screeninfo *var,
u32 *ddr_line_length, u32 *xdr_line_length)
{
@@ -433,8 +377,7 @@ static void ps3fb_sync_image(struct devi
static int ps3fb_sync(struct fb_info *info, u32 frame)
{
struct ps3fb_par *par = info->par;
- int i, error = 0;
- u32 ddr_line_length, xdr_line_length;
+ int error = 0;
u64 ddr_base, xdr_base;
if (frame > par->num_frames - 1) {
@@ -444,16 +387,13 @@ static int ps3fb_sync(struct fb_info *in
goto out;
}
- i = par->res_index;
- xdr_line_length = info->fix.line_length;
- ddr_line_length = ps3fb_res[i].xres * BPP;
- xdr_base = frame * info->var.yres_virtual * xdr_line_length;
- ddr_base = frame * ps3fb_res[i].yres * ddr_line_length;
+ xdr_base = frame * par->xdr_frame_size;
+ ddr_base = frame * par->ddr_frame_size;
ps3fb_sync_image(info->device, ddr_base + par->full_offset,
ddr_base + par->fb_offset, xdr_base + par->pan_offset,
- par->width, par->height, ddr_line_length,
- xdr_line_length);
+ par->width, par->height, par->ddr_line_length,
+ info->fix.line_length);
out:
return error;
@@ -572,8 +512,9 @@ static int ps3fb_set_par(struct fb_info
{
struct ps3fb_par *par = info->par;
unsigned int mode, ddr_line_length, xdr_line_length, lines, maxlines;
- int i;
+ unsigned int ddr_xoff, ddr_yoff;
unsigned long offset;
+ const struct fb_videomode *vmode;
u64 dst;
dev_dbg(info->device, "xres:%d xv:%d yres:%d yv:%d clock:%d\n",
@@ -584,8 +525,7 @@ static int ps3fb_set_par(struct fb_info
if (!mode)
return -EINVAL;
- i = ps3fb_get_res_table(info->var.xres, info->var.yres, mode);
- par->res_index = i;
+ vmode = ps3fb_default_mode(mode | PS3AV_MODE_FULL);
info->fix.smem_start = virt_to_abs(ps3fb.xdr_ea);
info->fix.smem_len = ps3fb.xdr_size;
@@ -595,9 +535,12 @@ static int ps3fb_set_par(struct fb_info
info->screen_base = (char __iomem *)ps3fb.xdr_ea;
+ par->ddr_line_length = ddr_line_length;
+ par->ddr_frame_size = vmode->yres * ddr_line_length;
+ par->xdr_frame_size = info->var.yres_virtual * xdr_line_length;
+
par->num_frames = ps3fb.xdr_size /
- max(ps3fb_res[i].yres * ddr_line_length,
- info->var.yres_virtual * xdr_line_length);
+ max(par->ddr_frame_size, par->xdr_frame_size);
/* Keep the special bits we cannot set using fb_var_screeninfo */
par->new_mode_id = (par->new_mode_id & ~PS3AV_MODE_MASK) | mode;
@@ -606,7 +549,9 @@ static int ps3fb_set_par(struct fb_info
par->height = info->var.yres;
/* Start of the virtual frame buffer (relative to fullscreen) */
- offset = ps3fb_res[i].yoff * ddr_line_length + ps3fb_res[i].xoff * BPP;
+ ddr_xoff = info->var.left_margin - vmode->left_margin;
+ ddr_yoff = info->var.upper_margin - vmode->upper_margin;
+ offset = ddr_yoff * ddr_line_length + ddr_xoff * BPP;
par->fb_offset = GPU_ALIGN_UP(offset);
par->full_offset = par->fb_offset - offset;
@@ -625,13 +570,13 @@ static int ps3fb_set_par(struct fb_info
memset(ps3fb.xdr_ea, 0, ps3fb.xdr_size);
/* Clear DDR frame buffer memory */
- lines = ps3fb_res[i].yres * par->num_frames;
+ lines = vmode->yres * par->num_frames;
if (par->full_offset)
lines++;
maxlines = ps3fb.xdr_size / ddr_line_length;
for (dst = 0; lines; dst += maxlines * ddr_line_length) {
unsigned int l = min(lines, maxlines);
- ps3fb_sync_image(info->device, 0, dst, 0, ps3fb_res[i].xres, l,
+ ps3fb_sync_image(info->device, 0, dst, 0, vmode->xres, l,
ddr_line_length, ddr_line_length);
lines -= l;
}
@@ -1052,14 +997,13 @@ static int __devinit ps3fb_probe(struct
struct fb_info *info;
struct ps3fb_par *par;
int retval = -ENOMEM;
- u32 xres, yres;
u64 ddr_lpar = 0;
u64 lpar_dma_control = 0;
u64 lpar_driver_info = 0;
u64 lpar_reports = 0;
u64 lpar_reports_size = 0;
u64 xdr_lpar;
- int status, res_index;
+ int status;
struct task_struct *task;
unsigned long max_ps3fb_size;
@@ -1079,13 +1023,6 @@ static int __devinit ps3fb_probe(struct
ps3fb_mode = ps3av_get_mode();
dev_dbg(&dev->core, "ps3fb_mode: %d\n", ps3fb_mode);
- if (ps3fb_mode > 0 &&
- !ps3av_video_mode2res(ps3fb_mode, &xres, &yres)) {
- res_index = ps3fb_get_res_table(xres, yres, ps3fb_mode);
- dev_dbg(&dev->core, "res_index:%d\n", res_index);
- } else
- res_index = GPU_RES_INDEX;
-
atomic_set(&ps3fb.f_count, -1); /* fbcon opens ps3fb */
atomic_set(&ps3fb.ext_flip, 0); /* for flip with vsync */
init_waitqueue_head(&ps3fb.wait_vsync);
@@ -1158,7 +1095,6 @@ static int __devinit ps3fb_probe(struct
par = info->par;
par->mode_id = ~ps3fb_mode; /* != ps3fb_mode, to trigger change */
par->new_mode_id = ps3fb_mode;
- par->res_index = res_index;
par->num_frames = 1;
info->screen_base = (char __iomem *)ps3fb.xdr_ea;
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 06/11] ps3fb: Make frame buffer offsets unsigned int
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (4 preceding siblings ...)
2008-01-25 15:06 ` [patch 05/11] ps3fb: Kill ps3fb_res Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 07/11] ps3fb: Add support for configurable black borders Geert Uytterhoeven
` (5 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-unsigned-int-offsets.diff --]
[-- Type: text/plain, Size: 1860 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: Frame buffer offsets don't have to be `unsigned long', `unsigned int' is
sufficient
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -140,9 +140,9 @@ struct ps3fb_par {
unsigned int ddr_line_length;
unsigned int ddr_frame_size;
unsigned int xdr_frame_size;
- unsigned long full_offset; /* start of fullscreen DDR fb */
- unsigned long fb_offset; /* start of actual DDR fb */
- unsigned long pan_offset;
+ unsigned int full_offset; /* start of fullscreen DDR fb */
+ unsigned int fb_offset; /* start of actual DDR fb */
+ unsigned int pan_offset;
};
@@ -512,8 +512,7 @@ static int ps3fb_set_par(struct fb_info
{
struct ps3fb_par *par = info->par;
unsigned int mode, ddr_line_length, xdr_line_length, lines, maxlines;
- unsigned int ddr_xoff, ddr_yoff;
- unsigned long offset;
+ unsigned int ddr_xoff, ddr_yoff, offset;
const struct fb_videomode *vmode;
u64 dst;
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 07/11] ps3fb: Add support for configurable black borders
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (5 preceding siblings ...)
2008-01-25 15:06 ` [patch 06/11] ps3fb: Make frame buffer offsets unsigned int Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 08/11] ps3fb: Reorganize modedb handling Geert Uytterhoeven
` (4 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-configurable-black-borders.diff --]
[-- Type: text/plain, Size: 4303 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: Allow all video modes where the visible resolution plus the black
borders matches a native resolution
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
--
drivers/video/ps3fb.c | 69 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 49 insertions(+), 20 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -270,32 +270,57 @@ module_param(ps3fb_mode, int, 0);
static char *mode_option __devinitdata;
-static unsigned int ps3fb_find_mode(const struct fb_var_screeninfo *var,
+static int ps3fb_cmp_mode(const struct fb_videomode *vmode,
+ const struct fb_var_screeninfo *var)
+{
+ /* resolution + black border must match a native resolution */
+ if (vmode->left_margin + vmode->xres + vmode->right_margin !=
+ var->left_margin + var->xres + var->right_margin ||
+ vmode->upper_margin + vmode->yres + vmode->lower_margin !=
+ var->upper_margin + var->yres + var->lower_margin)
+ return -1;
+
+ /* minimum limits for margins */
+ if (vmode->left_margin > var->left_margin ||
+ vmode->right_margin > var->right_margin ||
+ vmode->upper_margin > var->upper_margin ||
+ vmode->lower_margin > var->lower_margin)
+ return -1;
+
+ /* these fields must match exactly */
+ if (vmode->pixclock != var->pixclock ||
+ vmode->hsync_len != var->hsync_len ||
+ vmode->vsync_len != var->vsync_len ||
+ vmode->sync != var->sync ||
+ vmode->vmode != (var->vmode & FB_VMODE_MASK))
+ return -1;
+
+ return 0;
+}
+
+static unsigned int ps3fb_find_mode(struct fb_var_screeninfo *var,
u32 *ddr_line_length, u32 *xdr_line_length)
{
- unsigned int i, fi, mode;
+ unsigned int i, mode;
- for (i = 0; i < ARRAY_SIZE(ps3fb_modedb); i++)
- if (var->xres == ps3fb_modedb[i].xres &&
- var->yres == ps3fb_modedb[i].yres &&
- var->pixclock == ps3fb_modedb[i].pixclock &&
- var->hsync_len == ps3fb_modedb[i].hsync_len &&
- var->vsync_len == ps3fb_modedb[i].vsync_len &&
- var->left_margin == ps3fb_modedb[i].left_margin &&
- var->right_margin == ps3fb_modedb[i].right_margin &&
- var->upper_margin == ps3fb_modedb[i].upper_margin &&
- var->lower_margin == ps3fb_modedb[i].lower_margin &&
- var->sync == ps3fb_modedb[i].sync &&
- (var->vmode & FB_VMODE_MASK) == ps3fb_modedb[i].vmode)
+ for (i = PS3AV_MODE_1080P50; i < ARRAY_SIZE(ps3fb_modedb); i++)
+ if (!ps3fb_cmp_mode(&ps3fb_modedb[i], var))
goto found;
pr_debug("ps3fb_find_mode: mode not found\n");
return 0;
found:
- /* Cropped broadcast modes use the full line length */
- fi = i < PS3AV_MODE_1080P50 ? i + PS3AV_MODE_WUXGA : i;
- *ddr_line_length = ps3fb_modedb[fi].xres * BPP;
+ *ddr_line_length = ps3fb_modedb[i].xres * BPP;
+
+ if (!var->xres) {
+ var->xres = 1;
+ var->right_margin--;
+ }
+ if (!var->yres) {
+ var->yres = 1;
+ var->lower_margin--;
+ }
if (ps3_compare_firmware_version(1, 9, 0) >= 0) {
*xdr_line_length = GPU_ALIGN_UP(max(var->xres,
@@ -305,10 +330,14 @@ found:
} else
*xdr_line_length = *ddr_line_length;
- /* Full broadcast modes have the full mode bit set */
mode = i+1;
- if (mode > PS3AV_MODE_WUXGA)
- mode = (mode - PS3AV_MODE_WUXGA) | PS3AV_MODE_FULL;
+ if (mode > PS3AV_MODE_WUXGA) {
+ mode -= PS3AV_MODE_WUXGA;
+ /* Full broadcast modes have the full mode bit set */
+ if (ps3fb_modedb[i].xres == var->xres &&
+ ps3fb_modedb[i].yres == var->yres)
+ mode |= PS3AV_MODE_FULL;
+ }
pr_debug("ps3fb_find_mode: mode %u\n", mode);
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 08/11] ps3fb: Reorganize modedb handling
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (6 preceding siblings ...)
2008-01-25 15:06 ` [patch 07/11] ps3fb: Add support for configurable black borders Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 09/11] ps3fb: Round up video modes Geert Uytterhoeven
` (3 subsequent siblings)
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-reorganize-modedb-handling.diff --]
[-- Type: text/plain, Size: 6726 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: Reorganize modedb handling:
- Reorder the video modes in ps3fb_modedb, for easier indexing using
PS3AV_MODE_* numbers,
- Introduce ps3fb_native_vmode(), to convert from native (PS3AV_MODE_*) mode
numbers to struct fb_videomode *,
- Rename and move ps3fb_default_mode() to ps3fb_vmode().
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 116 +++++++++++++++++++++++++-------------------------
1 file changed, 60 insertions(+), 56 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -146,6 +146,8 @@ struct ps3fb_par {
};
+#define FIRST_NATIVE_MODE_INDEX 10
+
static const struct fb_videomode ps3fb_modedb[] = {
/* 60 Hz broadcast modes (modes "1" to "5") */
{
@@ -193,24 +195,7 @@ static const struct fb_videomode ps3fb_m
FB_SYNC_BROADCAST, FB_VMODE_NONINTERLACED
},
- /* VESA modes (modes "11" to "13") */
- {
- /* WXGA */
- "wxga", 60, 1280, 768, 12924, 160, 24, 29, 3, 136, 6,
- 0, FB_VMODE_NONINTERLACED,
- FB_MODE_IS_VESA
- }, {
- /* SXGA */
- "sxga", 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3,
- FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED,
- FB_MODE_IS_VESA
- }, {
- /* WUXGA */
- "wuxga", 60, 1920, 1200, 6494, 80, 48, 26, 3, 32, 6,
- FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED,
- FB_MODE_IS_VESA
- },
-
+ [FIRST_NATIVE_MODE_INDEX] =
/* 60 Hz broadcast modes (full resolution versions of modes "1" to "5") */
{
/* 480if */
@@ -255,6 +240,24 @@ static const struct fb_videomode ps3fb_m
/* 1080pf */
"1080pf", 50, 1920, 1080, 6734, 148, 484, 36, 4, 88, 5,
FB_SYNC_BROADCAST, FB_VMODE_NONINTERLACED
+ },
+
+ /* VESA modes (modes "11" to "13") */
+ {
+ /* WXGA */
+ "wxga", 60, 1280, 768, 12924, 160, 24, 29, 3, 136, 6,
+ 0, FB_VMODE_NONINTERLACED,
+ FB_MODE_IS_VESA
+ }, {
+ /* SXGA */
+ "sxga", 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3,
+ FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED,
+ FB_MODE_IS_VESA
+ }, {
+ /* WUXGA */
+ "wuxga", 60, 1920, 1200, 6494, 80, 48, 26, 3, 32, 6,
+ FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED,
+ FB_MODE_IS_VESA
}
};
@@ -298,20 +301,43 @@ static int ps3fb_cmp_mode(const struct f
return 0;
}
+static const struct fb_videomode *ps3fb_native_vmode(enum ps3av_mode_num id)
+{
+ return &ps3fb_modedb[FIRST_NATIVE_MODE_INDEX + id - 1];
+}
+
+static const struct fb_videomode *ps3fb_vmode(int id)
+{
+ u32 mode = id & PS3AV_MODE_MASK;
+
+ if (mode < PS3AV_MODE_480I || mode > PS3AV_MODE_WUXGA)
+ return NULL;
+
+ if (mode <= PS3AV_MODE_1080P50 && !(id & PS3AV_MODE_FULL)) {
+ /* Non-fullscreen broadcast mode */
+ return &ps3fb_modedb[mode - 1];
+ }
+
+ return ps3fb_native_vmode(mode);
+}
+
static unsigned int ps3fb_find_mode(struct fb_var_screeninfo *var,
u32 *ddr_line_length, u32 *xdr_line_length)
{
- unsigned int i, mode;
+ unsigned int id;
+ const struct fb_videomode *vmode;
- for (i = PS3AV_MODE_1080P50; i < ARRAY_SIZE(ps3fb_modedb); i++)
- if (!ps3fb_cmp_mode(&ps3fb_modedb[i], var))
+ for (id = PS3AV_MODE_480I; id <= PS3AV_MODE_WUXGA; id++) {
+ vmode = ps3fb_native_vmode(id);
+ if (!ps3fb_cmp_mode(vmode, var))
goto found;
+ }
- pr_debug("ps3fb_find_mode: mode not found\n");
+ pr_debug("%s: mode not found\n", __func__);
return 0;
found:
- *ddr_line_length = ps3fb_modedb[i].xres * BPP;
+ *ddr_line_length = vmode->xres * BPP;
if (!var->xres) {
var->xres = 1;
@@ -330,36 +356,14 @@ found:
} else
*xdr_line_length = *ddr_line_length;
- mode = i+1;
- if (mode > PS3AV_MODE_WUXGA) {
- mode -= PS3AV_MODE_WUXGA;
+ if (vmode->sync & FB_SYNC_BROADCAST) {
/* Full broadcast modes have the full mode bit set */
- if (ps3fb_modedb[i].xres == var->xres &&
- ps3fb_modedb[i].yres == var->yres)
- mode |= PS3AV_MODE_FULL;
- }
-
- pr_debug("ps3fb_find_mode: mode %u\n", mode);
-
- return mode;
-}
-
-static const struct fb_videomode *ps3fb_default_mode(int id)
-{
- u32 mode = id & PS3AV_MODE_MASK;
- u32 flags;
-
- if (mode < PS3AV_MODE_480I || mode > PS3AV_MODE_WUXGA)
- return NULL;
-
- flags = id & ~PS3AV_MODE_MASK;
-
- if (mode <= PS3AV_MODE_1080P50 && flags & PS3AV_MODE_FULL) {
- /* Full broadcast mode */
- return &ps3fb_modedb[mode + PS3AV_MODE_WUXGA - 1];
+ if (vmode->xres == var->xres && vmode->yres == var->yres)
+ id |= PS3AV_MODE_FULL;
}
- return &ps3fb_modedb[mode - 1];
+ pr_debug("%s: mode %u\n", __func__, id);
+ return id;
}
static void ps3fb_sync_image(struct device *dev, u64 frame_offset,
@@ -553,7 +557,7 @@ static int ps3fb_set_par(struct fb_info
if (!mode)
return -EINVAL;
- vmode = ps3fb_default_mode(mode | PS3AV_MODE_FULL);
+ vmode = ps3fb_native_vmode(mode & PS3AV_MODE_MASK);
info->fix.smem_start = virt_to_abs(ps3fb.xdr_ea);
info->fix.smem_len = ps3fb.xdr_size;
@@ -767,7 +771,7 @@ static int ps3fb_ioctl(struct fb_info *i
case PS3FB_IOCTL_SETMODE:
{
struct ps3fb_par *par = info->par;
- const struct fb_videomode *mode;
+ const struct fb_videomode *vmode;
struct fb_var_screeninfo var;
if (copy_from_user(&val, argp, sizeof(val)))
@@ -780,10 +784,10 @@ static int ps3fb_ioctl(struct fb_info *i
}
dev_dbg(info->device, "PS3FB_IOCTL_SETMODE:%x\n", val);
retval = -EINVAL;
- mode = ps3fb_default_mode(val);
- if (mode) {
+ vmode = ps3fb_vmode(val);
+ if (vmode) {
var = info->var;
- fb_videomode_to_var(&var, mode);
+ fb_videomode_to_var(&var, vmode);
acquire_console_sem();
info->flags |= FBINFO_MISC_USEREVENT;
/* Force, in case only special bits changed */
@@ -1141,7 +1145,7 @@ static int __devinit ps3fb_probe(struct
if (!fb_find_mode(&info->var, info, mode_option, ps3fb_modedb,
ARRAY_SIZE(ps3fb_modedb),
- ps3fb_default_mode(par->new_mode_id), 32)) {
+ ps3fb_vmode(par->new_mode_id), 32)) {
retval = -EINVAL;
goto err_fb_dealloc;
}
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 09/11] ps3fb: Round up video modes
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (7 preceding siblings ...)
2008-01-25 15:06 ` [patch 08/11] ps3fb: Reorganize modedb handling Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-27 6:01 ` Andrew Morton
2008-01-25 15:06 ` [patch 10/11] ps3fb: Cleanup sweep Geert Uytterhoeven
` (2 subsequent siblings)
11 siblings, 1 reply; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-round-video-modes.diff --]
[-- Type: text/plain, Size: 7938 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: Round up arbitrary video modes until they fit (if possible)
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 160 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 114 insertions(+), 46 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -276,29 +276,49 @@ static char *mode_option __devinitdata;
static int ps3fb_cmp_mode(const struct fb_videomode *vmode,
const struct fb_var_screeninfo *var)
{
- /* resolution + black border must match a native resolution */
- if (vmode->left_margin + vmode->xres + vmode->right_margin !=
- var->left_margin + var->xres + var->right_margin ||
- vmode->upper_margin + vmode->yres + vmode->lower_margin !=
- var->upper_margin + var->yres + var->lower_margin)
+ long xres, yres, left_margin, right_margin, upper_margin, lower_margin;
+ long dx, dy;
+
+ /* maximum values */
+ if (var->xres > vmode->xres || var->yres > vmode->yres ||
+ var->pixclock > vmode->pixclock ||
+ var->hsync_len > vmode->hsync_len ||
+ var->vsync_len > vmode->vsync_len)
return -1;
- /* minimum limits for margins */
- if (vmode->left_margin > var->left_margin ||
- vmode->right_margin > var->right_margin ||
- vmode->upper_margin > var->upper_margin ||
- vmode->lower_margin > var->lower_margin)
+ /* progressive/interlaced must match */
+ if ((var->vmode & FB_VMODE_MASK) != vmode->vmode)
return -1;
- /* these fields must match exactly */
- if (vmode->pixclock != var->pixclock ||
- vmode->hsync_len != var->hsync_len ||
- vmode->vsync_len != var->vsync_len ||
- vmode->sync != var->sync ||
- vmode->vmode != (var->vmode & FB_VMODE_MASK))
+ /* minimum resolution */
+ xres = max(var->xres, 1U);
+ yres = max(var->yres, 1U);
+
+ /* minimum margins */
+ left_margin = max(var->left_margin, vmode->left_margin);
+ right_margin = max(var->right_margin, vmode->right_margin);
+ upper_margin = max(var->upper_margin, vmode->upper_margin);
+ lower_margin = max(var->lower_margin, vmode->lower_margin);
+
+ /* resolution + margins may not exceed native parameters */
+ dx = ((long)vmode->left_margin + (long)vmode->xres +
+ (long)vmode->right_margin) -
+ (left_margin + xres + right_margin);
+ if (dx < 0)
return -1;
- return 0;
+ dy = ((long)vmode->upper_margin + (long)vmode->yres +
+ (long)vmode->lower_margin) -
+ (upper_margin + yres + lower_margin);
+ if (dy < 0)
+ return -1;
+
+ /* exact match */
+ if (!dx && !dy)
+ return 0;
+
+ /* resolution difference */
+ return (vmode->xres - xres) * (vmode->yres - yres);
}
static const struct fb_videomode *ps3fb_native_vmode(enum ps3av_mode_num id)
@@ -324,33 +344,96 @@ static const struct fb_videomode *ps3fb_
static unsigned int ps3fb_find_mode(struct fb_var_screeninfo *var,
u32 *ddr_line_length, u32 *xdr_line_length)
{
- unsigned int id;
+ unsigned int id, best_id;
+ int diff, best_diff;
const struct fb_videomode *vmode;
+ long gap;
+ best_id = 0;
+ best_diff = INT_MAX;
+ pr_debug("%s: wanted %u [%u] %u x %u [%u] %u\n", __func__,
+ var->left_margin, var->xres, var->right_margin,
+ var->upper_margin, var->yres, var->lower_margin);
for (id = PS3AV_MODE_480I; id <= PS3AV_MODE_WUXGA; id++) {
vmode = ps3fb_native_vmode(id);
- if (!ps3fb_cmp_mode(vmode, var))
- goto found;
+ diff = ps3fb_cmp_mode(vmode, var);
+ pr_debug("%s: mode %u: %u [%u] %u x %u [%u] %u: diff = %d\n",
+ __func__, id, vmode->left_margin, vmode->xres,
+ vmode->right_margin, vmode->upper_margin,
+ vmode->yres, vmode->lower_margin, diff);
+ if (diff < 0)
+ continue;
+ if (diff < best_diff) {
+ best_id = id;
+ if (!diff)
+ break;
+ best_diff = diff;
+ }
}
- pr_debug("%s: mode not found\n", __func__);
- return 0;
+ if (!best_id) {
+ pr_debug("%s: no suitable mode found\n", __func__);
+ return 0;
+ }
+
+ id = best_id;
+ vmode = ps3fb_native_vmode(id);
-found:
*ddr_line_length = vmode->xres * BPP;
- if (!var->xres) {
+ /* minimum resolution */
+ if (!var->xres)
var->xres = 1;
- var->right_margin--;
- }
- if (!var->yres) {
+ if (!var->yres)
var->yres = 1;
- var->lower_margin--;
- }
+
+ /* minimum virtual resolution */
+ if (var->xres_virtual < var->xres)
+ var->xres_virtual = var->xres;
+ if (var->yres_virtual < var->yres)
+ var->yres_virtual = var->yres;
+
+ /* minimum margins */
+ if (var->left_margin < vmode->left_margin)
+ var->left_margin = vmode->left_margin;
+ if (var->right_margin < vmode->right_margin)
+ var->right_margin = vmode->right_margin;
+ if (var->upper_margin < vmode->upper_margin)
+ var->upper_margin = vmode->upper_margin;
+ if (var->lower_margin < vmode->lower_margin)
+ var->lower_margin = vmode->lower_margin;
+
+ /* extra margins */
+ gap = ((long)vmode->left_margin + (long)vmode->xres +
+ (long)vmode->right_margin) -
+ ((long)var->left_margin + (long)var->xres +
+ (long)var->right_margin);
+ if (gap > 0) {
+ var->left_margin += gap/2;
+ var->right_margin += (gap+1)/2;
+ pr_debug("%s: rounded up H to %u [%u] %u\n", __func__,
+ var->left_margin, var->xres, var->right_margin);
+ }
+
+ gap = ((long)vmode->upper_margin + (long)vmode->yres +
+ (long)vmode->lower_margin) -
+ ((long)var->upper_margin + (long)var->yres +
+ (long)var->lower_margin);
+ if (gap > 0) {
+ var->upper_margin += gap/2;
+ var->lower_margin += (gap+1)/2;
+ pr_debug("%s: rounded up V to %u [%u] %u\n", __func__,
+ var->upper_margin, var->yres, var->lower_margin);
+ }
+
+ /* fixed fields */
+ var->pixclock = vmode->pixclock;
+ var->hsync_len = vmode->hsync_len;
+ var->vsync_len = vmode->vsync_len;
+ var->sync = vmode->sync;
if (ps3_compare_firmware_version(1, 9, 0) >= 0) {
- *xdr_line_length = GPU_ALIGN_UP(max(var->xres,
- var->xres_virtual) * BPP);
+ *xdr_line_length = GPU_ALIGN_UP(var->xres_virtual * BPP);
if (*xdr_line_length > GPU_MAX_LINE_LENGTH)
*xdr_line_length = GPU_MAX_LINE_LENGTH;
} else
@@ -465,22 +548,11 @@ static int ps3fb_check_var(struct fb_var
u32 xdr_line_length, ddr_line_length;
int mode;
- dev_dbg(info->device, "var->xres:%u info->var.xres:%u\n", var->xres,
- info->var.xres);
- dev_dbg(info->device, "var->yres:%u info->var.yres:%u\n", var->yres,
- info->var.yres);
-
- /* FIXME For now we do exact matches only */
mode = ps3fb_find_mode(var, &ddr_line_length, &xdr_line_length);
if (!mode)
return -EINVAL;
/* Virtual screen */
- if (var->xres_virtual < var->xres)
- var->xres_virtual = var->xres;
- if (var->yres_virtual < var->yres)
- var->yres_virtual = var->yres;
-
if (var->xres_virtual > xdr_line_length / BPP) {
dev_dbg(info->device,
"Horizontal virtual screen size too large\n");
@@ -549,10 +621,6 @@ static int ps3fb_set_par(struct fb_info
const struct fb_videomode *vmode;
u64 dst;
- dev_dbg(info->device, "xres:%d xv:%d yres:%d yv:%d clock:%d\n",
- info->var.xres, info->var.xres_virtual,
- info->var.yres, info->var.yres_virtual, info->var.pixclock);
-
mode = ps3fb_find_mode(&info->var, &ddr_line_length, &xdr_line_length);
if (!mode)
return -EINVAL;
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 10/11] ps3fb: Cleanup sweep
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (8 preceding siblings ...)
2008-01-25 15:06 ` [patch 09/11] ps3fb: Round up video modes Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 11/11] ps3fb: Fix modedb typos Geert Uytterhoeven
2008-01-27 6:01 ` [patch 00/11] ps3av/3fb patches for 2.6.25 Andrew Morton
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-cleanup.diff --]
[-- Type: text/plain, Size: 7234 bytes --]
From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
ps3fb: cleanup sweep:
- Kill ps3fb_priv.xdr_ea and ps3fb_priv.xdr_size, use info->screen_base and
info->fix.smem_len instead.
- Kill superfluous assignments to info->fix.smem_start, info->fix.smem_len,
and info->screen_base in ps3fb_set_par(). Their values never change.
- Add sparse annotations to casts to kill address space warnings
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 64 +++++++++++++++++++++-----------------------------
1 file changed, 27 insertions(+), 37 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -116,8 +116,6 @@ struct ps3fb_priv {
unsigned int irq_no;
u64 context_handle, memory_handle;
- void *xdr_ea;
- size_t xdr_size;
struct gpu_driver_info *dinfo;
u64 vblank_count; /* frame count */
@@ -598,7 +596,7 @@ static int ps3fb_check_var(struct fb_var
}
/* Memory limit */
- if (var->yres_virtual * xdr_line_length > ps3fb.xdr_size) {
+ if (var->yres_virtual * xdr_line_length > info->fix.smem_len) {
dev_dbg(info->device, "Not enough memory\n");
return -ENOMEM;
}
@@ -627,19 +625,15 @@ static int ps3fb_set_par(struct fb_info
vmode = ps3fb_native_vmode(mode & PS3AV_MODE_MASK);
- info->fix.smem_start = virt_to_abs(ps3fb.xdr_ea);
- info->fix.smem_len = ps3fb.xdr_size;
info->fix.xpanstep = info->var.xres_virtual > info->var.xres ? 1 : 0;
info->fix.ypanstep = info->var.yres_virtual > info->var.yres ? 1 : 0;
info->fix.line_length = xdr_line_length;
- info->screen_base = (char __iomem *)ps3fb.xdr_ea;
-
par->ddr_line_length = ddr_line_length;
par->ddr_frame_size = vmode->yres * ddr_line_length;
par->xdr_frame_size = info->var.yres_virtual * xdr_line_length;
- par->num_frames = ps3fb.xdr_size /
+ par->num_frames = info->fix.smem_len /
max(par->ddr_frame_size, par->xdr_frame_size);
/* Keep the special bits we cannot set using fb_var_screeninfo */
@@ -667,13 +661,13 @@ static int ps3fb_set_par(struct fb_info
}
/* Clear XDR frame buffer memory */
- memset(ps3fb.xdr_ea, 0, ps3fb.xdr_size);
+ memset((void __force *)info->screen_base, 0, info->fix.smem_len);
/* Clear DDR frame buffer memory */
lines = vmode->yres * par->num_frames;
if (par->full_offset)
lines++;
- maxlines = ps3fb.xdr_size / ddr_line_length;
+ maxlines = info->fix.smem_len / ddr_line_length;
for (dst = 0; lines; dst += maxlines * ddr_line_length) {
unsigned int l = min(lines, maxlines);
ps3fb_sync_image(info->device, 0, dst, 0, vmode->xres, l,
@@ -1017,10 +1011,9 @@ static int ps3fb_xdr_settings(u64 xdr_lp
__func__, status);
return -ENXIO;
}
- dev_dbg(dev,
- "video:%p xdr_ea:%p ioif:%lx lpar:%lx phys:%lx size:%lx\n",
- ps3fb_videomemory.address, ps3fb.xdr_ea, GPU_IOIF, xdr_lpar,
- virt_to_abs(ps3fb.xdr_ea), ps3fb_videomemory.size);
+ dev_dbg(dev, "video:%p ioif:%lx lpar:%lx size:%lx\n",
+ ps3fb_videomemory.address, GPU_IOIF, xdr_lpar,
+ ps3fb_videomemory.size);
status = lv1_gpu_context_attribute(ps3fb.context_handle,
L1GPU_CONTEXT_ATTRIBUTE_FB_SETUP,
@@ -1103,6 +1096,7 @@ static int __devinit ps3fb_probe(struct
u64 lpar_reports = 0;
u64 lpar_reports_size = 0;
u64 xdr_lpar;
+ void *fb_start;
int status;
struct task_struct *task;
unsigned long max_ps3fb_size;
@@ -1158,7 +1152,7 @@ static int __devinit ps3fb_probe(struct
}
/* vsync interrupt */
- ps3fb.dinfo = ioremap(lpar_driver_info, 128 * 1024);
+ ps3fb.dinfo = (void __force *)ioremap(lpar_driver_info, 128 * 1024);
if (!ps3fb.dinfo) {
dev_err(&dev->core, "%s: ioremap failed\n", __func__);
goto err_gpu_context_free;
@@ -1168,22 +1162,10 @@ static int __devinit ps3fb_probe(struct
if (retval)
goto err_iounmap_dinfo;
- /* XDR frame buffer */
- ps3fb.xdr_ea = ps3fb_videomemory.address;
- xdr_lpar = ps3_mm_phys_to_lpar(__pa(ps3fb.xdr_ea));
-
/* Clear memory to prevent kernel info leakage into userspace */
- memset(ps3fb.xdr_ea, 0, ps3fb_videomemory.size);
-
- /*
- * The GPU command buffer is at the start of video memory
- * As we don't use the full command buffer, we can put the actual
- * frame buffer at offset GPU_FB_START and save some precious XDR
- * memory
- */
- ps3fb.xdr_ea += GPU_FB_START;
- ps3fb.xdr_size = ps3fb_videomemory.size - GPU_FB_START;
+ memset(ps3fb_videomemory.address, 0, ps3fb_videomemory.size);
+ xdr_lpar = ps3_mm_phys_to_lpar(__pa(ps3fb_videomemory.address));
retval = ps3fb_xdr_settings(xdr_lpar, &dev->core);
if (retval)
goto err_free_irq;
@@ -1197,12 +1179,20 @@ static int __devinit ps3fb_probe(struct
par->new_mode_id = ps3fb_mode;
par->num_frames = 1;
- info->screen_base = (char __iomem *)ps3fb.xdr_ea;
info->fbops = &ps3fb_ops;
-
info->fix = ps3fb_fix;
- info->fix.smem_start = virt_to_abs(ps3fb.xdr_ea);
- info->fix.smem_len = ps3fb.xdr_size;
+
+ /*
+ * The GPU command buffer is at the start of video memory
+ * As we don't use the full command buffer, we can put the actual
+ * frame buffer at offset GPU_FB_START and save some precious XDR
+ * memory
+ */
+ fb_start = ps3fb_videomemory.address + GPU_FB_START;
+ info->screen_base = (char __force __iomem *)fb_start;
+ info->fix.smem_start = virt_to_abs(fb_start);
+ info->fix.smem_len = ps3fb_videomemory.size - GPU_FB_START;
+
info->pseudo_palette = par->pseudo_palette;
info->flags = FBINFO_DEFAULT | FBINFO_READS_FAST |
FBINFO_HWACCEL_XPAN | FBINFO_HWACCEL_YPAN;
@@ -1227,9 +1217,9 @@ static int __devinit ps3fb_probe(struct
dev->core.driver_data = info;
- dev_info(info->device, "%s %s, using %lu KiB of video memory\n",
+ dev_info(info->device, "%s %s, using %u KiB of video memory\n",
dev_driver_string(info->dev), info->dev->bus_id,
- ps3fb.xdr_size >> 10);
+ info->fix.smem_len >> 10);
task = kthread_run(ps3fbd, info, DEVICE_NAME);
if (IS_ERR(task)) {
@@ -1252,7 +1242,7 @@ err_free_irq:
free_irq(ps3fb.irq_no, &dev->core);
ps3_irq_plug_destroy(ps3fb.irq_no);
err_iounmap_dinfo:
- iounmap((u8 __iomem *)ps3fb.dinfo);
+ iounmap((u8 __force __iomem *)ps3fb.dinfo);
err_gpu_context_free:
lv1_gpu_context_free(ps3fb.context_handle);
err_gpu_memory_free:
@@ -1287,7 +1277,7 @@ static int ps3fb_shutdown(struct ps3_sys
framebuffer_release(info);
info = dev->core.driver_data = NULL;
}
- iounmap((u8 __iomem *)ps3fb.dinfo);
+ iounmap((u8 __force __iomem *)ps3fb.dinfo);
status = lv1_gpu_context_free(ps3fb.context_handle);
if (status)
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* [patch 11/11] ps3fb: Fix modedb typos
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (9 preceding siblings ...)
2008-01-25 15:06 ` [patch 10/11] ps3fb: Cleanup sweep Geert Uytterhoeven
@ 2008-01-25 15:06 ` Geert Uytterhoeven
2008-01-27 6:01 ` [patch 00/11] ps3av/3fb patches for 2.6.25 Andrew Morton
11 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-25 15:06 UTC (permalink / raw)
To: Antonino A. Daplas, Andrew Morton, linux-fbdev-devel
Cc: Geert Uytterhoeven, linuxppc-dev, cbe-oss-dev, Geoff Levand
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: ps3-wip/ps3fb-modedb-typos.diff --]
[-- Type: text/plain, Size: 1751 bytes --]
From: Geoff Levand <geoffrey.levand@am.sony.com>
ps3fb: Fix modedb typos
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
---
drivers/video/ps3fb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -184,7 +184,7 @@ static const struct fb_videomode ps3fb_m
"720p", 50, 1124, 644, 13468, 298, 478, 57, 44, 80, 5,
FB_SYNC_BROADCAST, FB_VMODE_NONINTERLACED
}, {
- /* 1080 */
+ /* 1080i */
"1080i", 50, 1688, 964, 13468, 264, 600, 94, 62, 88, 5,
FB_SYNC_BROADCAST, FB_VMODE_INTERLACED
}, {
@@ -232,7 +232,7 @@ static const struct fb_videomode ps3fb_m
FB_SYNC_BROADCAST, FB_VMODE_NONINTERLACED
}, {
/* 1080if */
- "1080f", 50, 1920, 1080, 13468, 148, 484, 36, 4, 88, 5,
+ "1080if", 50, 1920, 1080, 13468, 148, 484, 36, 4, 88, 5,
FB_SYNC_BROADCAST, FB_VMODE_INTERLACED
}, {
/* 1080pf */
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������ Da Vincilaan 7-D1 ������ B-1935 Zaventem ������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������ B-1840 Londerzeel ������ Belgium
VAT BE 0413.825.160 ������ RPR Brussels
Fortis Bank Zaventem ������ Swift GEBABEBB08A ������ IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 04/11] ps3fb: Inline macros that are used only once
2008-01-25 15:06 ` [patch 04/11] ps3fb: Inline macros that are used only once Geert Uytterhoeven
@ 2008-01-27 6:01 ` Andrew Morton
2008-01-27 9:34 ` Geert Uytterhoeven
0 siblings, 1 reply; 23+ messages in thread
From: Andrew Morton @ 2008-01-27 6:01 UTC (permalink / raw)
Cc: Geert.Uytterhoeven, linuxppc-dev, linux-fbdev-devel, cbe-oss-dev,
adaplas
> On Fri, 25 Jan 2008 16:06:27 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
>
> ps3fb: inline the X_OFF(), Y_OFF(), WIDTH(), HEIGHT(), and VP_OFF() macros,
> as they're used in one place only
>
I think the term "open-code" would be more suitable here. "inlining" means
"make it an inline function". I'll update the changelog.
> -#define X_OFF(i) (ps3fb_res[i].xoff) /* left/right margin (pixel) */
> -#define Y_OFF(i) (ps3fb_res[i].yoff) /* top/bottom margin (pixel) */
> -#define WIDTH(i) (ps3fb_res[i].xres) /* width of FB */
> -#define HEIGHT(i) (ps3fb_res[i].yres) /* height of FB */
> #define BPP 4 /* number of bytes per pixel */
>
> -/* Start of the virtual frame buffer (relative to fullscreen ) */
> -#define VP_OFF(i) ((WIDTH(i) * Y_OFF(i) + X_OFF(i)) * BPP)
> -
>
> static int ps3fb_mode;
> module_param(ps3fb_mode, int, 0);
> @@ -611,7 +604,10 @@ static int ps3fb_set_par(struct fb_info
>
> par->width = info->var.xres;
> par->height = info->var.yres;
> - offset = VP_OFF(i);
> +
> + /* Start of the virtual frame buffer (relative to fullscreen) */
> + offset = ps3fb_res[i].yoff * ddr_line_length + ps3fb_res[i].xoff * BPP;
> +
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
` (10 preceding siblings ...)
2008-01-25 15:06 ` [patch 11/11] ps3fb: Fix modedb typos Geert Uytterhoeven
@ 2008-01-27 6:01 ` Andrew Morton
2008-01-27 9:44 ` Geert Uytterhoeven
11 siblings, 1 reply; 23+ messages in thread
From: Andrew Morton @ 2008-01-27 6:01 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: linuxppc-dev, linux-fbdev-devel, cbe-oss-dev, adaplas
> On Fri, 25 Jan 2008 16:06:23 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> Hare are the ps3av/fb patches for 2.6.25:
I would have to say: it's a bit late to be submitting things of this nature
for 2.6.25. Given the mess everyone has made of everything there's little
chance that I'll be able to do a 2.6.24-mm1 so this stuff basically goes
into mainline without public testing.
I don't think many people care much about ps3 so whatever. But if it were
core code or a popular driver then I would probably slip this back to
2.6.26.
We haven't heard from Tony in a while so I guess I'm fbdev maintainer
again. Be afraid.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 09/11] ps3fb: Round up video modes
2008-01-25 15:06 ` [patch 09/11] ps3fb: Round up video modes Geert Uytterhoeven
@ 2008-01-27 6:01 ` Andrew Morton
2008-01-27 9:53 ` Geert Uytterhoeven
0 siblings, 1 reply; 23+ messages in thread
From: Andrew Morton @ 2008-01-27 6:01 UTC (permalink / raw)
Cc: Geert.Uytterhoeven, linuxppc-dev, linux-fbdev-devel, cbe-oss-dev,
adaplas
> On Fri, 25 Jan 2008 16:06:32 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> static int ps3fb_cmp_mode(const struct fb_videomode *vmode,
> const struct fb_var_screeninfo *var)
> {
> - /* resolution + black border must match a native resolution */
> - if (vmode->left_margin + vmode->xres + vmode->right_margin !=
> - var->left_margin + var->xres + var->right_margin ||
> - vmode->upper_margin + vmode->yres + vmode->lower_margin !=
> - var->upper_margin + var->yres + var->lower_margin)
> + long xres, yres, left_margin, right_margin, upper_margin, lower_margin;
> + long dx, dy;
I don't think these need to be longs? And they probably don't need to be
signed either.
If a switch to u32 improves the code any, it might be worth doing..
All the typecasting which this patch adds makes me wonder if the choice
of types requires a general revisit...
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 04/11] ps3fb: Inline macros that are used only once
2008-01-27 6:01 ` Andrew Morton
@ 2008-01-27 9:34 ` Geert Uytterhoeven
0 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-27 9:34 UTC (permalink / raw)
To: Andrew Morton; +Cc: linuxppc-dev, linux-fbdev-devel, cbe-oss-dev, adaplas
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1109 bytes --]
On Sat, 26 Jan 2008, Andrew Morton wrote:
> > On Fri, 25 Jan 2008 16:06:27 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > From: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
> >
> > ps3fb: inline the X_OFF(), Y_OFF(), WIDTH(), HEIGHT(), and VP_OFF() macros,
> > as they're used in one place only
>
> I think the term "open-code" would be more suitable here. "inlining" means
> "make it an inline function". I'll update the changelog.
You're right. Thanks!
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 146 bytes --]
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 6:01 ` [patch 00/11] ps3av/3fb patches for 2.6.25 Andrew Morton
@ 2008-01-27 9:44 ` Geert Uytterhoeven
2008-01-27 10:16 ` Andrew Morton
0 siblings, 1 reply; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-27 9:44 UTC (permalink / raw)
To: Andrew Morton; +Cc: linuxppc-dev, linux-fbdev-devel, cbe-oss-dev, adaplas
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1369 bytes --]
Hi Andrew,
On Sat, 26 Jan 2008, Andrew Morton wrote:
> > On Fri, 25 Jan 2008 16:06:23 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > Hare are the ps3av/fb patches for 2.6.25:
>
> I would have to say: it's a bit late to be submitting things of this nature
> for 2.6.25. Given the mess everyone has made of everything there's little
> chance that I'll be able to do a 2.6.24-mm1 so this stuff basically goes
> into mainline without public testing.
I beg to disagree (of course :-)
I posted these patches before, about 2 months ago. Unfortunately I didn't CC
you at that time, so they slipped under your radar.
But the patches did receive public testing even before that, when they entered
Geoff's ps3-linux.git tree.
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 09/11] ps3fb: Round up video modes
2008-01-27 6:01 ` Andrew Morton
@ 2008-01-27 9:53 ` Geert Uytterhoeven
0 siblings, 0 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-27 9:53 UTC (permalink / raw)
To: Andrew Morton; +Cc: linuxppc-dev, linux-fbdev-devel, cbe-oss-dev, adaplas
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2070 bytes --]
On Sat, 26 Jan 2008, Andrew Morton wrote:
> > On Fri, 25 Jan 2008 16:06:32 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > static int ps3fb_cmp_mode(const struct fb_videomode *vmode,
> > const struct fb_var_screeninfo *var)
> > {
> > - /* resolution + black border must match a native resolution */
> > - if (vmode->left_margin + vmode->xres + vmode->right_margin !=
> > - var->left_margin + var->xres + var->right_margin ||
> > - vmode->upper_margin + vmode->yres + vmode->lower_margin !=
> > - var->upper_margin + var->yres + var->lower_margin)
> > + long xres, yres, left_margin, right_margin, upper_margin, lower_margin;
> > + long dx, dy;
>
> I don't think these need to be longs? And they probably don't need to be
> signed either.
>
> If a switch to u32 improves the code any, it might be worth doing..
>
> All the typecasting which this patch adds makes me wonder if the choice
> of types requires a general revisit...
The problems are:
- Adding up the various fb_var_screeninfo.* timing fields (which are u32) may
cause overflows. That's why I use `long' (which is 64-bit on ppc64).
Perhaps I should change it to s64 for readability?
- If I make xres, yres, left_margin, right_margin, upper_margin, lower_margin
u32, I need more casts for calculating dx and dy. Probably u64 would be OK,
though.
- dx and dy are signed because they can be smaller than 0.
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 9:44 ` Geert Uytterhoeven
@ 2008-01-27 10:16 ` Andrew Morton
2008-01-27 11:15 ` Geert Uytterhoeven
0 siblings, 1 reply; 23+ messages in thread
From: Andrew Morton @ 2008-01-27 10:16 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: linuxppc-dev, linux-fbdev-devel, cbe-oss-dev, adaplas
> On Sun, 27 Jan 2008 10:44:40 +0100 (CET) Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> Hi Andrew,
>
> On Sat, 26 Jan 2008, Andrew Morton wrote:
> > > On Fri, 25 Jan 2008 16:06:23 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > > Hare are the ps3av/fb patches for 2.6.25:
> >
> > I would have to say: it's a bit late to be submitting things of this nature
> > for 2.6.25. Given the mess everyone has made of everything there's little
> > chance that I'll be able to do a 2.6.24-mm1 so this stuff basically goes
> > into mainline without public testing.
>
> I beg to disagree (of course :-)
>
> I posted these patches before, about 2 months ago. Unfortunately I didn't CC
> you at that time, so they slipped under your radar.
> But the patches did receive public testing even before that, when they entered
> Geoff's ps3-linux.git tree.
>
Should that git tree be in the -mm lineup?
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 10:16 ` Andrew Morton
@ 2008-01-27 11:15 ` Geert Uytterhoeven
2008-01-27 13:42 ` Josh Boyer
2008-01-27 20:01 ` Geoff Levand
0 siblings, 2 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2008-01-27 11:15 UTC (permalink / raw)
To: Andrew Morton, Geoff Levand
Cc: Linux/PPC Development, Linux Frame Buffer Device Development,
Cell Broadband Engine OSS Development, Antonino Daplas
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1662 bytes --]
Hi Andrew,
On Sun, 27 Jan 2008, Andrew Morton wrote:
> > On Sun, 27 Jan 2008 10:44:40 +0100 (CET) Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > On Sat, 26 Jan 2008, Andrew Morton wrote:
> > > > On Fri, 25 Jan 2008 16:06:23 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > > > Hare are the ps3av/fb patches for 2.6.25:
> > >
> > > I would have to say: it's a bit late to be submitting things of this nature
> > > for 2.6.25. Given the mess everyone has made of everything there's little
> > > chance that I'll be able to do a 2.6.24-mm1 so this stuff basically goes
> > > into mainline without public testing.
> >
> > I beg to disagree (of course :-)
> >
> > I posted these patches before, about 2 months ago. Unfortunately I didn't CC
> > you at that time, so they slipped under your radar.
> > But the patches did receive public testing even before that, when they entered
> > Geoff's ps3-linux.git tree.
>
> Should that git tree be in the -mm lineup?
That may be a good idea! Geoff?
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
[-- Attachment #2: Type: text/plain, Size: 228 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
[-- Attachment #3: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 11:15 ` Geert Uytterhoeven
@ 2008-01-27 13:42 ` Josh Boyer
2008-01-27 16:15 ` Jon Loeliger
2008-01-27 20:01 ` Geoff Levand
1 sibling, 1 reply; 23+ messages in thread
From: Josh Boyer @ 2008-01-27 13:42 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Linux Frame Buffer Device Development, Antonino Daplas, Cell,
Linux/PPC Development, Andrew Morton, Development
On Sun, 27 Jan 2008 12:15:28 +0100 (CET)
Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> Hi Andrew,
>
> On Sun, 27 Jan 2008, Andrew Morton wrote:
> > > On Sun, 27 Jan 2008 10:44:40 +0100 (CET) Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > > On Sat, 26 Jan 2008, Andrew Morton wrote:
> > > > > On Fri, 25 Jan 2008 16:06:23 +0100 Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
> > > > > Hare are the ps3av/fb patches for 2.6.25:
> > > >
> > > > I would have to say: it's a bit late to be submitting things of this nature
> > > > for 2.6.25. Given the mess everyone has made of everything there's little
> > > > chance that I'll be able to do a 2.6.24-mm1 so this stuff basically goes
> > > > into mainline without public testing.
> > >
> > > I beg to disagree (of course :-)
> > >
> > > I posted these patches before, about 2 months ago. Unfortunately I didn't CC
> > > you at that time, so they slipped under your radar.
> > > But the patches did receive public testing even before that, when they entered
> > > Geoff's ps3-linux.git tree.
> >
> > Should that git tree be in the -mm lineup?
>
> That may be a good idea! Geoff?
There are lots of powerpc sub-trees. Kumar's, Geoff's, mine, Olof's,
Grant's, Vitaly's are just the ones I can think of the top of my head.
Shouldn't we just ask Paul to sync up more often rather than have
Andrew track X number of trees that eventually all merge into Paul's
anyway?
josh
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 13:42 ` Josh Boyer
@ 2008-01-27 16:15 ` Jon Loeliger
0 siblings, 0 replies; 23+ messages in thread
From: Jon Loeliger @ 2008-01-27 16:15 UTC (permalink / raw)
To: Josh Boyer
Cc: Linux Frame Buffer Device Development, Antonino Daplas,
Linux/PPC Development, Geert Uytterhoeven, Andrew Morton, Cell,
Development
So, like, the other day Josh Boyer mumbled:
>
> There are lots of powerpc sub-trees. Kumar's, Geoff's, mine, Olof's,
> Grant's, Vitaly's are just the ones I can think of the top of my head.
>
> Shouldn't we just ask Paul to sync up more often rather than have
> Andrew track X number of trees that eventually all merge into Paul's
> anyway?
I think that is an excellent notion.
jdl
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [patch 00/11] ps3av/3fb patches for 2.6.25
2008-01-27 11:15 ` Geert Uytterhoeven
2008-01-27 13:42 ` Josh Boyer
@ 2008-01-27 20:01 ` Geoff Levand
1 sibling, 0 replies; 23+ messages in thread
From: Geoff Levand @ 2008-01-27 20:01 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Linux/PPC Development, Andrew Morton,
Linux Frame Buffer Device Development,
Cell Broadband Engine OSS Development, Antonino Daplas
On 01/27/2008 03:15 AM, Geert Uytterhoeven wrote:
> On Sun, 27 Jan 2008, Andrew Morton wrote:
>> > On Sun, 27 Jan 2008 10:44:40 +0100 (CET) Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> wrote:
>> > I posted these patches before, about 2 months ago. Unfortunately I didn't CC
>> > you at that time, so they slipped under your radar.
>> > But the patches did receive public testing even before that, when they entered
>> > Geoff's ps3-linux.git tree.
>>
>> Should that git tree be in the -mm lineup?
>
> That may be a good idea! Geoff?
Sounds good.
ps3-linux.git is used by a lot of active PS3 developers, so
already gets some good testing on PS3, but I think if we get
the stable patches into -mm, then we will get more testing on
non-PS3 platforms, which is something I think we need.
As a start, I'll work toward getting patches from ps3-stable
into -mm. I think it is too late now for the 2.6.25 patches,
so the 'for 2.6.26' ones. To make this work, we (PS3
maintainers) need to get our patches moved from ps3-wip to
ps3-stable in a timely manner. As of late, it seems patches
have lingered in ps3-wip too long.
-Geoff
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2008-01-27 20:01 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-25 15:06 [patch 00/11] ps3av/3fb patches for 2.6.25 Geert Uytterhoeven
2008-01-25 15:06 ` [patch 01/11] ps3av: ps3av_get_scanmode() and ps3av_get_refresh_rate() are unused Geert Uytterhoeven
2008-01-25 15:06 ` [patch 02/11] ps3: Use symbolic names for video modes Geert Uytterhoeven
2008-01-25 15:06 ` [patch 03/11] ps3fb: Kill PS3FB_FULL_MODE_BIT Geert Uytterhoeven
2008-01-25 15:06 ` [patch 04/11] ps3fb: Inline macros that are used only once Geert Uytterhoeven
2008-01-27 6:01 ` Andrew Morton
2008-01-27 9:34 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 05/11] ps3fb: Kill ps3fb_res Geert Uytterhoeven
2008-01-25 15:06 ` [patch 06/11] ps3fb: Make frame buffer offsets unsigned int Geert Uytterhoeven
2008-01-25 15:06 ` [patch 07/11] ps3fb: Add support for configurable black borders Geert Uytterhoeven
2008-01-25 15:06 ` [patch 08/11] ps3fb: Reorganize modedb handling Geert Uytterhoeven
2008-01-25 15:06 ` [patch 09/11] ps3fb: Round up video modes Geert Uytterhoeven
2008-01-27 6:01 ` Andrew Morton
2008-01-27 9:53 ` Geert Uytterhoeven
2008-01-25 15:06 ` [patch 10/11] ps3fb: Cleanup sweep Geert Uytterhoeven
2008-01-25 15:06 ` [patch 11/11] ps3fb: Fix modedb typos Geert Uytterhoeven
2008-01-27 6:01 ` [patch 00/11] ps3av/3fb patches for 2.6.25 Andrew Morton
2008-01-27 9:44 ` Geert Uytterhoeven
2008-01-27 10:16 ` Andrew Morton
2008-01-27 11:15 ` Geert Uytterhoeven
2008-01-27 13:42 ` Josh Boyer
2008-01-27 16:15 ` Jon Loeliger
2008-01-27 20:01 ` Geoff Levand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).