Lines Matching full:interconnect

9 #include <linux/interconnect.h>
36 * struct ipa_interconnect - IPA interconnect information
37 * @path: Interconnect path
38 * @average_bandwidth: Average interconnect bandwidth (KB/second)
39 * @peak_bandwidth: Peak interconnect bandwidth (KB/second)
69 * @interconnect_count: Number of elements in interconnect[]
70 * @interconnect: Interconnect array
78 struct ipa_interconnect *interconnect; member
82 struct ipa_interconnect *interconnect, in ipa_interconnect_init_one() argument
91 dev_err_probe(dev, ret, "error getting %s interconnect\n", in ipa_interconnect_init_one()
97 interconnect->path = path; in ipa_interconnect_init_one()
98 interconnect->average_bandwidth = data->average_bandwidth; in ipa_interconnect_init_one()
99 interconnect->peak_bandwidth = data->peak_bandwidth; in ipa_interconnect_init_one()
104 static void ipa_interconnect_exit_one(struct ipa_interconnect *interconnect) in ipa_interconnect_exit_one() argument
106 icc_put(interconnect->path); in ipa_interconnect_exit_one()
107 memset(interconnect, 0, sizeof(*interconnect)); in ipa_interconnect_exit_one()
114 struct ipa_interconnect *interconnect; in ipa_interconnect_init() local
119 interconnect = kcalloc(count, sizeof(*interconnect), GFP_KERNEL); in ipa_interconnect_init()
120 if (!interconnect) in ipa_interconnect_init()
122 power->interconnect = interconnect; in ipa_interconnect_init()
125 ret = ipa_interconnect_init_one(dev, interconnect, data++); in ipa_interconnect_init()
128 interconnect++; in ipa_interconnect_init()
134 while (interconnect-- > power->interconnect) in ipa_interconnect_init()
135 ipa_interconnect_exit_one(interconnect); in ipa_interconnect_init()
136 kfree(power->interconnect); in ipa_interconnect_init()
137 power->interconnect = NULL; in ipa_interconnect_init()
145 struct ipa_interconnect *interconnect; in ipa_interconnect_exit() local
147 interconnect = power->interconnect + power->interconnect_count; in ipa_interconnect_exit()
148 while (interconnect-- > power->interconnect) in ipa_interconnect_exit()
149 ipa_interconnect_exit_one(interconnect); in ipa_interconnect_exit()
150 kfree(power->interconnect); in ipa_interconnect_exit()
151 power->interconnect = NULL; in ipa_interconnect_exit()
157 struct ipa_interconnect *interconnect; in ipa_interconnect_enable() local
162 interconnect = power->interconnect; in ipa_interconnect_enable()
164 ret = icc_set_bw(interconnect->path, in ipa_interconnect_enable()
165 interconnect->average_bandwidth, in ipa_interconnect_enable()
166 interconnect->peak_bandwidth); in ipa_interconnect_enable()
169 "error %d enabling %s interconnect\n", in ipa_interconnect_enable()
170 ret, icc_get_name(interconnect->path)); in ipa_interconnect_enable()
173 interconnect++; in ipa_interconnect_enable()
179 while (interconnect-- > power->interconnect) in ipa_interconnect_enable()
180 (void)icc_set_bw(interconnect->path, 0, 0); in ipa_interconnect_enable()
185 /* To disable an interconnect, we just its bandwidth to 0 */
188 struct ipa_interconnect *interconnect; in ipa_interconnect_disable() local
196 interconnect = power->interconnect + count; in ipa_interconnect_disable()
198 interconnect--; in ipa_interconnect_disable()
199 ret = icc_set_bw(interconnect->path, 0, 0); in ipa_interconnect_disable()
201 dev_err(dev, "error %d disabling %s interconnect\n", in ipa_interconnect_disable()
202 ret, icc_get_name(interconnect->path)); in ipa_interconnect_disable()