Blame view
drivers/pwm/sandbox_pwm.c
1.8 KB
43b41566f dm: sandbox: pwm:... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/* * Copyright (c) 2015 Google, Inc * Written by Simon Glass <sjg@chromium.org> * * SPDX-License-Identifier: GPL-2.0+ */ #include <common.h> #include <dm.h> #include <errno.h> #include <pwm.h> #include <asm/test.h> DECLARE_GLOBAL_DATA_PTR; enum { NUM_CHANNELS = 3, }; struct sandbox_pwm_chan { uint period_ns; uint duty_ns; bool enable; |
5540e25ae dm: sandbox: pwm:... |
24 |
bool polarity; |
43b41566f dm: sandbox: pwm:... |
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
}; struct sandbox_pwm_priv { struct sandbox_pwm_chan chan[NUM_CHANNELS]; }; static int sandbox_pwm_set_config(struct udevice *dev, uint channel, uint period_ns, uint duty_ns) { struct sandbox_pwm_priv *priv = dev_get_priv(dev); struct sandbox_pwm_chan *chan; if (channel >= NUM_CHANNELS) return -ENOSPC; chan = &priv->chan[channel]; chan->period_ns = period_ns; chan->duty_ns = duty_ns; return 0; } static int sandbox_pwm_set_enable(struct udevice *dev, uint channel, bool enable) { struct sandbox_pwm_priv *priv = dev_get_priv(dev); struct sandbox_pwm_chan *chan; if (channel >= NUM_CHANNELS) return -ENOSPC; chan = &priv->chan[channel]; chan->enable = enable; return 0; } |
5540e25ae dm: sandbox: pwm:... |
59 60 61 62 63 64 65 66 67 68 69 70 71 |
static int sandbox_pwm_set_invert(struct udevice *dev, uint channel, bool polarity) { struct sandbox_pwm_priv *priv = dev_get_priv(dev); struct sandbox_pwm_chan *chan; if (channel >= NUM_CHANNELS) return -ENOSPC; chan = &priv->chan[channel]; chan->polarity = polarity; return 0; } |
43b41566f dm: sandbox: pwm:... |
72 73 74 |
static const struct pwm_ops sandbox_pwm_ops = { .set_config = sandbox_pwm_set_config, .set_enable = sandbox_pwm_set_enable, |
5540e25ae dm: sandbox: pwm:... |
75 |
.set_invert = sandbox_pwm_set_invert, |
43b41566f dm: sandbox: pwm:... |
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
}; static const struct udevice_id sandbox_pwm_ids[] = { { .compatible = "sandbox,pwm" }, { } }; U_BOOT_DRIVER(warm_pwm_sandbox) = { .name = "pwm_sandbox", .id = UCLASS_PWM, .of_match = sandbox_pwm_ids, .ops = &sandbox_pwm_ops, .priv_auto_alloc_size = sizeof(struct sandbox_pwm_priv), }; |