aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/opal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/powernv/opal.c')
-rw-r--r--arch/powerpc/platforms/powernv/opal.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 3fb981c0ca80..2241565b0739 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -693,6 +693,15 @@ static void __init opal_dump_region_init(void)
693 "rc = %d\n", rc); 693 "rc = %d\n", rc);
694} 694}
695 695
696static void opal_flash_init(struct device_node *opal_node)
697{
698 struct device_node *np;
699
700 for_each_child_of_node(opal_node, np)
701 if (of_device_is_compatible(np, "ibm,opal-flash"))
702 of_platform_device_create(np, NULL, NULL);
703}
704
696static void opal_ipmi_init(struct device_node *opal_node) 705static void opal_ipmi_init(struct device_node *opal_node)
697{ 706{
698 struct device_node *np; 707 struct device_node *np;
@@ -817,7 +826,7 @@ static int __init opal_init(void)
817 /* Setup error log interface */ 826 /* Setup error log interface */
818 rc = opal_elog_init(); 827 rc = opal_elog_init();
819 /* Setup code update interface */ 828 /* Setup code update interface */
820 opal_flash_init(); 829 opal_flash_update_init();
821 /* Setup platform dump extract interface */ 830 /* Setup platform dump extract interface */
822 opal_platform_dump_init(); 831 opal_platform_dump_init();
823 /* Setup system parameters interface */ 832 /* Setup system parameters interface */
@@ -829,6 +838,8 @@ static int __init opal_init(void)
829 /* Initialize OPAL IPMI backend */ 838 /* Initialize OPAL IPMI backend */
830 opal_ipmi_init(opal_node); 839 opal_ipmi_init(opal_node);
831 840
841 opal_flash_init(opal_node);
842
832 return 0; 843 return 0;
833} 844}
834machine_subsys_initcall(powernv, opal_init); 845machine_subsys_initcall(powernv, opal_init);
@@ -867,6 +878,9 @@ void opal_shutdown(void)
867EXPORT_SYMBOL_GPL(opal_invalid_call); 878EXPORT_SYMBOL_GPL(opal_invalid_call);
868EXPORT_SYMBOL_GPL(opal_ipmi_send); 879EXPORT_SYMBOL_GPL(opal_ipmi_send);
869EXPORT_SYMBOL_GPL(opal_ipmi_recv); 880EXPORT_SYMBOL_GPL(opal_ipmi_recv);
881EXPORT_SYMBOL_GPL(opal_flash_read);
882EXPORT_SYMBOL_GPL(opal_flash_write);
883EXPORT_SYMBOL_GPL(opal_flash_erase);
870 884
871/* Convert a region of vmalloc memory to an opal sg list */ 885/* Convert a region of vmalloc memory to an opal sg list */
872struct opal_sg_list *opal_vmalloc_to_sg_list(void *vmalloc_addr, 886struct opal_sg_list *opal_vmalloc_to_sg_list(void *vmalloc_addr,