Skip to content

Commit

Permalink
drivers/i2c/tas5825m: Use I2C instead of SMBus
Browse files Browse the repository at this point in the history
The latest Clevo boards connect the TAS5825M to one of the I2C
connections instead of the SMBus connection. The I2C ops are compatible
with SMBus, so always use them.

Change-Id: I5152db647094acf473cc798970dd9d97543df4d7
Signed-off-by: Tim Crawford <tcrawford@system76.com>
  • Loading branch information
crawfxrd authored and jackpot51 committed Mar 7, 2024
1 parent f3ecbae commit b37a24f
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/drivers/i2c/tas5825m/tas5825m.c
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
/* SPDX-License-Identifier: GPL-2.0-only */

#include <console/console.h>
#include <device/smbus.h>
#include <device/pci.h>
#include <device/i2c_bus.h>
#include "chip.h"
#include "tas5825m.h"

int tas5825m_write_at(struct device *dev, uint8_t addr, uint8_t value)
{
return smbus_write_byte(dev, addr, value);
return i2c_dev_writeb_at(dev, addr, value);
}

//TODO: use I2C block write for better performance
int tas5825m_write_block_at(struct device *dev, uint8_t addr,
const uint8_t *values, uint8_t length)
{
// TODO: use I2C block write for better performance; SMBus does not
// have `transfer` op for it.

int res = 0;
for (uint8_t i = 0; i < length; i++) {
res = smbus_write_byte(dev, addr + i, values[i]);
res = i2c_dev_writeb_at(dev, addr + i, values[i]);
if (res < 0)
return res;
}
Expand Down Expand Up @@ -45,8 +46,7 @@ __weak int tas5825m_setup(struct device *dev, int id)

static void tas5825m_init(struct device *dev)
{
if (dev->enabled && dev->path.type == DEVICE_PATH_I2C &&
ops_smbus_bus(get_pbus_smbus(dev))) {
if (dev->enabled && dev->path.type == DEVICE_PATH_I2C && i2c_link(dev)) {
printk(BIOS_DEBUG, "tas5825m at %s\n", dev_path(dev));

struct drivers_i2c_tas5825m_config *config = dev->chip_info;
Expand Down

0 comments on commit b37a24f

Please sign in to comment.