Lines Matching refs:fw

39 	struct rpi_firmware *fw = container_of(cl, struct rpi_firmware, cl);  in response_callback()  local
40 complete(&fw->c); in response_callback()
48 rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data) in rpi_firmware_transaction() argument
56 reinit_completion(&fw->c); in rpi_firmware_transaction()
57 ret = mbox_send_message(fw->chan, &message); in rpi_firmware_transaction()
59 wait_for_completion(&fw->c); in rpi_firmware_transaction()
62 dev_err(fw->cl.dev, "mbox_send_message returned %d\n", ret); in rpi_firmware_transaction()
83 int rpi_firmware_property_list(struct rpi_firmware *fw, in rpi_firmware_property_list() argument
95 buf = dma_alloc_coherent(fw->cl.dev, PAGE_ALIGN(size), &bus_addr, in rpi_firmware_property_list()
109 ret = rpi_firmware_transaction(fw, MBOX_CHAN_PROPERTY, bus_addr); in rpi_firmware_property_list()
119 dev_err(fw->cl.dev, "Request 0x%08x returned status 0x%08x\n", in rpi_firmware_property_list()
124 dma_free_coherent(fw->cl.dev, PAGE_ALIGN(size), buf, bus_addr); in rpi_firmware_property_list()
144 int rpi_firmware_property(struct rpi_firmware *fw, in rpi_firmware_property() argument
165 ret = rpi_firmware_property_list(fw, &data, buf_size + sizeof(*header)); in rpi_firmware_property()
175 rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) in rpi_firmware_print_firmware_revision() argument
178 int ret = rpi_firmware_property(fw, in rpi_firmware_print_firmware_revision()
187 dev_info(fw->cl.dev, in rpi_firmware_print_firmware_revision()
195 rpi_register_hwmon_driver(struct device *dev, struct rpi_firmware *fw) in rpi_register_hwmon_driver() argument
198 int ret = rpi_firmware_property(fw, RPI_FIRMWARE_GET_THROTTLED, in rpi_register_hwmon_driver()
211 struct rpi_firmware *fw; in rpi_firmware_probe() local
213 fw = devm_kzalloc(dev, sizeof(*fw), GFP_KERNEL); in rpi_firmware_probe()
214 if (!fw) in rpi_firmware_probe()
217 fw->cl.dev = dev; in rpi_firmware_probe()
218 fw->cl.rx_callback = response_callback; in rpi_firmware_probe()
219 fw->cl.tx_block = true; in rpi_firmware_probe()
221 fw->chan = mbox_request_channel(&fw->cl, 0); in rpi_firmware_probe()
222 if (IS_ERR(fw->chan)) { in rpi_firmware_probe()
223 int ret = PTR_ERR(fw->chan); in rpi_firmware_probe()
229 init_completion(&fw->c); in rpi_firmware_probe()
231 platform_set_drvdata(pdev, fw); in rpi_firmware_probe()
233 rpi_firmware_print_firmware_revision(fw); in rpi_firmware_probe()
234 rpi_register_hwmon_driver(dev, fw); in rpi_firmware_probe()
241 struct rpi_firmware *fw = platform_get_drvdata(pdev); in rpi_firmware_remove() local
245 mbox_free_channel(fw->chan); in rpi_firmware_remove()