staging/xgifb: Remove duplicated code from XGINew_DDRSizing340

Since XGINew_SetDRAMSize20Reg now handles both cases we can remove
the code duplication in XGINew_DDRSizing340.

Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Peter Huewe 2012-06-14 00:21:44 +02:00 committed by Greg Kroah-Hartman
parent 391f695b90
commit 672f5ee27e

View File

@ -893,52 +893,38 @@ static void XGINew_CheckChannel(struct xgi_hw_device_info *HwDeviceExtension,
static int XGINew_DDRSizing340(struct xgi_hw_device_info *HwDeviceExtension, static int XGINew_DDRSizing340(struct xgi_hw_device_info *HwDeviceExtension,
struct vb_device_info *pVBInfo) struct vb_device_info *pVBInfo)
{ {
int i; u8 i, size;
unsigned short memsize, addr; unsigned short memsize, start_addr;
const unsigned short (*dram_table)[5];
xgifb_reg_set(pVBInfo->P3c4, 0x15, 0x00); /* noninterleaving */ xgifb_reg_set(pVBInfo->P3c4, 0x15, 0x00); /* noninterleaving */
xgifb_reg_set(pVBInfo->P3c4, 0x1C, 0x00); /* nontiling */ xgifb_reg_set(pVBInfo->P3c4, 0x1C, 0x00); /* nontiling */
XGINew_CheckChannel(HwDeviceExtension, pVBInfo); XGINew_CheckChannel(HwDeviceExtension, pVBInfo);
if (HwDeviceExtension->jChipType >= XG20) { if (HwDeviceExtension->jChipType >= XG20) {
for (i = 0; i < 12; i++) { dram_table = XGINew_DDRDRAM_TYPE20;
XGINew_SetDRAMSizingType(i, size = ARRAY_SIZE(XGINew_DDRDRAM_TYPE20);
XGINew_DDRDRAM_TYPE20, start_addr = 5;
pVBInfo);
memsize = XGINew_SetDRAMSize20Reg(i,
XGINew_DDRDRAM_TYPE20,
pVBInfo);
if (memsize == 0)
continue;
addr = memsize + (pVBInfo->ram_channel - 2) + 20;
if ((HwDeviceExtension->ulVideoMemorySize - 1) <
(unsigned long) (1 << addr))
continue;
if (XGINew_ReadWriteRest(addr, 5, pVBInfo) == 1)
return 1;
}
} else { } else {
for (i = 0; i < 4; i++) { dram_table = XGINew_DDRDRAM_TYPE340;
XGINew_SetDRAMSizingType(i, size = ARRAY_SIZE(XGINew_DDRDRAM_TYPE340);
XGINew_DDRDRAM_TYPE340, start_addr = 9;
pVBInfo); }
memsize = XGINew_SetDRAMSize20Reg(i,
XGINew_DDRDRAM_TYPE340,
pVBInfo);
if (memsize == 0) for (i = 0; i < size; i++) {
continue; XGINew_SetDRAMSizingType(i, dram_table, pVBInfo);
memsize = XGINew_SetDRAMSize20Reg(i, dram_table, pVBInfo);
addr = memsize + (pVBInfo->ram_channel - 2) + 20; if (memsize == 0)
if ((HwDeviceExtension->ulVideoMemorySize - 1) < continue;
(unsigned long) (1 << addr))
continue;
if (XGINew_ReadWriteRest(addr, 9, pVBInfo) == 1) memsize += (pVBInfo->ram_channel - 2) + 20;
return 1; if ((HwDeviceExtension->ulVideoMemorySize - 1) <
} (unsigned long) (1 << memsize))
continue;
if (XGINew_ReadWriteRest(memsize, start_addr, pVBInfo) == 1)
return 1;
} }
return 0; return 0;
} }