1*78ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 2*78ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 3*78ee8d1cSJulian Grajkowski #include "adf_cfg_instance.h" 4*78ee8d1cSJulian Grajkowski 5*78ee8d1cSJulian Grajkowski void crypto_instance_init(struct adf_cfg_instance * instance,struct adf_cfg_bundle * bundle)6*78ee8d1cSJulian Grajkowskicrypto_instance_init(struct adf_cfg_instance *instance, 7*78ee8d1cSJulian Grajkowski struct adf_cfg_bundle *bundle) 8*78ee8d1cSJulian Grajkowski { 9*78ee8d1cSJulian Grajkowski int i = 0; 10*78ee8d1cSJulian Grajkowski 11*78ee8d1cSJulian Grajkowski instance->stype = CRYPTO; 12*78ee8d1cSJulian Grajkowski for (i = 0; i < bundle->num_of_rings / 2; i++) { 13*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 14*78ee8d1cSJulian Grajkowski continue; 15*78ee8d1cSJulian Grajkowski 16*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_ASYM && 17*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == TX) { 18*78ee8d1cSJulian Grajkowski instance->asym_tx = bundle->rings[i]->number; 19*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 20*78ee8d1cSJulian Grajkowski break; 21*78ee8d1cSJulian Grajkowski } 22*78ee8d1cSJulian Grajkowski } 23*78ee8d1cSJulian Grajkowski 24*78ee8d1cSJulian Grajkowski for (i = 0; i < bundle->num_of_rings / 2; i++) { 25*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 26*78ee8d1cSJulian Grajkowski continue; 27*78ee8d1cSJulian Grajkowski 28*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_SYM && 29*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == TX) { 30*78ee8d1cSJulian Grajkowski instance->sym_tx = bundle->rings[i]->number; 31*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 32*78ee8d1cSJulian Grajkowski break; 33*78ee8d1cSJulian Grajkowski } 34*78ee8d1cSJulian Grajkowski } 35*78ee8d1cSJulian Grajkowski 36*78ee8d1cSJulian Grajkowski for (i = bundle->num_of_rings / 2; i < bundle->num_of_rings; i++) { 37*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 38*78ee8d1cSJulian Grajkowski continue; 39*78ee8d1cSJulian Grajkowski 40*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_ASYM && 41*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == RX) { 42*78ee8d1cSJulian Grajkowski instance->asym_rx = bundle->rings[i]->number; 43*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 44*78ee8d1cSJulian Grajkowski break; 45*78ee8d1cSJulian Grajkowski } 46*78ee8d1cSJulian Grajkowski } 47*78ee8d1cSJulian Grajkowski 48*78ee8d1cSJulian Grajkowski for (i = bundle->num_of_rings / 2; i < bundle->num_of_rings; i++) { 49*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 50*78ee8d1cSJulian Grajkowski continue; 51*78ee8d1cSJulian Grajkowski 52*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_SYM && 53*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == RX) { 54*78ee8d1cSJulian Grajkowski instance->sym_rx = bundle->rings[i]->number; 55*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 56*78ee8d1cSJulian Grajkowski break; 57*78ee8d1cSJulian Grajkowski } 58*78ee8d1cSJulian Grajkowski } 59*78ee8d1cSJulian Grajkowski } 60*78ee8d1cSJulian Grajkowski 61*78ee8d1cSJulian Grajkowski void dc_instance_init(struct adf_cfg_instance * instance,struct adf_cfg_bundle * bundle)62*78ee8d1cSJulian Grajkowskidc_instance_init(struct adf_cfg_instance *instance, 63*78ee8d1cSJulian Grajkowski struct adf_cfg_bundle *bundle) 64*78ee8d1cSJulian Grajkowski { 65*78ee8d1cSJulian Grajkowski int i = 0; 66*78ee8d1cSJulian Grajkowski 67*78ee8d1cSJulian Grajkowski instance->stype = COMP; 68*78ee8d1cSJulian Grajkowski for (i = 0; i < bundle->num_of_rings / 2; i++) { 69*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 70*78ee8d1cSJulian Grajkowski continue; 71*78ee8d1cSJulian Grajkowski 72*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_DC && 73*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == TX) { 74*78ee8d1cSJulian Grajkowski instance->dc_tx = bundle->rings[i]->number; 75*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 76*78ee8d1cSJulian Grajkowski break; 77*78ee8d1cSJulian Grajkowski } 78*78ee8d1cSJulian Grajkowski } 79*78ee8d1cSJulian Grajkowski 80*78ee8d1cSJulian Grajkowski for (i = bundle->num_of_rings / 2; i < bundle->num_of_rings; i++) { 81*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 82*78ee8d1cSJulian Grajkowski continue; 83*78ee8d1cSJulian Grajkowski 84*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_DC && 85*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == RX) { 86*78ee8d1cSJulian Grajkowski instance->dc_rx = bundle->rings[i]->number; 87*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 88*78ee8d1cSJulian Grajkowski break; 89*78ee8d1cSJulian Grajkowski } 90*78ee8d1cSJulian Grajkowski } 91*78ee8d1cSJulian Grajkowski } 92*78ee8d1cSJulian Grajkowski 93*78ee8d1cSJulian Grajkowski void asym_instance_init(struct adf_cfg_instance * instance,struct adf_cfg_bundle * bundle)94*78ee8d1cSJulian Grajkowskiasym_instance_init(struct adf_cfg_instance *instance, 95*78ee8d1cSJulian Grajkowski struct adf_cfg_bundle *bundle) 96*78ee8d1cSJulian Grajkowski { 97*78ee8d1cSJulian Grajkowski int i = 0; 98*78ee8d1cSJulian Grajkowski 99*78ee8d1cSJulian Grajkowski instance->stype = ASYM; 100*78ee8d1cSJulian Grajkowski for (i = 0; i < bundle->num_of_rings / 2; i++) { 101*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 102*78ee8d1cSJulian Grajkowski continue; 103*78ee8d1cSJulian Grajkowski 104*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_ASYM && 105*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == TX) { 106*78ee8d1cSJulian Grajkowski instance->asym_tx = bundle->rings[i]->number; 107*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 108*78ee8d1cSJulian Grajkowski break; 109*78ee8d1cSJulian Grajkowski } 110*78ee8d1cSJulian Grajkowski } 111*78ee8d1cSJulian Grajkowski 112*78ee8d1cSJulian Grajkowski for (i = bundle->num_of_rings / 2; i < bundle->num_of_rings; i++) { 113*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 114*78ee8d1cSJulian Grajkowski continue; 115*78ee8d1cSJulian Grajkowski 116*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_ASYM && 117*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == RX) { 118*78ee8d1cSJulian Grajkowski instance->asym_rx = bundle->rings[i]->number; 119*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 120*78ee8d1cSJulian Grajkowski break; 121*78ee8d1cSJulian Grajkowski } 122*78ee8d1cSJulian Grajkowski } 123*78ee8d1cSJulian Grajkowski } 124*78ee8d1cSJulian Grajkowski 125*78ee8d1cSJulian Grajkowski void sym_instance_init(struct adf_cfg_instance * instance,struct adf_cfg_bundle * bundle)126*78ee8d1cSJulian Grajkowskisym_instance_init(struct adf_cfg_instance *instance, 127*78ee8d1cSJulian Grajkowski struct adf_cfg_bundle *bundle) 128*78ee8d1cSJulian Grajkowski { 129*78ee8d1cSJulian Grajkowski int i = 0; 130*78ee8d1cSJulian Grajkowski 131*78ee8d1cSJulian Grajkowski instance->stype = SYM; 132*78ee8d1cSJulian Grajkowski for (i = 0; i < bundle->num_of_rings / 2; i++) { 133*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 134*78ee8d1cSJulian Grajkowski continue; 135*78ee8d1cSJulian Grajkowski 136*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_SYM && 137*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == TX) { 138*78ee8d1cSJulian Grajkowski instance->sym_tx = bundle->rings[i]->number; 139*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 140*78ee8d1cSJulian Grajkowski break; 141*78ee8d1cSJulian Grajkowski } 142*78ee8d1cSJulian Grajkowski } 143*78ee8d1cSJulian Grajkowski 144*78ee8d1cSJulian Grajkowski for (i = 0 + bundle->num_of_rings / 2; i < bundle->num_of_rings; i++) { 145*78ee8d1cSJulian Grajkowski if ((bundle->in_use >> bundle->rings[i]->number) & 0x1) 146*78ee8d1cSJulian Grajkowski continue; 147*78ee8d1cSJulian Grajkowski 148*78ee8d1cSJulian Grajkowski if (bundle->rings[i]->serv_type == ADF_ACCEL_SERV_SYM && 149*78ee8d1cSJulian Grajkowski bundle->rings[i]->mode == RX) { 150*78ee8d1cSJulian Grajkowski instance->sym_rx = bundle->rings[i]->number; 151*78ee8d1cSJulian Grajkowski bundle->in_use |= 1 << bundle->rings[i]->number; 152*78ee8d1cSJulian Grajkowski break; 153*78ee8d1cSJulian Grajkowski } 154*78ee8d1cSJulian Grajkowski } 155*78ee8d1cSJulian Grajkowski } 156