AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
bscprm.c

BSC Primitive

Bus State Control Primitive.

none

AXELL CORPORATION

2017_10_26 初版 Ver2.0

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: }
 
名前 
説明 
 
BSCCFMODEのレジスタRead 
 
BSCCFPMCMDのレジスタRead 
 
BSCCFPMSTATのレジスタRead 
 
BSCCFPMTONのレジスタRead 
 
BSCCFPMTPRのレジスタRead 
 
BSCCFPMTR0のレジスタRead 
 
BSCCFPMTR1のレジスタRead 
 
BSCCFPMTR2のレジスタRead 
 
BSCPBDMAPOLのレジスタRead 
 
BSCPBINTMASKのレジスタRead 
 
BSCPBINTMODEのレジスタRead 
 
BSCPBINTPOLのレジスタRead 
 
BSCPBSTATのレジスタRead 
 
BSCCFMODEのレジスタWrite 
 
BSCCFPMCMDのレジスタWrite 
 
BSCCFPMTONのレジスタWrite 
 
BSCCFPMTPRのレジスタWrite 
 
BSCCFPMTR0のレジスタWrite 
 
BSCCFPMTR1のレジスタWrite 
 
BSCCFPMTR2のレジスタWrite 
 
BSCPBDMAPOLのレジスタWrite 
 
BSCPBINTCLRのレジスタWrite 
 
BSCPBINTMASKのレジスタWrite 
 
BSCPBINTMODEのレジスタWrite 
 
BSCPBINTPOLのレジスタWrite 
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.