* style cleanup
* add some missing functions from drm version git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42583 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -102,38 +102,38 @@ atom_iio_execute(atom_context *ctx, int base, uint32 index, uint32 data)
|
|||||||
base++;
|
base++;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_READ:
|
case ATOM_IIO_READ:
|
||||||
temp = ctx->card->reg_read(CU16(base + 1));
|
temp = ctx->card->ioreg_read(CU16(base + 1));
|
||||||
base+=3;
|
base += 3;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_WRITE:
|
case ATOM_IIO_WRITE:
|
||||||
ctx->card->reg_write(CU16(base + 1), temp);
|
ctx->card->ioreg_write(CU16(base + 1), temp);
|
||||||
base+=3;
|
base += 3;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_CLEAR:
|
case ATOM_IIO_CLEAR:
|
||||||
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
||||||
base+=3;
|
base += 3;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_SET:
|
case ATOM_IIO_SET:
|
||||||
temp |= (0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2);
|
temp |= (0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2);
|
||||||
base+=3;
|
base += 3;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_MOVE_INDEX:
|
case ATOM_IIO_MOVE_INDEX:
|
||||||
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
||||||
temp |= ((index >> CU8(base + 2))
|
temp |= ((index >> CU8(base + 2))
|
||||||
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
||||||
base+=4;
|
base += 4;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_MOVE_DATA:
|
case ATOM_IIO_MOVE_DATA:
|
||||||
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
||||||
temp |= ((data >> CU8(base + 2))
|
temp |= ((data >> CU8(base + 2))
|
||||||
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
||||||
base+=4;
|
base += 4;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_MOVE_ATTR:
|
case ATOM_IIO_MOVE_ATTR:
|
||||||
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
temp &= ~((0xFFFFFFFF >> (32 - CU8(base + 1))) << CU8(base + 2));
|
||||||
temp |= ((ctx->io_attr >> CU8(base + 2))
|
temp |= ((ctx->io_attr >> CU8(base + 2))
|
||||||
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
& (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base + 3);
|
||||||
base+=4;
|
base += 4;
|
||||||
break;
|
break;
|
||||||
case ATOM_IIO_END:
|
case ATOM_IIO_END:
|
||||||
return temp;
|
return temp;
|
||||||
@@ -153,115 +153,120 @@ atom_get_src_int(atom_exec_context *ctx, uint8 attr, int *ptr,
|
|||||||
arg = attr & 7;
|
arg = attr & 7;
|
||||||
align = (attr >> 3) & 7;
|
align = (attr >> 3) & 7;
|
||||||
switch(arg) {
|
switch(arg) {
|
||||||
case ATOM_ARG_REG:
|
case ATOM_ARG_REG:
|
||||||
idx = U16(*ptr);
|
idx = U16(*ptr);
|
||||||
(*ptr)+=2;
|
(*ptr)+=2;
|
||||||
idx += gctx->reg_block;
|
idx += gctx->reg_block;
|
||||||
switch(gctx->io_mode) {
|
switch(gctx->io_mode) {
|
||||||
case ATOM_IO_MM:
|
case ATOM_IO_MM:
|
||||||
val = gctx->card->reg_read(idx);
|
val = gctx->card->reg_read(idx);
|
||||||
break;
|
break;
|
||||||
case ATOM_IO_PCI:
|
case ATOM_IO_PCI:
|
||||||
TRACE("%s: PCI registers are not implemented.\n", __func__);
|
TRACE("%s: PCI registers are not implemented.\n", __func__);
|
||||||
return 0;
|
return 0;
|
||||||
case ATOM_IO_SYSIO:
|
case ATOM_IO_SYSIO:
|
||||||
TRACE("%s: SYSIO registers are not implemented.\n", __func__);
|
TRACE("%s: SYSIO registers are not implemented.\n",
|
||||||
return 0;
|
__func__);
|
||||||
default:
|
return 0;
|
||||||
if (!(gctx->io_mode&0x80)) {
|
default:
|
||||||
TRACE("%s: Bad IO mode.\n", __func__);
|
if (!(gctx->io_mode & 0x80)) {
|
||||||
return 0;
|
TRACE("%s: Bad IO mode.\n", __func__);
|
||||||
}
|
return 0;
|
||||||
if (!gctx->iio[gctx->io_mode&0x7F]) {
|
}
|
||||||
TRACE("%s: Undefined indirect IO read method %d.\n", __func__,
|
if (!gctx->iio[gctx->io_mode & 0x7F]) {
|
||||||
gctx->io_mode&0x7F);
|
TRACE("%s: Undefined indirect IO read method %d.\n",
|
||||||
return 0;
|
__func__, gctx->io_mode & 0x7F);
|
||||||
}
|
return 0;
|
||||||
val = atom_iio_execute(gctx, gctx->iio[gctx->io_mode&0x7F], idx, 0);
|
}
|
||||||
}
|
val = atom_iio_execute(gctx,
|
||||||
break;
|
gctx->iio[gctx->io_mode & 0x7F], idx, 0);
|
||||||
case ATOM_ARG_PS:
|
}
|
||||||
idx = U8(*ptr);
|
break;
|
||||||
(*ptr)++;
|
case ATOM_ARG_PS:
|
||||||
val = ctx->ps[idx];
|
idx = U8(*ptr);
|
||||||
break;
|
(*ptr)++;
|
||||||
case ATOM_ARG_WS:
|
val = ctx->ps[idx];
|
||||||
idx = U8(*ptr);
|
// TODO : val = get_unaligned_le32((u32 *)&ctx->ps[idx]);
|
||||||
(*ptr)++;
|
break;
|
||||||
switch(idx) {
|
case ATOM_ARG_WS:
|
||||||
case ATOM_WS_QUOTIENT:
|
idx = U8(*ptr);
|
||||||
val = gctx->divmul[0];
|
(*ptr)++;
|
||||||
break;
|
switch(idx) {
|
||||||
case ATOM_WS_REMAINDER:
|
case ATOM_WS_QUOTIENT:
|
||||||
val = gctx->divmul[1];
|
val = gctx->divmul[0];
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_DATAPTR:
|
case ATOM_WS_REMAINDER:
|
||||||
val = gctx->data_block;
|
val = gctx->divmul[1];
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_SHIFT:
|
case ATOM_WS_DATAPTR:
|
||||||
val = gctx->shift;
|
val = gctx->data_block;
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_OR_MASK:
|
case ATOM_WS_SHIFT:
|
||||||
val = 1<<gctx->shift;
|
val = gctx->shift;
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_AND_MASK:
|
case ATOM_WS_OR_MASK:
|
||||||
val = ~(1<<gctx->shift);
|
val = 1 << gctx->shift;
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_FB_WINDOW:
|
case ATOM_WS_AND_MASK:
|
||||||
val = gctx->fb_base;
|
val = ~(1 << gctx->shift);
|
||||||
break;
|
break;
|
||||||
case ATOM_WS_ATTRIBUTES:
|
case ATOM_WS_FB_WINDOW:
|
||||||
val = gctx->io_attr;
|
val = gctx->fb_base;
|
||||||
break;
|
break;
|
||||||
default:
|
case ATOM_WS_ATTRIBUTES:
|
||||||
val = ctx->ws[idx];
|
val = gctx->io_attr;
|
||||||
}
|
break;
|
||||||
break;
|
case ATOM_WS_REGPTR:
|
||||||
case ATOM_ARG_ID:
|
val = gctx->reg_block;
|
||||||
idx = U16(*ptr);
|
break;
|
||||||
(*ptr)+=2;
|
default:
|
||||||
val = U32(idx + gctx->data_block);
|
val = ctx->ws[idx];
|
||||||
break;
|
}
|
||||||
case ATOM_ARG_FB:
|
break;
|
||||||
idx = U8(*ptr);
|
case ATOM_ARG_ID:
|
||||||
(*ptr)++;
|
idx = U16(*ptr);
|
||||||
TRACE("%s: FB access is not implemented.\n", __func__);
|
(*ptr) += 2;
|
||||||
return 0;
|
val = U32(idx + gctx->data_block);
|
||||||
case ATOM_ARG_IMM:
|
break;
|
||||||
switch(align) {
|
case ATOM_ARG_FB:
|
||||||
case ATOM_SRC_DWORD:
|
idx = U8(*ptr);
|
||||||
val = U32(*ptr);
|
(*ptr)++;
|
||||||
(*ptr)+=4;
|
val = gctx->scratch[((gctx->fb_base + idx) / 4)];
|
||||||
return val;
|
return 0;
|
||||||
case ATOM_SRC_WORD0:
|
case ATOM_ARG_IMM:
|
||||||
case ATOM_SRC_WORD8:
|
switch(align) {
|
||||||
case ATOM_SRC_WORD16:
|
case ATOM_SRC_DWORD:
|
||||||
val = U16(*ptr);
|
val = U32(*ptr);
|
||||||
(*ptr)+=2;
|
(*ptr)+=4;
|
||||||
return val;
|
return val;
|
||||||
case ATOM_SRC_BYTE0:
|
case ATOM_SRC_WORD0:
|
||||||
case ATOM_SRC_BYTE8:
|
case ATOM_SRC_WORD8:
|
||||||
case ATOM_SRC_BYTE16:
|
case ATOM_SRC_WORD16:
|
||||||
case ATOM_SRC_BYTE24:
|
val = U16(*ptr);
|
||||||
val = U8(*ptr);
|
(*ptr) += 2;
|
||||||
(*ptr)++;
|
return val;
|
||||||
return val;
|
case ATOM_SRC_BYTE0:
|
||||||
}
|
case ATOM_SRC_BYTE8:
|
||||||
return 0;
|
case ATOM_SRC_BYTE16:
|
||||||
case ATOM_ARG_PLL:
|
case ATOM_SRC_BYTE24:
|
||||||
idx = U8(*ptr);
|
val = U8(*ptr);
|
||||||
(*ptr)++;
|
(*ptr)++;
|
||||||
gctx->card->reg_write(PLL_INDEX, idx);
|
return val;
|
||||||
val = gctx->card->reg_read(PLL_DATA);
|
}
|
||||||
break;
|
return 0;
|
||||||
case ATOM_ARG_MC:
|
case ATOM_ARG_PLL:
|
||||||
idx = U8(*ptr);
|
idx = U8(*ptr);
|
||||||
(*ptr)++;
|
(*ptr)++;
|
||||||
TRACE("%s: MC registers are not implemented.\n", __func__);
|
val = gctx->card->pll_read(idx);
|
||||||
return 0;
|
break;
|
||||||
|
case ATOM_ARG_MC:
|
||||||
|
idx = U8(*ptr);
|
||||||
|
(*ptr)++;
|
||||||
|
val = gctx->card->mc_read(idx);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
if (saved)
|
if (saved)
|
||||||
*saved = val;
|
*saved = val;
|
||||||
val &= atom_arg_mask[align];
|
val &= atom_arg_mask[align];
|
||||||
val >>= atom_arg_shift[align];
|
val >>= atom_arg_shift[align];
|
||||||
return val;
|
return val;
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ struct card_info {
|
|||||||
#define ATOM_WS_AND_MASK 0x45
|
#define ATOM_WS_AND_MASK 0x45
|
||||||
#define ATOM_WS_FB_WINDOW 0x46
|
#define ATOM_WS_FB_WINDOW 0x46
|
||||||
#define ATOM_WS_ATTRIBUTES 0x47
|
#define ATOM_WS_ATTRIBUTES 0x47
|
||||||
|
#define ATOM_WS_REGPTR 0x48
|
||||||
|
|
||||||
#define ATOM_IIO_NOP 0
|
#define ATOM_IIO_NOP 0
|
||||||
#define ATOM_IIO_START 1
|
#define ATOM_IIO_START 1
|
||||||
@@ -138,6 +139,7 @@ typedef struct atom_context_s {
|
|||||||
uint8 shift;
|
uint8 shift;
|
||||||
int cs_equal, cs_above;
|
int cs_equal, cs_above;
|
||||||
int io_mode;
|
int io_mode;
|
||||||
|
uint32 *scratch;
|
||||||
} atom_context;
|
} atom_context;
|
||||||
|
|
||||||
extern int atom_debug;
|
extern int atom_debug;
|
||||||
|
|||||||
Reference in New Issue
Block a user