Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ixl/ixl_pf_main.c
Show First 20 Lines • Show All 5,168 Lines • ▼ Show 20 Lines | #if __FreeBSD_version >= 1003000 | ||||
{ | { | ||||
struct ifi2creq i2c; | struct ifi2creq i2c; | ||||
int i; | int i; | ||||
IOCTL_DEBUGOUT("ioctl: SIOCGI2C (Get I2C Data)"); | IOCTL_DEBUGOUT("ioctl: SIOCGI2C (Get I2C Data)"); | ||||
if (!pf->has_i2c) | if (!pf->has_i2c) | ||||
return (ENOTTY); | return (ENOTTY); | ||||
error = copyin(ifr->ifr_data, &i2c, sizeof(i2c)); | error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c)); | ||||
if (error != 0) | if (error != 0) | ||||
break; | break; | ||||
if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) { | if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) { | ||||
error = EINVAL; | error = EINVAL; | ||||
break; | break; | ||||
} | } | ||||
if (i2c.len > sizeof(i2c.data)) { | if (i2c.len > sizeof(i2c.data)) { | ||||
error = EINVAL; | error = EINVAL; | ||||
break; | break; | ||||
} | } | ||||
for (i = 0; i < i2c.len; i++) | for (i = 0; i < i2c.len; i++) | ||||
if (ixl_read_i2c_byte(pf, i2c.offset + i, | if (ixl_read_i2c_byte(pf, i2c.offset + i, | ||||
i2c.dev_addr, &i2c.data[i])) | i2c.dev_addr, &i2c.data[i])) | ||||
return (EIO); | return (EIO); | ||||
error = copyout(&i2c, ifr->ifr_data, sizeof(i2c)); | error = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c)); | ||||
break; | break; | ||||
} | } | ||||
#endif | #endif | ||||
default: | default: | ||||
IOCTL_DEBUGOUT("ioctl: UNKNOWN (0x%X)\n", (int)command); | IOCTL_DEBUGOUT("ioctl: UNKNOWN (0x%X)\n", (int)command); | ||||
error = ether_ioctl(ifp, command, data); | error = ether_ioctl(ifp, command, data); | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 888 Lines • Show Last 20 Lines |