Lines Matching +full:clock +full:- +full:name
1 // SPDX-License-Identifier: GPL-2.0
3 #include <linux/clk-provider.h>
9 #include <dt-bindings/clock/bcm3368-clock.h>
10 #include <dt-bindings/clock/bcm6318-clock.h>
11 #include <dt-bindings/clock/bcm6328-clock.h>
12 #include <dt-bindings/clock/bcm6358-clock.h>
13 #include <dt-bindings/clock/bcm6362-clock.h>
14 #include <dt-bindings/clock/bcm6368-clock.h>
15 #include <dt-bindings/clock/bcm63268-clock.h>
18 const char * const name; member
32 .name = "mac",
35 .name = "tc",
38 .name = "us_top",
41 .name = "ds_top",
44 .name = "acm",
47 .name = "spi",
50 .name = "usbs",
53 .name = "bmu",
56 .name = "pcm",
59 .name = "ntp",
62 .name = "acp_b",
65 .name = "acp_a",
68 .name = "emusb",
71 .name = "enet0",
74 .name = "enet1",
77 .name = "usbsu",
80 .name = "ephy",
89 .name = "adsl_asb",
92 .name = "usb_asb",
95 .name = "mips_asb",
98 .name = "pcie_asb",
101 .name = "phymips_asb",
104 .name = "robosw_asb",
107 .name = "sar_asb",
110 .name = "sdr_asb",
113 .name = "swreg_asb",
116 .name = "periph_asb",
119 .name = "cpubus160",
122 .name = "adsl",
125 .name = "sar125",
128 .name = "mips",
132 .name = "pcie",
135 .name = "robosw250",
138 .name = "robosw025",
141 .name = "sdr",
145 .name = "usbd",
148 .name = "hsspi",
151 .name = "pcie25",
154 .name = "phymips",
157 .name = "afe",
160 .name = "qproc",
169 .name = "adsl-ubus",
172 .name = "arb-ubus",
176 .name = "mips-ubus",
180 .name = "pcie-ubus",
183 .name = "periph-ubus",
187 .name = "phymips-ubus",
190 .name = "robosw-ubus",
193 .name = "sar-ubus",
196 .name = "sdr-ubus",
199 .name = "usb-ubus",
208 .name = "phy_mips",
211 .name = "adsl_qproc",
214 .name = "adsl_afe",
217 .name = "adsl",
220 .name = "mips",
224 .name = "sar",
227 .name = "pcm",
230 .name = "usbd",
233 .name = "usbh",
236 .name = "hsspi",
239 .name = "pcie",
242 .name = "robosw",
251 .name = "enet",
254 .name = "adslphy",
257 .name = "pcm",
260 .name = "spi",
263 .name = "usbs",
266 .name = "sar",
269 .name = "emusb",
272 .name = "enet0",
275 .name = "enet1",
278 .name = "usbsu",
281 .name = "ephy",
290 .name = "adsl_qproc",
293 .name = "adsl_afe",
296 .name = "adsl",
299 .name = "mips",
303 .name = "wlan_ocp",
306 .name = "swpkt_usb",
309 .name = "swpkt_sar",
312 .name = "sar",
315 .name = "robosw",
318 .name = "pcm",
321 .name = "usbd",
324 .name = "usbh",
327 .name = "ipsec",
330 .name = "spi",
333 .name = "hsspi",
336 .name = "pcie",
339 .name = "fap",
342 .name = "phymips",
345 .name = "nand",
354 .name = "vdsl_qproc",
357 .name = "vdsl_afe",
360 .name = "vdsl_bonding",
363 .name = "vdsl",
366 .name = "phymips",
369 .name = "swpkt_usb",
372 .name = "swpkt_sar",
375 .name = "spi",
378 .name = "usbd",
381 .name = "sar",
384 .name = "robosw",
387 .name = "utopia",
390 .name = "pcm",
393 .name = "usbh",
396 .name = "disable_gless",
399 .name = "nand",
402 .name = "ipsec",
411 .name = "disable_gless",
414 .name = "vdsl_qproc",
417 .name = "vdsl_afe",
420 .name = "vdsl",
423 .name = "mips",
427 .name = "wlan_ocp",
430 .name = "dect",
433 .name = "fap0",
436 .name = "fap1",
439 .name = "sar",
442 .name = "robosw",
445 .name = "pcm",
448 .name = "usbd",
451 .name = "usbh",
454 .name = "ipsec",
457 .name = "spi",
460 .name = "hsspi",
463 .name = "pcie",
466 .name = "phymips",
469 .name = "gmac",
472 .name = "nand",
475 .name = "tbus",
478 .name = "robosw250",
492 table = of_device_get_match_data(&pdev->dev); in clk_bcm63xx_probe()
494 return -EINVAL; in clk_bcm63xx_probe()
496 for (entry = table; entry->name; entry++) in clk_bcm63xx_probe()
497 maxbit = max_t(u8, maxbit, entry->bit); in clk_bcm63xx_probe()
500 hw = devm_kzalloc(&pdev->dev, struct_size(hw, data.hws, maxbit), in clk_bcm63xx_probe()
503 return -ENOMEM; in clk_bcm63xx_probe()
507 spin_lock_init(&hw->lock); in clk_bcm63xx_probe()
509 hw->data.num = maxbit; in clk_bcm63xx_probe()
511 hw->data.hws[i] = ERR_PTR(-ENODEV); in clk_bcm63xx_probe()
513 hw->regs = devm_platform_ioremap_resource(pdev, 0); in clk_bcm63xx_probe()
514 if (IS_ERR(hw->regs)) in clk_bcm63xx_probe()
515 return PTR_ERR(hw->regs); in clk_bcm63xx_probe()
517 for (entry = table; entry->name; entry++) { in clk_bcm63xx_probe()
520 clk = clk_hw_register_gate(&pdev->dev, entry->name, NULL, in clk_bcm63xx_probe()
521 entry->flags, hw->regs, entry->bit, in clk_bcm63xx_probe()
522 CLK_GATE_BIG_ENDIAN, &hw->lock); in clk_bcm63xx_probe()
528 hw->data.hws[entry->bit] = clk; in clk_bcm63xx_probe()
531 ret = of_clk_add_hw_provider(pdev->dev.of_node, of_clk_hw_onecell_get, in clk_bcm63xx_probe()
532 &hw->data); in clk_bcm63xx_probe()
536 for (i = 0; i < hw->data.num; i++) { in clk_bcm63xx_probe()
537 if (!IS_ERR(hw->data.hws[i])) in clk_bcm63xx_probe()
538 clk_hw_unregister_gate(hw->data.hws[i]); in clk_bcm63xx_probe()
549 of_clk_del_provider(pdev->dev.of_node); in clk_bcm63xx_remove()
551 for (i = 0; i < hw->data.num; i++) { in clk_bcm63xx_remove()
552 if (!IS_ERR(hw->data.hws[i])) in clk_bcm63xx_remove()
553 clk_hw_unregister_gate(hw->data.hws[i]); in clk_bcm63xx_remove()
560 { .compatible = "brcm,bcm3368-clocks", .data = &bcm3368_clocks, },
561 { .compatible = "brcm,bcm6318-clocks", .data = &bcm6318_clocks, },
562 { .compatible = "brcm,bcm6318-ubus-clocks", .data = &bcm6318_ubus_clocks, },
563 { .compatible = "brcm,bcm6328-clocks", .data = &bcm6328_clocks, },
564 { .compatible = "brcm,bcm6358-clocks", .data = &bcm6358_clocks, },
565 { .compatible = "brcm,bcm6362-clocks", .data = &bcm6362_clocks, },
566 { .compatible = "brcm,bcm6368-clocks", .data = &bcm6368_clocks, },
567 { .compatible = "brcm,bcm63268-clocks", .data = &bcm63268_clocks, },
575 .name = "bcm63xx-clock",