code: func (c *Adaptor) PWMPin(pin string) (sysfsPin sysfs.PWMPinner, err error) {
  	c.mutex.Lock()
  	defer c.mutex.Unlock()
  
  	i, err := c.translatePwmPin(pin)
  	if err != nil {
  		return nil, err
  	}
  	if i == -1 {
  		return nil, errors.New("Not a PWM pin")
  	}
  
  	if c.pwmPins[i] == nil {
  		newPin := sysfs.NewPWMPin(i)
  		if err = newPin.Export(); err != nil {
  			return
  		}
  		// Make sure pwm is disabled when setting polarity
  		if err = newPin.Enable(false); err != nil {
  			return
  		}
  		if err = newPin.InvertPolarity(false); err != nil {
  			return
  		}
  		if err = newPin.Enable(true); err != nil {
  			return
  		}
  		if err = newPin.SetPeriod(10000000); err != nil {
  			return
  		}
  		c.pwmPins[i] = newPin
  	}
  
  	sysfsPin = c.pwmPins[i]
  	return
  }
docs: // PWMPin returns matched pwmPin for specified pin number