Lines Matching +full:externally +full:- +full:enable
1 // SPDX-License-Identifier: GPL-2.0-only
3 * i2sbus driver -- bus control routines
24 return -ENOMEM; in i2sbus_control_init()
26 INIT_LIST_HEAD(&(*c)->list); in i2sbus_control_init()
28 (*c)->macio = dev->bus->chip; in i2sbus_control_init()
37 /* this is serialised externally */
43 np = i2sdev->sound.ofdev.dev.of_node; in i2sbus_control_add_dev()
44 i2sdev->enable = pmf_find_function(np, "enable"); in i2sbus_control_add_dev()
45 i2sdev->cell_enable = pmf_find_function(np, "cell-enable"); in i2sbus_control_add_dev()
46 i2sdev->clock_enable = pmf_find_function(np, "clock-enable"); in i2sbus_control_add_dev()
47 i2sdev->cell_disable = pmf_find_function(np, "cell-disable"); in i2sbus_control_add_dev()
48 i2sdev->clock_disable = pmf_find_function(np, "clock-disable"); in i2sbus_control_add_dev()
51 * the platform functions -- there's nothing in Darwin that in i2sbus_control_add_dev()
55 if (i2sdev->bus_number != 0 && i2sdev->bus_number != 1 && in i2sbus_control_add_dev()
56 (!i2sdev->enable || in i2sbus_control_add_dev()
57 !i2sdev->cell_enable || !i2sdev->clock_enable || in i2sbus_control_add_dev()
58 !i2sdev->cell_disable || !i2sdev->clock_disable)) { in i2sbus_control_add_dev()
59 pmf_put_function(i2sdev->enable); in i2sbus_control_add_dev()
60 pmf_put_function(i2sdev->cell_enable); in i2sbus_control_add_dev()
61 pmf_put_function(i2sdev->clock_enable); in i2sbus_control_add_dev()
62 pmf_put_function(i2sdev->cell_disable); in i2sbus_control_add_dev()
63 pmf_put_function(i2sdev->clock_disable); in i2sbus_control_add_dev()
64 return -ENODEV; in i2sbus_control_add_dev()
67 list_add(&i2sdev->item, &c->list); in i2sbus_control_add_dev()
75 /* this is serialised externally */ in i2sbus_control_remove_dev()
76 list_del(&i2sdev->item); in i2sbus_control_remove_dev()
77 if (list_empty(&c->list)) in i2sbus_control_remove_dev()
85 struct macio_chip *macio = c->macio; in i2sbus_control_enable()
87 if (i2sdev->enable) in i2sbus_control_enable()
88 return pmf_call_one(i2sdev->enable, &args); in i2sbus_control_enable()
90 if (macio == NULL || macio->base == NULL) in i2sbus_control_enable()
91 return -ENODEV; in i2sbus_control_enable()
93 switch (i2sdev->bus_number) { in i2sbus_control_enable()
103 return -ENODEV; in i2sbus_control_enable()
110 int enable) in i2sbus_control_cell() argument
113 struct macio_chip *macio = c->macio; in i2sbus_control_cell()
115 switch (enable) { in i2sbus_control_cell()
117 if (i2sdev->cell_disable) in i2sbus_control_cell()
118 return pmf_call_one(i2sdev->cell_disable, &args); in i2sbus_control_cell()
121 if (i2sdev->cell_enable) in i2sbus_control_cell()
122 return pmf_call_one(i2sdev->cell_enable, &args); in i2sbus_control_cell()
125 printk(KERN_ERR "i2sbus: INVALID CELL ENABLE VALUE\n"); in i2sbus_control_cell()
126 return -ENODEV; in i2sbus_control_cell()
129 if (macio == NULL || macio->base == NULL) in i2sbus_control_cell()
130 return -ENODEV; in i2sbus_control_cell()
132 switch (i2sdev->bus_number) { in i2sbus_control_cell()
134 if (enable) in i2sbus_control_cell()
140 if (enable) in i2sbus_control_cell()
146 return -ENODEV; in i2sbus_control_cell()
153 int enable) in i2sbus_control_clock() argument
156 struct macio_chip *macio = c->macio; in i2sbus_control_clock()
158 switch (enable) { in i2sbus_control_clock()
160 if (i2sdev->clock_disable) in i2sbus_control_clock()
161 return pmf_call_one(i2sdev->clock_disable, &args); in i2sbus_control_clock()
164 if (i2sdev->clock_enable) in i2sbus_control_clock()
165 return pmf_call_one(i2sdev->clock_enable, &args); in i2sbus_control_clock()
168 printk(KERN_ERR "i2sbus: INVALID CLOCK ENABLE VALUE\n"); in i2sbus_control_clock()
169 return -ENODEV; in i2sbus_control_clock()
172 if (macio == NULL || macio->base == NULL) in i2sbus_control_clock()
173 return -ENODEV; in i2sbus_control_clock()
175 switch (i2sdev->bus_number) { in i2sbus_control_clock()
177 if (enable) in i2sbus_control_clock()
183 if (enable) in i2sbus_control_clock()
189 return -ENODEV; in i2sbus_control_clock()