On 2022/3/23 04:49, Rob Herring wrote:
+/*
- mainly for dc in ls7a1000 which have builtin gpio emulated i2c
- @index : output channel index, 0 for DVO0, 1 for DVO1
- */
+struct lsdc_i2c *lsdc_create_i2c_chan(struct device *dev, void *base, unsigned int index) +{
- char compat[32] = {0};
- unsigned int udelay = 5;
- unsigned int timeout = 2200;
- int nr = -1;
- struct i2c_adapter *adapter;
- struct lsdc_i2c *li2c;
- struct device_node *i2c_np;
- int ret;
- li2c = devm_kzalloc(dev, sizeof(*li2c), GFP_KERNEL);
- if (!li2c)
return ERR_PTR(-ENOMEM);
- li2c->index = index;
- li2c->dev = dev;
- if (index == 0) {
li2c->sda = 0x01;
li2c->scl = 0x02;
- } else if (index == 1) {
li2c->sda = 0x04;
li2c->scl = 0x08;
Just require this to be in DT rather than having some default.
By design, I am try very hard to let the code NOT fully DT dependent. DT is nice , easy to learn and use. But kernel side developer plan to follow UEFI + ACPI Specification on LS3A5000 + LS7A1000 platform. See [1] There will no DT support then, provide a convention support make the driver more flexible. I want the driver works with minimal requirement. The driver just works on simple boards by put the following dc device node in arch/mips/dts/loongson/loongson64g_4core_ls7a.dts,
lsdc: display-controller@6,1 { compatible = "loongson,ls7a1000-dc";
reg = <0x3100 0x0 0x0 0x0 0x0>; interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&pic>; };
[1] https://lwn.net/Articles/869541/#:~:text=LoongArch%20is%20a%20new%20RISC%20I....