Blame view

drivers/qe/fdt.c 1.69 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  // SPDX-License-Identifier: GPL-2.0+
69018ce2e   Kumar Gala   QE: Move FDT supp...
2
3
4
5
6
  /*
   * Copyright 2008 Freescale Semiconductor, Inc.
   *
   * (C) Copyright 2000
   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
69018ce2e   Kumar Gala   QE: Move FDT supp...
7
8
9
   */
  
  #include <common.h>
b08c8c487   Masahiro Yamada   libfdt: move head...
10
  #include <linux/libfdt.h>
69018ce2e   Kumar Gala   QE: Move FDT supp...
11
  #include <fdt_support.h>
2459afb1a   Qianyu Gong   qe: move drivers/...
12
  #include <fsl_qe.h>
69018ce2e   Kumar Gala   QE: Move FDT supp...
13

93d332041   Zhao Qiang   qe: add u-qe supp...
14
  #ifdef CONFIG_QE
69018ce2e   Kumar Gala   QE: Move FDT supp...
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  DECLARE_GLOBAL_DATA_PTR;
  
  /*
   * If a QE firmware has been uploaded, then add the 'firmware' node under
   * the 'qe' node.
   */
  void fdt_fixup_qe_firmware(void *blob)
  {
  	struct qe_firmware_info *qe_fw_info;
  	int node, ret;
  
  	qe_fw_info = qe_get_firmware_info();
  	if (!qe_fw_info)
  		return;
  
  	node = fdt_path_offset(blob, "/qe");
  	if (node < 0)
  		return;
  
  	/* We assume the node doesn't exist yet */
  	node = fdt_add_subnode(blob, node, "firmware");
  	if (node < 0)
  		return;
  
  	ret = fdt_setprop(blob, node, "extended-modes",
  		&qe_fw_info->extended_modes, sizeof(u64));
  	if (ret < 0)
  		goto error;
  
  	ret = fdt_setprop_string(blob, node, "id", qe_fw_info->id);
  	if (ret < 0)
  		goto error;
  
  	ret = fdt_setprop(blob, node, "virtual-traps", qe_fw_info->vtraps,
  		sizeof(qe_fw_info->vtraps));
  	if (ret < 0)
  		goto error;
  
  	return;
  
  error:
  	fdt_del_node(blob, node);
  }
  
  void ft_qe_setup(void *blob)
  {
69018ce2e   Kumar Gala   QE: Move FDT supp...
61
  	do_fixup_by_prop_u32(blob, "device_type", "qe", 4,
45bae2e3c   Simon Glass   ppc: Move CONFIG_...
62
  		"bus-frequency", gd->arch.qe_clk, 1);
69018ce2e   Kumar Gala   QE: Move FDT supp...
63
  	do_fixup_by_prop_u32(blob, "device_type", "qe", 4,
1206c1840   Simon Glass   ppc: Move brg_clk...
64
  		"brg-frequency", gd->arch.brg_clk, 1);
69018ce2e   Kumar Gala   QE: Move FDT supp...
65
  	do_fixup_by_compat_u32(blob, "fsl,qe",
45bae2e3c   Simon Glass   ppc: Move CONFIG_...
66
  		"clock-frequency", gd->arch.qe_clk, 1);
69018ce2e   Kumar Gala   QE: Move FDT supp...
67
  	do_fixup_by_compat_u32(blob, "fsl,qe",
45bae2e3c   Simon Glass   ppc: Move CONFIG_...
68
  		"bus-frequency", gd->arch.qe_clk, 1);
69018ce2e   Kumar Gala   QE: Move FDT supp...
69
  	do_fixup_by_compat_u32(blob, "fsl,qe",
1206c1840   Simon Glass   ppc: Move brg_clk...
70
  		"brg-frequency", gd->arch.brg_clk, 1);
3fca80375   Anton Vorontsov   mpc85xx: Configur...
71
  	do_fixup_by_compat_u32(blob, "fsl,qe-gtm",
45bae2e3c   Simon Glass   ppc: Move CONFIG_...
72
  		"clock-frequency", gd->arch.qe_clk / 2, 1);
69018ce2e   Kumar Gala   QE: Move FDT supp...
73
  	fdt_fixup_qe_firmware(blob);
69018ce2e   Kumar Gala   QE: Move FDT supp...
74
  }
93d332041   Zhao Qiang   qe: add u-qe supp...
75
  #endif