AG903ライブラリリファレンス
Body Source
bscprm.c
本文ソース
コピコード
1: 8: 9: 13: 14: 15:
#include
"AG903_errno.h" 16:
#include
"AG903_common.h" 17:
#include
"register/AG903_bscreg.h" 18:
#include
"bsc/bscprm.h" 19: 20: 21: 28:
void
AG903_BSCPrmGetPbstat
(
AG903_BSCPrmPbstat
* stat) 29: { 30: uint32_t val; 31: 32:
ASSERT
(NULL != stat); 33: 34: val =
AG903_BSC
->PBSTAT; 35: 36:
if
(
AG903_BSC_PBSTAT_IDE_MSK
& val){ 37: stat->ata_ctr =
true
; 38: }
else
{ 39: stat->ata_ctr =
false
; 40: } 41: 42:
if
(
AG903_BSC_PBSTAT_PCC_MSK
& val){ 43: stat->cf_ctr =
true
; 44: }
else
{ 45: stat->cf_ctr =
false
; 46: } 47: 48:
if
(
AG903_BSC_PBSTAT_BSRQ_MSK
& val){ 49: stat->bus_req =
true
; 50: }
else
{ 51: stat->bus_req =
false
; 52: } 53: 54:
if
(
AG903_BSC_PBSTAT_BSGRT_MSK
& val){ 55: stat->bus_grt =
true
; 56: }
else
{ 57: stat->bus_grt =
false
; 58: } 59: 60:
if
(
AG903_BSC_PBSTAT_MDDV_MSK
& val){ 61: stat->pbus_mode =
AG903_BSC_PBMODE_DEVICE
; 62: }
else
{ 63: stat->pbus_mode =
AG903_BSC_PBMODE_HOST
; 64: } 65: 66:
if
(
AG903_BSC_PBSTAT_MDSRM32_MSK
& val){ 67: stat->bus_wid =
AG903_BSC_DTWIDTH_32
; 68: }
else
{ 69: stat->bus_wid =
AG903_BSC_DTWIDTH_16
; 70: } 71: 72:
return
; 73: } 74: 75: 76: 83:
void
AG903_BSCPrmSetIntMask
(uint8_t mask) 84: { 85:
AG903_BSC
->PBINTMASK = (uint32_t)(mask & (
AG903_BSC_PBINTMASK_INT0_MSK
|
AG903_BSC_PBINTMASK_INT1_MSK
| 86:
AG903_BSC_PBINTMASK_INT2_MSK
|
AG903_BSC_PBINTMASK_INT3_MSK
)); 87:
return
; 88: } 89: 90: 91: 98:
void
AG903_BSCPrmGetIntMask
(uint8_t* mask) 99: { 100:
ASSERT
(NULL != mask); 101: (*mask) = (uint8_t)(
AG903_BSC
->PBINTMASK & (
AG903_BSC_PBINTMASK_INT0_MSK
|
AG903_BSC_PBINTMASK_INT1_MSK
| 102:
AG903_BSC_PBINTMASK_INT2_MSK
|
AG903_BSC_PBINTMASK_INT3_MSK
)); 103:
return
; 104: } 105: 106: 107: 114:
void
AG903_BSCPrmSetIntMode
(uint8_t mode) 115: { 116:
AG903_BSC
->PBINTMODE = (uint32_t)(mode & (
AG903_BSC_PBINTMODE_INT0_MSK
|
AG903_BSC_PBINTMODE_INT1_MSK
| 117:
AG903_BSC_PBINTMODE_INT2_MSK
|
AG903_BSC_PBINTMODE_INT3_MSK
)); 118:
return
; 119: } 120: 121: 128:
void
AG903_BSCPrmGetIntMode
(uint8_t* mode) 129: { 130:
ASSERT
(NULL != mode); 131: (*mode) = (uint8_t)(
AG903_BSC
->PBINTMODE & (
AG903_BSC_PBINTMODE_INT0_MSK
|
AG903_BSC_PBINTMODE_INT1_MSK
| 132:
AG903_BSC_PBINTMODE_INT2_MSK
|
AG903_BSC_PBINTMODE_INT3_MSK
)); 133:
return
; 134: } 135: 136: 137: 144:
void
AG903_BSCPrmSetIntPol
(uint8_t pol) 145: { 146:
AG903_BSC
->PBINTPOL = (uint32_t)(pol & (
AG903_BSC_PBINTPOL_INT0_MSK
|
AG903_BSC_PBINTPOL_INT1_MSK
| 147:
AG903_BSC_PBINTPOL_INT2_MSK
|
AG903_BSC_PBINTPOL_INT3_MSK
)); 148:
return
; 149: } 150: 151: 152: 159:
void
AG903_BSCPrmGetIntPol
(uint8_t* pol) 160: { 161:
ASSERT
(NULL != pol); 162: (*pol) = (uint32_t)(
AG903_BSC
->PBINTMODE & (
AG903_BSC_PBINTPOL_INT0_MSK
|
AG903_BSC_PBINTPOL_INT1_MSK
| 163:
AG903_BSC_PBINTPOL_INT2_MSK
|
AG903_BSC_PBINTPOL_INT3_MSK
)); 164:
return
; 165: } 166: 167: 168: 175:
void
AG903_BSCPrmSetIntClr
(uint8_t clr) 176: { 177:
AG903_BSC
->PBINTCLR = (uint32_t)(clr & (
AG903_BSC_PBINTCLR_INT0_MSK
|
AG903_BSC_PBINTCLR_INT1_MSK
| 178:
AG903_BSC_PBINTCLR_INT2_MSK
|
AG903_BSC_PBINTCLR_INT3_MSK
)); 179:
return
; 180: } 181: 182: 183: 190:
void
AG903_BSCPrmSetCfMode
(uint8_t mode) 191: { 192:
if
((
AG903_BSC_CFMODE_CF
==mode) || (
AG903_BSC_CFMODE_ATA
==mode)) { 193:
AG903_BSC
->CFMODE = mode; 194: } 195: 196:
return
; 197: } 198: 199: 200: 207:
void
AG903_BSCPrmGetCfMode
(uint8_t* mode) 208: { 209:
ASSERT
(NULL != mode); 210: 211: (*mode) = (uint8_t)(
AG903_BSC
->CFMODE &
AG903_BSC_CFMODE_MDCF_MSK
); 212: 213:
return
; 214: } 215: 216: 217: 225:
void
AG903_BSCPrmSetDmaPol
(uint8_t req, uint8_t ack) 226: { 227: uint32_t val = 0; 228: 229:
if
(
AG903_BSC_POL_POSITIVE
== req) { 230: val |= (req <<
AG903_BSC_PBDMAPOL_DRQ_POS
); 231: } 232:
if
(
AG903_BSC_POL_POSITIVE
== ack) { 233: val |= (ack <<
AG903_BSC_PBDMAPOL_DCK_POS
); 234: } 235:
AG903_BSC
->PBDMAPOL = val; 236: 237:
return
; 238: } 239: 240: 241: 249:
void
AG903_BSCPrmGetDmaPol
(uint8_t* req, uint8_t* ack) 250: { 251: uint32_t val; 252: 253:
ASSERT
(NULL != ack); 254:
ASSERT
(NULL != req); 255: 256: val =
AG903_BSC
->PBDMAPOL; 257:
if
(
AG903_BSC_PBDMAPOL_DRQ_MSK
& val) { 258: (*req) =
AG903_BSC_POL_POSITIVE
; 259: } 260:
else
{ 261: (*req) =
AG903_BSC_POL_NEGATIVE
; 262: } 263:
if
(
AG903_BSC_PBDMAPOL_DCK_MSK
& val) { 264: (*ack) =
AG903_BSC_POL_POSITIVE
; 265: } 266:
else
{ 267: (*ack) =
AG903_BSC_POL_NEGATIVE
; 268: } 269: 270:
return
; 271: } 272: 273: 274: 283:
void
AG903_BSCPrmSetCfpmCmd
(uint8_t slp, uint8_t act, uint8_t cmd) 284: { 285: uint32_t val = 0; 286: 287:
if
(
false
== slp) { 288: val |= (1 <<
AG903_BSC_CFPMCMD_SLP_POS
); 289: } 290: 291:
if
(
false
== act) { 292: val |= (1 <<
AG903_BSC_CFPMCMD_ACT_POS
); 293: } 294: 295: val |= (cmd <<
AG903_BSC_CFPMCMD_CMD_POS
) &
AG903_BSC_CFPMCMD_CMD_MSK
; 296: 297:
AG903_BSC
->CFPMCMD = val; 298: 299:
return
; 300: } 301: 302: 303: 311:
void
AG903_BSCPrmGetCfpmCmd
(uint8_t* slp, uint8_t* act) 312: { 313: uint32_t val; 314: 315:
ASSERT
(NULL != slp); 316:
ASSERT
(NULL != act); 317: 318: val =
AG903_BSC
->CFPMCMD; 319: 320:
if
(
AG903_BSC_CFPMCMD_SLP_MSK
& val) { 321: (*slp) =
false
; 322: } 323:
else
{ 324: (*slp) =
true
; 325: } 326: 327:
if
(
AG903_BSC_CFPMCMD_ACT_MSK
& val) { 328: (*act) =
false
; 329: } 330:
else
{ 331: (*act) =
true
; 332: } 333: 334:
return
; 335: } 336: 337: 338: 346:
void
AG903_BSCPrmGetCfpmStat
(uint8_t* cd, uint8_t* stat) 347: { 348: uint32_t val; 349: 350:
ASSERT
(NULL != cd); 351:
ASSERT
(NULL != stat); 352: 353: val =
AG903_BSC
->CFPMSTAT; 354: (*cd) = (uint8_t)((val &
AG903_BSC_CFPMSTAT_CD_MSK
) >>
AG903_BSC_CFPMSTAT_CD_POS
); 355: (*stat) = (uint8_t)((val &
AG903_BSC_CFPMSTAT_STAT_MSK
) >>
AG903_BSC_CFPMSTAT_STAT_POS
); 356: 357:
return
; 358: } 359: 360: 361: 368:
void
AG903_BSCPrmSetCfpmTon
(uint32_t cycle) 369: { 370:
AG903_BSC
->CFPMTON = cycle &
AG903_BSC_CFPMTON_CYCLE_MSK
; 371: 372:
return
; 373: } 374: 375: 376: 383:
void
AG903_BSCPrmGetCfpmTon
(uint32_t* cycle) 384: { 385:
ASSERT
(NULL != cycle); 386: 387: (*cycle) =
AG903_BSC
->CFPMTON &
AG903_BSC_CFPMTON_CYCLE_MSK
; 388: 389:
return
; 390: } 391: 392: 393: 400:
void
AG903_BSCPrmSetCfpmTr0
(uint32_t cycle) 401: { 402:
AG903_BSC
->CFPMTR0 = cycle &
AG903_BSC_CFPMTR0_CYCLE_MSK
; 403: 404:
return
; 405: } 406: 407: 408: 415:
void
AG903_BSCPrmGetCfpmTr0
(uint32_t* cycle) 416: { 417:
ASSERT
(NULL != cycle); 418: 419: (*cycle) =
AG903_BSC
->CFPMTR0 &
AG903_BSC_CFPMTR0_CYCLE_MSK
; 420: 421:
return
; 422: } 423: 424: 425: 432:
void
AG903_BSCPrmSetCfpmTr1
(uint32_t cycle) 433: { 434:
AG903_BSC
->CFPMTR1 = cycle &
AG903_BSC_CFPMTR1_CYCLE_MSK
; 435: 436:
return
; 437: } 438: 439: 440: 447:
void
AG903_BSCPrmGetCfpmTr1
(uint32_t* cycle) 448: { 449:
ASSERT
(NULL != cycle); 450: 451: (*cycle) =
AG903_BSC
->CFPMTR1 &
AG903_BSC_CFPMTR1_CYCLE_MSK
; 452: 453:
return
; 454: } 455: 456: 457: 464:
void
AG903_BSCPrmSetCfpmTr2
(uint32_t cycle) 465: { 466:
AG903_BSC
->CFPMTR2 = cycle &
AG903_BSC_CFPMTR2_CYCLE_MSK
; 467: 468:
return
; 469: } 470: 471: 472: 479:
void
AG903_BSCPrmGetCfpmTr2
(uint32_t* cycle) 480: { 481:
ASSERT
(NULL != cycle); 482: 483: (*cycle) =
AG903_BSC
->CFPMTR2 &
AG903_BSC_CFPMTR2_CYCLE_MSK
; 484: 485:
return
; 486: } 487: 488: 489: 496:
void
AG903_BSCPrmSetCfpmTpr
(uint32_t cycle) 497: { 498:
AG903_BSC
->CFPMTPR = cycle &
AG903_BSC_CFPMTPR_CYCLE_MSK
; 499: 500:
return
; 501: } 502: 503: 504: 511:
void
AG903_BSCPrmGetCfpmTpr
(uint32_t* cycle) 512: { 513:
ASSERT
(NULL != cycle); 514: 515: (*cycle) =
AG903_BSC
->CFPMTPR &
AG903_BSC_CFPMTPR_CYCLE_MSK
; 516: 517:
return
; 518: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.
内容
|
インデックス
|
ホーム