I would like to get some opinions on the following.

I'm working on extending our existing board definition files to support our
ePAPR reference hypervisor.  Because our hypervisor provides a virtual PIC, we
need to have different functions for define_machine() structure that related to
the PIC, but most everything else can stay the same.

define_machine(p4080_hv) {
        .name                   = "P4080DS HV",
        .probe                  = p4080hv_probe,
        .setup_arch             = corenet_ds_setup_arch,
        .init_IRQ               = fsl_hv_pic_init,
#ifdef CONFIG_PCI
        .pcibios_fixup_bus      = fsl_pcibios_fixup_bus,
#endif
        .get_irq                = ehv_pic_get_irq,
        .restart                = fsl_hv_restart,
        .power_off              = fsl_hv_halt,
        .halt                   = fsl_hv_halt,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = udbg_progress,
};

Rather than create two such structures for each board that can support the
hypervisor (one with HV support, one without), I would like to do the following
instead.  What do you all think?

define_machine(p4080_ds) {
        .name                   = "P4080 DS",
        .probe                  = p4080_ds_probe,
        ...
        .get_irq                = mpic_get_coreint_irq,
};

static int __init p4080_ds_probe(void)
{
        ...
#ifdef CONFIG_FSL_HYPERVISOR
        if (of_flat_dt_is_compatible(root, "fsl,P4080DS-hv")) {
                mach_p4080_ds.get_irq = ehv_pic_get_irq;
                ...
                return 1;
        } else
                return 0;
#endif  


-- 
Timur Tabi
Linux kernel developer at Freescale

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to