ip_hw_instance
struct ip_hw_instance *ip_hw_instance;
ip_hw_instance = kzalloc(struct_size(ip_hw_instance,
if (!ip_hw_instance) {
ip_hw_instance->hw_id = le16_to_cpu(ip->hw_id); /* == ii */
ip_hw_instance->num_instance = ip->instance_number;
ip_hw_instance->major = ip->major;
ip_hw_instance->minor = ip->minor;
ip_hw_instance->revision = ip->revision;
ip_hw_instance->harvest =
adev, ip_hw_instance->hw_id,
ip_hw_instance->num_instance);
ip_hw_instance->num_base_addresses = ip->num_base_address;
for (kk = 0; kk < ip_hw_instance->num_base_addresses; kk++) {
ip_hw_instance->base_addr[kk] =
ip_hw_instance->base_addr[kk] = ip->base_address[kk];
kobject_init(&ip_hw_instance->kobj, &ip_hw_instance_ktype);
ip_hw_instance->kobj.kset = &ip_hw_id->hw_id_kset;
res = kobject_add(&ip_hw_instance->kobj, NULL,
"%d", ip_hw_instance->num_instance);
ssize_t (*show)(struct ip_hw_instance *ip_hw_instance, char *buf);
static ssize_t hw_id_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->hw_id);
static ssize_t num_instance_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->num_instance);
static ssize_t major_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->major);
static ssize_t minor_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->minor);
static ssize_t revision_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->revision);
static ssize_t harvest_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "0x%01X\n", ip_hw_instance->harvest);
static ssize_t num_base_addresses_show(struct ip_hw_instance *ip_hw_instance, char *buf)
return sysfs_emit(buf, "%d\n", ip_hw_instance->num_base_addresses);
static ssize_t base_addr_show(struct ip_hw_instance *ip_hw_instance, char *buf)
for (res = at = ii = 0; ii < ip_hw_instance->num_base_addresses; ii++) {
ip_hw_instance->base_addr[ii]);
ATTRIBUTE_GROUPS(ip_hw_instance);
#define to_ip_hw_instance(x) container_of(x, struct ip_hw_instance, kobj)
struct ip_hw_instance *ip_hw_instance = to_ip_hw_instance(kobj);
return ip_hw_attr->show(ip_hw_instance, buf);
struct ip_hw_instance *ip_hw_instance = to_ip_hw_instance(kobj);
kfree(ip_hw_instance);