On 07/18/2018 08:12 AM, David Gibson wrote:
>> +static void pnv_phb3_get_phb_id(Object *obj, Visitor *v, const char *name,
>> + void *opaque, Error **errp)
>> +{
>> + Property *prop = opaque;
>> + uint32_t *ptr = qdev_get_prop_ptr(DEVICE(obj), prop);
>> +
>> + visit_type_uint32(v, name, ptr, errp);
>> +}
>> +
>> +static void pnv_phb3_set_phb_id(Object *obj, Visitor *v, const char *name,
>> + void *opaque, Error **errp)
>> +{
>> + PnvPHB3 *phb = PNV_PHB3(obj);
>> + uint32_t phb_id;
>> + Error *local_err = NULL;
>> +
>> + visit_type_uint32(v, name, &phb_id, &local_err);
>> + if (local_err) {
>> + error_propagate(errp, local_err);
>> + return;
>> + }
>> +
>> + /*
>> + * Limit to a maximum of 6 PHBs per chip
>> + */
>> + if (phb_id >= PNV8_CHIP_PHB3_MAX) {
>> + error_setg(errp, "invalid PHB index: '%d'", phb_id);
>> + return;
>> + }
>> +
>> + phb->phb_id = phb_id;
>> +}
>> +
>> +static const PropertyInfo pnv_phb3_phb_id_propinfo = {
>> + .name = "irq",
>> + .get = pnv_phb3_get_phb_id,
>> + .set = pnv_phb3_set_phb_id,
>> +};
> Can't you use a static DeviceProps style property for this, which is a
> bit simpler?
yes but we will need these ops for user creatable devices. This is where
we will check the chip id.
C.