Before any match can occur, Linux calls platform_match(struct device *dev, struct device_driver *drv). Platform devices are matched with their drivers by means of strings. According to the Linux device model, the bus element is the most important part. Each bus maintains a list of drivers and devices that are registered with it. The bus driver is responsible for devices and drivers matching. Any time you connects a new device or adds a new driver to a bus, that bus starts the matching loop.
Now, suppose that you register a new I2C device using functions provided by the I2C core (discussed in next chapter). The kernel will trigger the I2C bus matching loop, by calling the I2C core match function registered with the I2C bus driver to check whether there is already a registered driver that matches with your device. If there is no match, nothing...