When you need to interact with I2C peripherals from the Linux console, for example during hardware bringup phase, you can use command line utilities available in the i2c-tools package. This is much faster than making changes in Linux kernel drivers, as no recompilation, installation, or reboots are needed.

In my case, it was a camera device, and I had to make sure that the camera was available on the I2C bus.

First, make sure that the required I2C bus is enabled in the device tree.

Next, you can scan the bus for I2C devices:

sudo i2cdetect -y 2

Output will look like below, indicating addresses of detected devices:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

Next, you can interact with devices using the i2ctransfer utility. Below examples are for 16-bit address registers.

# Read 2 bytes from device 0x60 at offset 0x0102
i2ctransfer -y 2 w2@0x60 0x01 0x02 r2

# Write 1 byte to device with address 0x60 at offset 0x0102
sudo i2ctransfer -y 2 w3@0x60 0x01 0x02 0x03

In my case, I also had to perform a startup sequence for the device to appear on the bus by asserting a power-up pin via GPIO:

echo 18 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio18/direction
echo 1 > /sys/class/gpio/gpio18/value
sleep 1
sudo i2cdetect -y 2