Lines Matching defs:pl061

432 static int32_t Pl061GpioInitGroups(struct Pl061GpioData *pl061)
438 if (pl061 == NULL) {
442 groups = (struct Pl061GpioGroup *)OsalMemCalloc(sizeof(*groups) * pl061->groupNum);
446 pl061->groups = groups;
448 for (i = 0; i < pl061->groupNum; i++) {
450 groups[i].regBase = pl061->regBase + i * pl061->regStep;
451 groups[i].irq = pl061->irqStart + i;
452 groups[i].irqShare = pl061->irqShare;
453 groups[i].cntlr.start = i * pl061->bitNum;
454 groups[i].cntlr.count = pl061->bitNum;
456 groups[i].cntlr.ginfos = &pl061->gpioInfo[i * pl061->bitNum];
469 ret = GpioDumperCreate(&pl061->groups[i]);
483 pl061->groups = NULL;
488 static void Pl061GpioUninitGroups(struct Pl061GpioData *pl061)
493 for (i = 0; i < pl061->groupNum; i++) {
494 group = &pl061->groups[i];
495 GpioDumperDestroy(&pl061->groups[i]);
499 OsalMemFree(pl061->groups);
500 pl061->groups = NULL;
503 static int32_t Pl061GpioReadInfo(struct Pl061GpioData *pl061, const struct DeviceResourceNode *node,
519 ret = strcpy_s(pl061->gpioInfo[gpioIndex].name, GPIO_NAME_LEN, tempName);
530 static int32_t Pl061GpioReadDrs(struct Pl061GpioData *pl061, const struct DeviceResourceNode *node)
542 ret = drsOps->GetUint32(node, "regBase", &pl061->phyBase, 0);
548 ret = drsOps->GetUint32(node, "regStep", &pl061->regStep, 0);
554 ret = drsOps->GetUint16(node, "groupNum", &pl061->groupNum, 0);
560 ret = drsOps->GetUint16(node, "bitNum", &pl061->bitNum, 0);
566 ret = drsOps->GetUint32(node, "irqStart", &pl061->irqStart, 0);
572 ret = drsOps->GetUint8(node, "irqShare", &pl061->irqShare, 0);
578 ret = Pl061GpioReadInfo(pl061, node, drsOps);
587 static void Pl061GpioDebug(const struct Pl061GpioData *pl061)
593 HDF_LOGI("%s:groupNum:%hu, bitNum:%hu", __func__, pl061->groupNum, pl061->bitNum);
594 for (i = 0; i < pl061->groupNum; i++) {
595 group = &pl061->groups[i];
600 (void)pl061;
613 struct Pl061GpioData *pl061 = &g_pl061;
620 pl061->gpioInfo = OsalMemCalloc(sizeof(struct GpioInfo) * GPIO_MAX_INFO_NUM);
621 if (pl061->gpioInfo == NULL) {
626 ret = Pl061GpioReadDrs(pl061, device->property);
632 if (pl061->groupNum > PL061_GROUP_MAX || pl061->groupNum <= 0 ||
633 pl061->bitNum > PL061_BIT_MAX || pl061->bitNum <= 0) {
634 HDF_LOGE("%s: err groupNum:%hu, bitNum:%hu", __func__, pl061->groupNum, pl061->bitNum);
638 pl061->regBase = OsalIoRemap(pl061->phyBase, pl061->groupNum * pl061->regStep);
639 if (pl061->regBase == NULL) {
640 HDF_LOGE("%s: err remap phy:0x%x", __func__, pl061->phyBase);
644 ret = Pl061GpioInitGroups(pl061);
647 OsalIoUnmap((void *)pl061->regBase);
648 pl061->regBase = NULL;
651 pl061->priv = (void *)device->property;
652 device->priv = (void *)pl061;
653 Pl061GpioDebug(pl061);
656 if (GpioAddVfs(pl061->bitNum) != HDF_SUCCESS) {
666 struct Pl061GpioData *pl061 = NULL;
678 pl061 = (struct Pl061GpioData *)device->priv;
679 if (pl061 == NULL) {
684 Pl061GpioUninitGroups(pl061);
685 OsalMemFree(pl061->gpioInfo);
686 pl061->gpioInfo = NULL;
687 OsalIoUnmap((void *)pl061->regBase);
688 pl061->regBase = NULL;